Doom Emacs 的init文件里有个选项我打开了 (format +onsave)
,但是它是用black格式化Python代码。我想用yapf格式化成google-style,请问应该怎么设置?
另外lsp-format-buffer
也不能用,报错Capability not supported by the language server: "documentFormattingProvider"
,应该怎么解决?我的python lsp是pyright.
Doom Emacs 的init文件里有个选项我打开了 (format +onsave)
,但是它是用black格式化Python代码。我想用yapf格式化成google-style,请问应该怎么设置?
另外lsp-format-buffer
也不能用,报错Capability not supported by the language server: "documentFormattingProvider"
,应该怎么解决?我的python lsp是pyright.
你本地是否安装了yapf,还有就是需要激活yapf并禁用autopep8
(setq lsp-pyls-plugins-autopep8-enabled nil)
(setq lsp-pyls-plugins-yapf-enabled t)
主要是因为pyright这个lsp本身不包含格式化的功能,所以格式化的时候doom调用的不是lsp。如果用的是pylsp就没这些事情了。
当lsp不支持格式化时,doom会使用format-all-the-code这个包,但是doom用的是比较老的版本,还不支持yapf,你如果把format-all-the-code更新到最新版本,就可以调用yapf了。
请问把 modules/editor/format/packages.el
里面的SHA更新以后应该怎么升级?好像doom sync
并不起作用.
你在.doom.d/package.el里添加如下的代码 (unpin! pinned-package) 即可,你点进去package.el,里面就有介绍的。
yapf的命令行参数在config.el应该怎么写呢?写成这样
(setq format-all-formatters
'(("Python" (yapf "--style='{based_on_style: google, column_limit: 100}'"))))
就会报错:
yapf: “‘{based_on_style: google, column_limit: 100}’” is not a valid style or file path
建议使用.style.yapf给每一个project都做一个local的设置,不要在命令行参数里指定这些东西。