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

时间:2013-02-08 09:07:05

标签: emacs concurrency autocomplete elisp

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

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

就像,键盘输入是一个主要过程,永远不会被延迟,并且自动完成功能可以作为机器资源的残留物。

1 个答案:

答案 0 :(得分:3)

emacs-jedi完全符合Python自动完成的要求。您可以使用init property向后台进程发送请求,然后将结果存储在某处。在candidate属性中,您可以处理存储的结果以将其传递给自动完成。这是ac源定义。请查看来源以获取详细信息。

(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更容易阅读。