环境
- Emacs 26.3
- Spacemacs [email protected]
- company-tabnine 20190829.1801
- Mac OS X 10.14.5
简介
TabNine是一款基于GPT-2深度学习算法的代码补全工具,它支持23种编程语言,6种编辑器(Emacs, Vim, Visual Studio Code, Atom, IntelliJ IDEA, Sublime Text等),TabNine除了能在pop框中提示补全信息之外,还能给出各个候选词条的概率,效果十分惊艳。
在Spacemacs上,插件company-tabnine提供了一种TabNine的后端实现。
为了支持TabNine,我的思路是使用调用链:auto-completion
→ company
→ company-tabnine
,其中auto-completion是Spacemacs提供的自动补全插件,支持多种后端(company和auto-complete)。
实现
1,创建layer
在Spacemacs上,使用SPC SPC
或M-x
,调出命令功能,进行以下三步创建一个名为tabnine
的layer。
- 输入
configuration-layer/create-layer
- 询问
Configuration layer path
,使用默认的~/.emacs.d/private/
即可,按RETURN - 询问
Configuration layer name
,输入tabnine
,按RETURN - 询问
Create readme? (y or n)
,输入n
2,配置layer
打开~/.eamcs.d/private/tabnine/package.el
文件,写入如下配置:
;;; Code:
;;; 声明tabnine这个layer,并安装compnay-tabnine这个库
(defconst tabnine-packages
'(company-tabnine)
)
;;; 初始化company-tabnine这个库
(defun tabnine/init-company-tabnine()
(use-package company-tabnine
:ensure t
:defer t
:init
:config)
)
;;; 配置company-tabnine作为company的后端
(defun tabnine/post-init-company-tabnine()
(with-eval-after-load 'company
(add-to-list 'company-backends #'company-tabnine)
)
)
;;; packages.el ends here
3,配置.spacemacs
在~/.spacemacs
的dotspacemacs-configuration-layers
添加新定义的layer,即tabnine
。
;; List of configuration layers to load.
dotspacemacs-configuration-layers
'(
auto-completion
better-defaults
version-control
emacs-lisp
git
ivy
tabnine
)
4,验证TabNine
重启Emacs
,新建一个hello.c
文件,输入一段代码,即可享受TabNine
提供的代码补全功能。
Note: 如果自动补全没有触发,可以手动开启,SPC SPC
或者M-x
,输入company-mode
,提示Company mode enabled in current buffer
。
欢迎交流:nituchao.com