自动补全是如何工作的?

自动补全的工作流:

 

Frontend -> Backend -> Python Module -> Static Analysis

 

在Frontend中,你与「提供自动补全的模式」(比如CompanyMode/AutoComplete等等)交互,它们调用一些「后端的Emcas模块」(比如company-jedi/Jedi.el等等),这些后端模块调用一些「Python 模块」(比如jedi/rope等等),这些「Python模块」负责代码静态分析,导入相应的包。

Frontend

有两种,「CompanyMode」与「AutoComplete」。

我目前使用的是「CompanyMode」。因为从GitHub上看,上次插件更新时间是六天前(03/24/2019),而另一个是2017年的,难不成是太稳定了???

Backend

只有两个选择:「company-jedi」和「Ropemacs」;选「Ropemacs」吧,这是根据插件在GitHub上的更新时间来看的。收到的另外一个好处是「Ropemacs」可以同时作为「CompanyMode」和「AutoComplete」模式的后端。

我的选择

「CompanyMode」 -> 「Ropemacs」 -> 「rope」,这模块那模块的,Ropemacs太难弄了。

「CompanyMode」 -> 「company-jedi」 -> 「jedi」:

#!/bin/sh

# 1. 安装Python的Jedi模块
# https://github.com/davidhalter/jedi
pip install jedi

# 2. 在Emacs中安装company-jedi模块
# https://melpa.org/#/company-jedi

# 3. 使用CompanyMode
# http://company-mode.github.io/

参考文献