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)。
在Spacemacs上,使用SPC SPC
或M-x
,调出命令功能,进行以下三步创建一个名为sp-tabnine
的layer。
configuration-layer/create-layer
Configuration layer path
,使用默认的~/.emacs.d/private/
即可,按RETURNConfiguration layer name
,输入sp-tabnine
,按RETURNCreate readme? (y or n)
,输入n
打开~/.eamcs.d/private/sp-tabnine/package.el
文件,写入如下配置:
;;; Code:
;;; 声明tabnine这个layer,并安装compnay-tabnine这个库
(defconst sp-tabnine-packages
'(company-tabnine)
)
;;; 初始化company-tabnine这个库
(defun sp-tabnine/init-company-tabnine()
(use-package company-tabnine
:ensure t
:defer t
:init
:config)
)
;;; 配置company-tabnine作为company的后端
(defun sp-tabnine/post-init-company-tabnine()
(with-eval-after-load 'company
(add-to-list 'company-backends #'company-tabnine)
)
)
;;; packages.el ends here
在~/.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
sp-tabnine
)
重启Emacs
,新建一个hello.c
文件,输入一段代码,即可享受TabNine
提供的代码补全功能。
Note: 如果自动补全没有触发,可以手动开启,SPC SPC
或者M-x
,输入company-mode
,提示Company mode enabled in current buffer
。