2010-05-04 109 views
5

我正在爲C#開發智能感知或代碼完成功能。emacs:x-popup-menu最大大小限制?

到目前爲止,這麼好。現在我有基本的完成工作。有兩種方法可以請求完成。第一次循環通過所有可能的匹配。第二個提供了比賽的彈出式菜單。它適用於類型:

alt text http://i44.tinypic.com/afbl2o.jpg

,也爲本地和實例變量:

alt text http://i40.tinypic.com/2pqul2u.jpg

我面臨兩個問題的x彈出菜單:

  1. 當選擇的數量很大時,彈出菜單可以擴展以消耗所有可用的屏幕空間。從字面上看,它可以消耗整個屏幕,並遮住其他一切,包括整個emacs窗口和其他每個窗口。 愚蠢的是,它是可滾動的。首先擴展消耗所有可用空間,然後它也變成可滾動的。似乎它有意義的擴大到某一點,然後變得可滾動,而不是擴展到佔用所有可用空間。 有沒有辦法限制x-popup-menu的最大尺寸?
  2. 要指定彈出式菜單的位置,我傳入一個位置,並且x-popup-menu將它用作菜單頂行的* middle *,而不是左側。爲什麼中間?誰知道。 這意味着什麼,如果我爲菜單的位置指定(40.60),並且菜單恰好爲100像素寬,則菜單將超出emacs窗口的左邊界。你可以在上面的第二張圖片中看到這個。 如果我知道在指定位置之前彈出多少寬度,我可以補償。但我不知道。 是否有解決方法?有沒有辦法讓x-popup-menu成爲左邊而不是中間的位置?

附錄:文檔用於x-彈出菜單

的x彈出菜單是在`C源代碼」內置功能。 (x-popup-menu位置菜單)

彈出卡組菜單並返回用戶選擇。 PO SITION是一個頭寸規格。這是鼠標按鈕 事件或列表((XOFFSET YOFFSET)窗口),其中XOFFSET和YOFFSET是從WINDOW框架的左上角 (WINDOW可能是框架對象而不是窗口)的像素位置。 這控制 菜單的第一個窗格中第一行中心的 位置,而不是整個菜單的左上角。如果POSITION爲t,則其 表示使用當前鼠標位置。

+0

參見:http://meta.stackexchange.com/questions/79406/bounty-awarded-incorrectly – Will 2011-02-15 16:28:16

回答

3

您可以根據companyautocomplete其中的建議顯示爲您處理您自動完成後臺。

+1

看起來像在自動完成彈出的能力將是有用的,無論是我使用自動完成或不生成選項。 – Cheeso 2011-02-15 12:27:08

4

有些人喜歡Emacs,因爲它不提供提供彈出窗口(見例如this blog entry)。呈現可能的完成列表的更多「emacsy」方式是將它們顯示在拆分緩衝區中。這樣你就可以自動避免上述所有問題(屏幕滾屏&),並可能吸引更多的頑固Emacs用戶。

但是,這純粹是猜測:-)

+0

這是一個很好的觀點,我沒有想到這一點。 – Cheeso 2011-02-10 15:51:10