我对 emacs 自动完成模式感到非常兴奋。但是我的代码库很大,有时,当我键入时,它会尝试提示完成,它会搜索所有可能的单词,然后挂起。这很烦人。
有没有办法在后台并行运行搜索,所以 emacs 仍然会响应用户操作。并且只有当查询完成时该点仍然存在,才建议自动完成?
就像,键盘输入是一个主要过程,永远不会被延迟,并且自动完成作为机器资源的剩余部分。
我对 emacs 自动完成模式感到非常兴奋。但是我的代码库很大,有时,当我键入时,它会尝试提示完成,它会搜索所有可能的单词,然后挂起。这很烦人。
有没有办法在后台并行运行搜索,所以 emacs 仍然会响应用户操作。并且只有当查询完成时该点仍然存在,才建议自动完成?
就像,键盘输入是一个主要过程,永远不会被延迟,并且自动完成作为机器资源的剩余部分。
emacs-jedi正是为 Python 自动完成做的。init
您可以使用该属性向后台进程发送请求,然后将结果存储在某处。在candidate
属性中,您可以处理存储的结果以将其传递给自动完成。这是交流源定义。请查看源代码以获取详细信息。
(ac-define-source jedi-direct
'((candidates . jedi:ac-direct-matches)
(prefix . jedi:ac-direct-prefix)
(init . jedi:complete-request)
(requires . -1)))
emacs-ipython-notebook也使用了类似的技术,但我猜 emacs-jedi 更容易阅读。