[英]How do I display a prompt when the cursor enters an overlay in emacs?
我正在寫一個小型模式,可以免除寫作建議。 我正在使用疊加來突出錯誤。 當點進入疊加層時,我想顯示更多細節(現在有message
,但可能在單獨的緩沖區中。)
help-echo
幾乎就是我想要的,但是我在終端中使用Gnu Emacs,而help-echo
用於鼠標指針,而不是點。
point-entered
也幾乎是我想要的,但point-entered
對疊加沒有任何影響,只有文本屬性。
疊加首先看起來很吸引人,因為當我重新分析緩沖區時很容易將它們刪除(我正在re-builder
這里的內容。)我應該繼續使用疊加但是使用點運動掛鈎找到疊加層,提取提示,並顯示它們? 我應該使用文本屬性而不是疊加層嗎?
您可能想嘗試使用cursor-sensor-mode
(這是Emacs-25中的新功能),它允許您對cursor-sensor-functions
文本屬性(包括通過疊加)進行操作。
它的目的是取代point-entered
性和反應的光標,而不是中移動的移動point
(兩個密切相關的,但不同的:一個給定的命令可以在內部移動點很多次,但光標只會移動一次,在顯示更新結束時)。
有些想法,請查看自動完成模式 。
它彈出菜單,人們可以滾動瀏覽。 這可能不是你想要的 - 聽起來你不想要菜單 - 但是查看代碼可能會很有趣。
另請參閱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.
一般來說,對鼠標移動做出反應並不是一個好的設計,因為鼠標很可能會因為很多原因而通過你的區域。
我建議你在例如右側菜單按鈕上實現它。
當涉及到覆蓋與文本屬性時 - 一個區別是在執行buffer-substring
時保留了文本屬性,這可能不是你想要的。 另一個是文本屬性在繼承的緩沖區之間共享(即使這是一個很少使用的功能)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.