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.
但是自动补全功能并不好用, 不会自动提示可补全项。需要按TAB, 才会出现 。而且不支持使用M-n (n 属于0-9) 来选择补全项。