当光标进入emacs中的叠加层时,如何显示提示?

时间:2011-03-09 14:43:03

标签: emacs elisp

我正在写一个小型模式,可以免除写作建议。我正在使用叠加来突出错误。当点进入叠加层时,我想显示更多细节(目前使用message,但可能在单独的缓冲区中。)

help-echo 几乎我想要的东西,但我在终端中使用Gnu Emacs,help-echo用于鼠标指针,而不是点。

point-entered几乎我想要的,但point-entered对叠加层没有任何影响,只有文字属性。

叠加首先看起来很吸引人,因为当我重新解析缓冲区时很容易将它们删除(我正在从这里re-builder所做的事情中解决。)我应该继续使用叠加层但是使用点动作挂钩来查找叠加层,提取提示,并显示它们?我应该使用文本属性而不是叠加吗?

3 个答案:

答案 0 :(得分:1)

您可以尝试使用cursor-sensor-mode(这是Emacs-25中的新功能),它可以让您对cursor-sensor-functions文字属性(包括通过叠加层)进行操作。

它旨在替换point-entered属性并对光标的移动做出反应,而不是对point的移动作出反应(两者密切相关,但不同:给定的命令可以移动点次,但光标只会在显示更新时移动一次。

答案 1 :(得分:0)

对于某些想法,请查看auto-complete mode

它弹出菜单,人们可以滚动浏览。这可能不是你想要的 - 听起来你不想要菜单 - 但是查看代码可能会很有趣。

enter image description here

另请参阅tooltip-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.

答案 2 :(得分:0)

一般来说,对鼠标移动做出反应并不是一个好的设计,因为鼠标很可能会因为很多原因而经过你的区域。

我建议你在右边的菜单按钮上实现它。

当涉及到叠加与文本属性时 - 一个区别是在执行buffer-substring时保留文本属性,这可能不是您想要的。另一个是文本属性在继承的缓冲区之间共享(即使这是一个很少使用的功能)。