Мой конкретный случай является то, что я хочу сделать что-то вроде этого:Могу ли я создать плавающий блок на Emacs?
Спасибо!
Мой конкретный случай является то, что я хочу сделать что-то вроде этого:Могу ли я создать плавающий блок на Emacs?
Спасибо!
Посмотрите на popup.el и pos-tip.el. То, что они реализуют, является подсказкой для инструмента, а не плавающей областью, но этого было бы достаточно, если вы хотите просто показать некоторую информацию вокруг курсора. Даже если подсказка не достаточно, просмотр реализации и игры с ней может дать вам некоторое представление о том, что вы можете сделать в Emacs. popup.el использует overlay как предложено @ d11wtq. pos-tip.el использует функции на основе X, такие как x-show-tip
.
Также yascroll.el - хороший пример того, как использовать наложение, чтобы поместить вещи в нужную часть окна (что сложно!).
Вы можете использовать оверлеи. Создание накладки с make-overlay
:
(make-overlay (point) (point))
Затем поместите в него текст с overlay-put
.
(overlay-put the-ol 'before-string "Tooltip message")
Для того, чтобы сразу же выровнять текст таким образом, что вам нужно propertize
пробела перед строкой, чтобы установить display
свойства с :align-to
, учетом пространства подсказки сам будет принимать.
(concat (propertize " "
'display `(space :align-to (- right ,(length tooltip))))
tooltip)
Должен ли он работать в '* scratch *' с 'C-j'? –
Ну, мой точный код не будет, но идея должна, да. – d11wtq
+1 для popup.el; это [довольно] безболезненный способ получить приятные советы или меню завершения; однако подсветка синтаксиса (лица) внутри наконечника потребует от вас некоторых вещей здесь и там и, возможно, столкнется с странными случаями конфликтующих лиц – assem