Emacs as Python IDE Again
上一篇里面说了使用 emacs 编辑 python 文件的方式,已经过去 2 年了,时代变了。更新一下。
随着 vscode 横空出世,带来了 LSP,这个东西是所有编辑器都可以受益的,有人开发了 lsp-mode,目前我感觉 lsp 比 jedi 好用多了。
elpy 目前还不支持 lsp。所以放弃了 elpy 了。
主要配置如下。使用了 lsp-python-ms
和 lsp-mode
, pipenv
。我原来用 pyenv + virtualvenv,pipenv 是把两个整合的东西。pipenv 还支持 lock,以后估计会流行吧。
1(use-package lsp-python-ms
2 :ensure t
3 :demand nil
4 :config
5
6 ;;(setq lsp-python-ms-extra-paths "")
7 (setq lsp-python-ms-executable
8 (string-trim (shell-command-to-string
9 "find ~/.vscode/extensions/ -name 'Microsoft.Python.LanguageServer' | sort | tail -1")))
10 ;; for dev build of language server
11 (setq lsp-python-ms-dir
12 (file-name-directory lsp-python-ms-executable)))
13
14
15(use-package lsp-mode
16 :ensure t
17 :commands lsp
18 :hook (python-mode . (lambda ()
19 (pipenv-activate)
20 (require 'lsp-python-ms)
21 (lsp)))
22 :config
23
24 (setq lsp-auto-configure nil)
25
26 (use-package pipenv
27 :ensure t
28 :init
29 (setq
30 pipenv-projectile-after-switch-function
31 #'pipenv-projectile-after-switch-extended))
32
33 (use-package company-lsp
34 :ensure t
35 :config
36 (add-to-list 'company-backends 'company-lsp)
37 )
38)
lsp server 实际上有好几个,不过我觉得微软的那个似乎比较好用。 lsp-python-ms
是使用了微软的 lsp server,你可以自己编译一个,也可以直接使用 vscode 里面的,这样省去了自己编译的麻烦。
lsp-mode 自带使用那个 lsp-ui 来显示一些信息我感觉很慢不好用,所以通过 lsp-auto-configure
把他禁用了,我弄了一下也没有办法让这货和 flycheck-flake8
一起好好工作,我还是喜欢 flake8 所以就这样了。