vim-lsp と pyls
Vim の Python 入力補完を jedi-vim から vim-lsp に乗り換えてみたが、動作が重い。
しかも Python ファイルを編集し始めてしばらくすると、編集しているファイルとは全然関係のない、OneDrive に置いてある.py ファイルの自動ダウンロードが頻発する。
プロセスをみると pyls.exe のサブプロセスで pylint がCPU全開でメモリをバカ喰いして走っていた。
こいつがいろんな場所の .py ファイルを触りまくるらしい。何してくれているの・・・。
どうやら pyls のプラグインの pylint が自動起動して意図しない動作をしているようだ。
こういうのがデフォルトになっているのは何だかなぁ。(自分の設定・環境のせいかな?)
プラグインはenabled
(enable じゃなくて enabled) を設定すれば無効化できるようなので、補完用の jedi だけ残して停止させることにした。
これでなんとか使えそうだ。
.vimrc
if executable('pyls')
call lsp#register_server({
\ 'name': 'pyls',
\ 'cmd': { server_info -> ['pyls'] },
\ 'whitelist': ['python'],
\ 'workspace_config': {'pyls': {'plugins': {
\ 'mccabe' : { 'enabled': v:false },
\ 'preload' : { 'enabled': v:false },
\ 'pycodestyle' : { 'enabled': v:false },
\ 'pydocstyle' : { 'enabled': v:false },
\ 'pyflakes' : { 'enabled': v:false },
\ 'pylint' : { 'enabled': v:false },
\ 'rope_completion' : { 'enabled': v:false },
\ 'yapf' : { 'enabled': v:false },
\
\ 'jedi' : {'extra_paths' : [] },
\ 'jedi_completion' : { 'enabled': v:true, 'include_params': v:true },
\ 'jedi_definition' : { 'enabled': v:true, 'follow_imports': v:true, 'follow_builtin_imports': v:true },
\ 'jedi_hover' : { 'enabled': v:true },
\ 'jedi_references' : { 'enabled': v:true },
\ 'jedi_signature_help' : { 'enabled': v:true },
\ 'jedi_symbols' : { 'enabled': v:true },
\ }}},
\ })
autocmd FileType python setlocal omnifunc=lsp#complete
endif
余談だけど、vim-lsp も補完は jedi なんだね。