如何在后台执行自动完成查询?

Nec*_*cto 5 emacs concurrency elisp autocomplete

我对emacs自动完成模式非常兴奋.但是我的代码库很大,有时候,当我输入时,它会尝试ssuggest完成,它搜索所有可能的单词,然后挂起.这很烦人.

有没有办法在后台并行进程中运行搜索,因此emacs仍然会响应用户操作.并且只有当查询结束时该点位于该位置时,建议自动完成?

类似地,键盘输入是主要过程,并且永远不会被延迟,并且自动完成作为机器资源上的残差.

tkf*_*tkf 3

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)))
Run Code Online (Sandbox Code Playgroud)

emacs-ipython-notebook也使用类似的技术,但我认为 emacs-jedi 更容易阅读。