「GNU Emacs」- 自动补全(配置笔记)

使用 AutoComplete 扩展

# 03/04/2021 我们创建该章节,开始使用 Auto Complete 自动补全,该章节将记录 Auto Complete 的使用笔记。

安装 Auto Completion 模块

auto-complete/auto-complete: Emacs auto-complete package

全局开启自动补全功能

init file – How do I make auto-complete enabled by default – Emacs Stack Exchange

1)M-x customize-variable [RET] global-auto-complete-mode [RET]
2)Global Auto Complete Mode: on

通过 Emacs 快捷键来选择补全内容

在 Auto Complete 中,默认使用上下键来选择,而我们希望使用 C-n C-p 来选择。需要进行如下设置:
1)M-x customize-group [RET] auto-complete [RET]
2)设置 Ac Use Menu Map: on 属性;

Python 自动补全

# 07/10/2019 这是首次接触 Emacs 的自动补全。

自动补全是如何工作的?

自动补全的工作流:Frontend => Backend => Python Module => Static Analysis

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

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

Backend,只有两个选择:company-jediRopemacs
目前(07/10/2019),我们使用 Ropemacs(这是根据插件在 GitHub 上的更新时间来看的。收到的另外一个好处是 Ropemacs 可以同时作为 CompanyMode 和 AutoComplete 模式的后端。

我们的选择

CompanyMode => Ropemacs => rope ,这模块那模块的,Ropemacs 太难弄了。

CompanyMode => company-jedi => jedi:

# 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/

参考文献

EmacsWiki/Completion
auto-complete/auto-complete: Emacs auto-complete package
key bindings – Using ctrl-n and ctrl-p inside the box for suggessted words to auto-complete – Emacs Stack Exchange