wd and cc

-- Good good study, day day up!

Emacs as Python IDE Again

上一篇里面说了使用 emacs 编辑 python 文件的方式,已经过去 2 年了,时代变了。更新一下。

随着 vscode 横空出世,带来了 LSP,这个东西是所有编辑器都可以受益的,有人开发了 lsp-mode,目前我感觉 lsp 比 jedi 好用多了。

elpy 目前还不支持 lsp。所以放弃了 elpy 了。

主要配置如下。使用了 lsp-python-mslsp-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 所以就这样了。

comments powered by Disqus