Вопрос: как временно отобразить текст в окне в тех местах экрана, где нет текста для его наложения / наложения?
Я знаком с основной идеей текстовых свойств и наложений (см. Также эту ветку ), несколько раз использовал их, но ни в коем случае не разбираюсь в них. Мое ограниченное понимание состоит в том, что должен быть текст, чтобы настроить или наложить его, но мне интересно, как использовать разделы окна, в которых нет текста.
Вот скриншот для примера:
Как можно поместить текст (временно) в одно из красных полей на скриншоте, то есть в пустое пространство справа от текста или ниже последней строки в буфере?
insert
отправить текст в буфер и настроить его ?Ответы:
Я подобрал рабочий пример функции, которая берет строку и временно отображает ее с таймаутом после текста буфера:
Следующее заклинание приведет к вашему примеру с красной рамкой:
Причина, по которой это работает, заключается в том, что наложения используют маркеры в качестве позиций для отображения между ними. Использование крайней позиции в качестве начала и конца наложения позволяет отображать текст после него с помощью
after-string
свойства. Так как оверлеи могут содержать персонализированный текст, я настроил его так, чтобы он отображался с отступом и с пробелами вокруг него.Другой пример может использовать ту же идею для отображения текста после конца строки:
Следующий вызов приведет к вашему примеру с красной рамкой справа:
Вы можете немного сойти с ума и добавить грани, чтобы отличать эти наложения от текста буфера, отображать их дольше, чем в течение тайм-аута, корректировать их положение, обнаруживать отсутствие пустого пространства и использовать обычные наложения правильного текста и т. Д. Я рекомендую посмотреть на исходный код режима компании, потому что он очень удобочитаемый и демонстрирует более сложное (и в основном безглючное) использование наложений для создания гибкого всплывающего меню с предлагаемыми функциями.
источник
Вы можете временно отображать текст в буфере с помощью функции
momentary-string-display
. Требуется сообщение для отображения и позиция в буфере.Эта:
поместит строку "привет там" в позицию 200 в буфере. В этот момент он переместит весь остальной текст в сторону, чтобы освободить место для «Привет, мир», но все будет восстановлено на том же уровне, что и при нажатии любой клавиши.
Вам не нужен текст в буфере для создания наложений, хотя это требование для свойств текста. Вот наложение с нулевой шириной, которое приводит к отображению дополнительного текста:
Обратите внимание, что это наложение будет отталкивать текст буфера; он не будет охватывать текст в данной позиции.
По-видимому, невозможно разместить оверлей в любой позиции в буфере, которая больше
point-max
/buffer-size
, т.е. вы, вероятно, не сможете разместить текст в какой-то конкретной позиции ниже текста в буфере, если не будете обходить это ограничение. Конечно, вы можете поместить текст сразу после буфера текста соafter-string
свойством на оверлей, прикрепленный кpoint-max
позиции.источник