Emacs Python 自动补全之 eglot
eglot
个人水平有限,自己的测试难免有不足甚至错误的地方。欢迎各位emacser 能前来留言交流。
首先eglot 是一个lsp-mode的集成环境。作者说这不仅仅是一个lsp工具。但是我从其说明文档中没有得到更多的东西。eglot 相当于只是一个框架。需要什么功能,还需要另外单独安装,其对应关系如下:
- Javascript's javascript-typescript-stdio
- Rust's rls
- Python's pyls
- Ruby's solargraph
- Java's Eclipse JDT Language Server
- Bash's bash-language-server
- PHP's php-language-server
- C/C++'s ccls (cquery and clangd also work)
- Haskell's IDE engine
- Kotlin's kotlin-language-server
- Golang's go-langserver
- Ocaml's ocaml-language-server
- R's languageserver
- Dart's dart_language_server
比如,这个测试中需要支持python 的lsp . 就需要去安装pyls. 各个lsp 的入口,可以在eglot 的README中查找。下面是安装eglot (pyls).
eglot 依赖于pyls. 因此安装的时候需要将两者同时安装。
M-x package-install RET eglot RET pip3 install 'python-language-server[all]'
安装完成后进行配置:
(add-hook 'python-mode-hook 'eglot-ensure)
在打开 ".py" 文件时自动识别为python-mode,并启动eglot.
在使用默认配置的情况下,支持补全,代码跳转等功能。 可参照官方文档 https://joaotavora.github.io/eglot/#Using-Eglot
在python 里有fly-make 自动检查语法规范。其他的可以自行检测。
代码补全,需要使用快捷键: C-M-i
代码跳转使用 M-.
更多自己详细探索吧。
===================
天行健,君子以自强不息
地势坤,君子以厚德载物
===================