2011-03-09 49 views
6

我正在寫一個不需要寫入建議的小模式。我正在使用重疊來突出顯示錯誤。當點進入疊加,我要顯示更詳細的(現在與message,但也許在一個單獨的緩存。)當光標在emacs中進入疊加層時,如何顯示提示?

help-echo幾乎我想要的,但我使用GNU Emacs的終端,並help-echo是爲鼠標指針,而不是點。

point-entered幾乎我想要什麼,但point-entered不具有覆蓋,只有文本屬性有任何影響。

覆蓋層首先看起來很吸引人,因爲當我重新分析緩衝區時,我很容易將它們剔除(我從re-builder在這裏做了什麼)。我應該繼續使用覆蓋層,但使用點運動掛鉤來查找覆蓋層,提取提示並顯示它們?我應該使用文本屬性而不是疊加?

+2

我不是專家,但它看起來像疊加是爲了更改「只寫」,用於更改演示文稿而不是更改行爲。看起來你可以使用覆蓋圖來完成,如果你使用點覆蓋運動鉤子和像'overlays-at'這樣的函數,但是文本屬性可能更習慣於使用。 – dfan 2011-03-09 15:06:30

回答

0

對於一些想法,請查看auto-complete mode

它彈出菜單點,人們可以滾動。這可能不是你想要的 - 聽起來像你不想要菜單 - 但查看代碼可能很有趣。

enter image description here

還請參閱工具提示顯示方法,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. 
0

一般來說,這不是一個很好的設計,在鼠標移動的反應,如老鼠會被你的領域有很多原因最有可能通過。

我建議你實現這個,例如,右邊的菜單按鈕。

說到疊加與文本屬性 - 一個區別是文本屬性在執行buffer-substring時保留,這可能不是您想要的。另一個是文本屬性在繼承的緩衝區之間共享(儘管這是一個很少使用的功能)。

+1

他沒有試圖對鼠標移動做出反應;他想對此作出反應。 – dfan 2011-03-09 19:50:21

+0

我的錯誤。但是,對於點移動也可以進行相同的論證。 – Lindydancer 2011-03-09 20:00:56

+0

是的 - 我想對點移動做出反應,而不是鼠標移動。我並不特別擔心由於其他原因而穿越某個地區的問題 - 這種迴應的文本是非模態的和外圍的。但我很好奇你會認爲更好的UI。就像跑步ispell是*方式*對我來說太重了;我希望它能提供持續的微妙反饋。 – 2011-03-09 23:22:33

0

您可能會喜歡嘗試cursor-sensor-mode(這是Emacs-25中的新功能),它允許您對cursor-sensor-functions文本屬性(包括通過疊加層)進行操作。

它的目的是取代point-entered財產和反應光標的移動,而不是向point運動(兩者是密切相關的,但不同的:一個給定的命令可以在內部很多並進點,但光標只會在顯示更新結束時移動一次)。

相關問題