lsp-python如何设置checker?

最近在spacemacs下试用了一下lsp-python,速度不错UI也很漂亮。

但是有个不解的问题是,用anaconda的时候可以用flake8作为static checker,但是lsp mode是默认用lsp-ui作为checker的,而且默认只有pycodestyle。

好像也没有什么文档说明应该如何给lsp打开python-flake8,而我在pyls上看到说是支持flake8的。

我想问问大家是怎么设置pyls的

文档#Configuration所说,只要配置 setup.cfg / tox.ini / flake8.cfg / .flake8 就可以了,但是我测了不起作用(pyls.config 根本没有去项目目录下检测加载 flake8),难道文档说的不是这个意思?

通过 lsp 协议倒是可以:

(lsp--set-configuration `(:pyls (:configurationSource ("flake8"))))

立刻就收到反馈:

$ tail -F ~/pyls.log
2018-08-16 14:05:54,315 UTC - INFO - pyls.config.config - Updated settings to 
{'configurationSource': ['flake8']}
2018-08-16 14:05:54,323 UTC - INFO - pyls.config.config - Disabled plugins: [<module 
'pyls.plugins.pydocstyle_lint' from '~/.pyenv/versions/3.6.5/lib/python3.6/site-packages/pyls/plugins/pydocstyle_lint.py'>, <module 'pyls.plugins.rope_completion' from '~/.pyenv/versions/3.6.5/lib/python3.6/site-packages/pyls/plugins/rope_completion.py'>]
1 个赞

应该还是要设configurationSource才可以用flake8,但我的理解是跑了

(lsp--set-configuration `(:pyls (:configurationSource ("flake8"))))

之后,lsp-ui应该会收到flake8的输出?但是还是要手动flycheck-select-checker才能看到flake8的linting. 但如果checker是lsp-ui的话,error list上只有pycodestyle的输出

我不太明白这是pyls的问题还是lsp-ui的问题

请教一下pyls的Log默认是在什么地方?emacs开起来的pyls的log要怎么才能看到?

默认没开启,定义一个新的带参数的 client:

(lsp-define-stdio-client lsp-python-verbose "python"
                         (lsp-make-traverser #'(lambda (dir)
                                                 (directory-files
                                                  dir
                                                  nil
                                                  "setup.py\\|Pipfile\\|setup.cfg\\|tox.ini")))
                         '("pyls" "-v" "--log-file" "<path-to>/pyls.log"))

(add-hook 'python-mode-hook #'lsp-python-verbose-enable)

看到你最新的PR了,呵呵

谢谢!

有Log看了之后才发现只是去加载flake8的设置给pycodestyle用而已,没仔细看还以为pyls直持flake8