lsp-mode(emacs下的代码编辑环境)
lsp支持的语言相关wiki
lsp支持的语言类型 可以看到支持非常多的语言,意味着针对语言的配置,大多数只要链接下lsp-mode就好了
lsp支持C,C++
使用clangd
具体可以参考我的C的clangd安装部分 一旦安装以后,可以新打开一个文件,会提示导入project,然后就能使用补全和定义了,这里不再展示了
lsp支持bash
lsp支持golang
lsp支持python
Warning (emacs): The palantir python-language-server (pyls) is unmaintained; a maintained fork is the python-lsp-server (pylsp) project; you can install it with pip via: pip install python-lsp-server
所以不用pyls,用pylsp
使用pylsp
https://github.com/python-lsp/python-lsp-server
|
|
|
|
一般加上hook就好了,然后重启下emacs,这个时候基本东西就差不多了,可以检查下是否有对应的pylsp buffer, 看下log是否ok
刚打开可能会发现都是一大堆错误,这个是正常的,里面的很多规范我建议都满足比较好,一般是顶层加注释,
类加注释,函数加注释,空几行等问题,总之是不错的默认规范。
我尝试了下发现系统自带的,python自己的东西一般都能补全,但是pip装的似乎不能补全,M-x company-dialog 发现
|
|
而company-capf本质是一个桥和lsp差不多的东西,所以这里意味着我少装了一个pylsp的插件或者没有启用
我们查阅了pylsp的github,搜python-lsp-server,发现可以用rope这个,而官方的rope github说明建议是 pip下载pylsp-rope,而这个默认是不装的,当我们装完以后,M-x lsp-restart-workspace再看的时候,发现 可以补全了,神奇吧!多看文档。
|
|
具体我就不截图了
使用pipenv
pipenv的使用我不再介绍了,这里有个问题就是emacs在编辑的时候并不会使用pipenv的环境的东西, 原因是pipenv-mode这个包读取的是
direnv
direnv本地shell添加 https://direnv.net/docs/hook.html
direnv的主要作用是可以根据不同的项目或者目录设置不同的环境变量,具体可以官网简单看下,
也可以下载direnv的emacs包,整体上分为两部分
编写.envrc export VIRTUAL_ENV="home/liuliancao.local/share/virtualenvs/cmdb-RBwcbsRt/"
allow .envrc(如果不allow会提示lock)
direnv的debug emacs里面也有一个buffer可以看下, 重启emacs后发现
从env[none]到env[on]了
|
|