2010-05-04 119 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