如何确定emacs完成源的优先级?

时间:2013-07-26 21:54:28

标签: emacs autocomplete elisp

当在缓冲区内自动完成时,我发现附近的单词不在列表的顶部,但我想要它们。

我现在正在使用自动完成功能,但我愿意使用其他可以全面完成的功能(结合许多来源,例如缓冲区中的单词,项目,编程语言完成等)并自动显示候选项当我打字。

我已阅读有关自动完成和公司模式的文档。我唯一能找到的就是打开和关闭来源,但没有关于优先排序的事情,这就是我想做的事情。我可以想象几种方法来实现这一点,比如改变这些包,或编写代码来组合和优先考虑源代码,但似乎有人必须已经这样做了。

编辑:我已经将部分问题追溯到自动完成源,该源应该完成缓冲区中的单词(ac-source-words-in-same-mode-buffers),而不是优先处理附近的单词,但是原来的问题仍然存在。

2 个答案:

答案 0 :(得分:2)

Emacs的内置dabbrev-expand功能值得尝试。该功能在标准模式下自动绑定到M- /。

答案 1 :(得分:1)

通过先前完成的完成然后通过最短完成来自动完成优先级。它可以在自动完成源中进行更改,也可以编写组合源并对其进行优先级排序的函数。

嬉皮完成更接近于解决问题;它按照列表中的顺序对来源进行优先排序,并且在“可见单词”的形式附近有单词的完成源。它没有自动完成UI,但它可以挂钩到自动完成。