[笔记]自己笔记本上最快的python补全方案设置
个人笔记,如有转载,请注明出处。
——by realasking
2020-03-26 增加关于(jedi:setup)
的说明
2020-03-21 最初版本
最近一两年,因为使用python
比较多,而其它ide
总有让人不满意的地方,以及一些其它原因,就将主要使用的编辑器从原先使用的Linux
下的vim
和Windows
下的notepad++
统一替换为了Emacs
。经过较长时间的磨合和多次重构配置文件,Emacs
环境已经基本符合自己的习惯。然而,python
补全始终是个比较大的问题:在Linux
下使用elpy
加company
虽然有可以感知的延迟,但是还能忍受,在Windows 10
下延迟就很大了,特别是补全np.array
之类的内容的时候,能等待数秒,甚至十几秒。
这一两年来,翻遍了网页也没有找到解决办法,于是就开始尝试其它方案,最近两天终于折腾出一个反应明显更快的配置。我使用了Emacs-jedi
,auto-complete
,format-all
,以及Emacs
自带的python-mode
,在Linux
和Windows
下虽然仍然有延迟,但比起elpy
和lsp
来说,补全还是快了不少,经过简化的配置如下:
(defvar myPackages
'(format-all
jedi
))
(mapc #'(lambda (package)
(unless (package-installed-p package)
(package-install package)))
myPackages)
(setq python-shell-interpreter "ipython"
python-shell-interpreter-args "--simple-prompt -i")
(global-set-key [f6] 'run-python)
(defun python-mode-modify()
(hs-minor-mode t)
)
(add-hook 'python-mode-hook (lambda ()
(jedi:ac-setup)
(setq ac-use-quick-help nil)
(setq jedi:tooltip-method nil)
(setq jedi:complete-on-dot t)
(auto-complete-mode 1)))
(add-hook 'python-mode-hook 'python-mode-modify)
补充:有人问我为什么不写(jedi:setup)
,这个在jedi
的官网上是有说明的,如果只需要补全,用(jedi:ac-setup)
就够了,如果还需要签名文档提示、函数参数表之类的,就用(jedi:setup)
。用(jedi:ac-setup)
的时候的确不需要设置(setq jedi:tooltip-method nil)
这一句,这一句的意思是在minibuffer
中显示签名文档提示,简化配置贴上来的时候我忘了删了。