Как вывести подсказку, когда курсор входит в оверлей в emacs? - PullRequest
7 голосов
/ 09 марта 2011

Я пишу второстепенный режим, который позволяет писать советы.Я использую оверлеи, чтобы выделить ошибки.Когда точка входит в оверлей, я хочу отобразить больше деталей (с message на данный момент, но, возможно, в отдельном буфере.)

help-echo - это почти , что я хочу,но я использую Gnu Emacs в терминале, и help-echo для указателя мыши, а не точки.

point-entered также почти , что я хочу, но point-entered неВ оверлеях никакого эффекта нет, только свойства текста.

Оверлеи выгляделы привлекательными в первую очередь, потому что их легко стереть, когда я повторно анализирую буфер (я пишу из того, что здесь делает re-builder.) Должен ли я продолжать использовать наложения, но использовать точечные зацепки, чтобы найти наложения, извлечь подсказки и отобразить их?Нужно ли использовать текстовые свойства вместо оверлеев?

Ответы [ 3 ]

1 голос
/ 11 февраля 2016

Возможно, вы захотите попробовать cursor-sensor-mode (что является новым в Emacs-25), который позволяет размещать действия над текстовыми свойствами cursor-sensor-functions (в том числе с помощью наложений).

Он предназначен для заменыСвойство point-entered и реагирует на движения курсора, а не на движения point (оба тесно связаны, но различаются: данная команда может перемещать точку много раз внутри, но курсор будет толькоперемещаться один раз в конце обновления дисплея).

0 голосов
/ 09 марта 2011

В целом, это не очень хороший способ реагировать на движения мыши, так как мышь, скорее всего, будет проходить мимо ваших областей по многим причинам.

Я бы посоветовал вам реализовать это, например, на правой кнопке меню.

Когда речь идет о наложениях и свойствах текста - одно отличие состоит в том, что свойства текста сохраняются при выполнении buffer-substring, что, вероятно, не то, что вам нужно. Другая причина заключается в том, что свойства текста совместно используются унаследованными буферами (хотя это редко используемая функция).

0 голосов
/ 09 марта 2011

Для некоторых идей, проверьте режим автозаполнения .

Это всплывающее меню в точке, которую люди могут прокручивать.Это может быть не совсем то, что вы хотите - звучит так, как будто вы не хотите меню - но изучение кода может быть интересным.

enter image description here

Также см. Метод showtip-show, часть tooltip.el.

tooltip-show is a compiled Lisp function in `tooltip.el'.

(tooltip-show TEXT &optional USE-ECHO-AREA)

Show a tooltip window displaying TEXT.

Text larger than `x-max-tooltip-size' is clipped.

If the alist in `tooltip-frame-parameters' includes `left' and `top'
parameters, they determine the x and y position where the tooltip
is displayed.  Otherwise, the tooltip pops at offsets specified by
`tooltip-x-offset' and `tooltip-y-offset' from the current mouse
position.

Optional second arg USE-ECHO-AREA non-nil means to show tooltip
in echo area.
...