Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

【Neovim】LanguageClinet-neovim + lightline.vimで簡易エラー表示

$
0
0

Vim8ではALE + lightlineでエラー表示を行っていましたが、neovimへの移行にあたってエラーチェックをLanguageClient-neovimで行うことにしました。
(rustのエラーチェックで使えるものがrlsしか見つからなかったため、敢えてaleじゃなくてもいいと感じたのが発端。)
この際、エラーの取得方法が変わったため、備忘録として残しておきます。

Vim8 : ale.vim + lightline.vim
Neovim : languageClient-neovim + lightline.vim

今回使用したプラグイン

Vim8のエラー表示設定(ALE)

プラグイン管理はShougo氏のdein.vimを使用しています。

dein.toml
[[plugins]]
repo ='w0rp/ale'
on_cmd =['ALEComplete']
hook_add ='''
    letg:ale_linters={        \'python':['pyls'],        \'rust':['rls'],        \}letg:ale_echo_msg_error_str='E'letg:ale_echo_msg_warning_str='W'letg:ale_echo_msg_format='[%linter%] %code: %%s [%severity%]'letg:ale_open_list=0letg:ale_lint_on_save=0letg:ale_lint_on_text_changed=1'''

[[plugins]]
repo ='itchyny/lightline.vim'
hook_add ='''
    set noshowmode
    set laststatus=2letg:lightline={        \'colorscheme':'wombat',        \'active':{        \'left':[        \['mode','paste'],        \['gitbranch','readonly','filename','modified'],        \['ale'],        \]        \},        \'component_function':{        \'gitbranch':'fugitive#head',        \'ale':'ALEStatus',        \},        \'separator':{'left':"\u2b80",'right':"\u2b82"},        \'subseparator':{'left':"\u2b81",'right':"\u2b83"},        \}function! ALEStatus() abort
        letl:count = ale#statusline#Count(bufnr(''))letl:errors =l:count.error +l:count.style_error
        letl:warnings =l:count.warning +l:count.style_warning
        returnl:count.total ==0 ? 'ALE: OK':'ALE: E:'.l:errors .' '.'W:'.l:warnings
    endfunction'''

(スクリーンショット)
2019-08-01-002703_1278x502_scrot.png

Neovimのエラー表示設定(LanguageClient-neovim)

エラーチェックを行った結果は、LanguageClient-neovimの関数ではなく、getqflist()関数から辞書型で取得できました。
今回は最低限の設定なので、パフォーマンス等の問題はあると思います。良い書き方があれば教えて頂けると幸いです。

dein.toml
[[plugins]]
repo ='autozimu/LanguageClient-neovim'
rev ='next'
build ='bash install.sh'
hook_add ='''
    set completeopt-=preview
    letg:LanguageClient_autoStart=1letg:lsp_package_path= expand("~/.lsp/")letg:LanguageClient_serverCommands={    \'python':['pyls'],    \'c':['clangd'],    \'cpp':['clangd'],    \'rust':['rls'],    \'java':[        \'java',        \'-Declipse.application=org.eclipse.jdt.ls.core.id1',        \'-Dosgi.bundles.defaultStartLevel=4',        \'-Declipse.product=org.eclipse.jdt.ls.core.product',        \'-noverify',        \'-Xmx1G',        \'-jar',        \ expand(g:lsp_package_path).'/eclipse.jdt.ls/plugins/org.eclipse.equinox.launcher_1.5.500.v20190715-1310.jar',        \'-configuration',        \ expand(g:lsp_package_path).'/eclipse.jdt.ls/config_linux',        \'-data',        \ expand(g:lsp_package_path).'/eclipse.jdt.ls',        \],    \}'''

[[plugins]]
repo ='itchyny/lightline.vim'
hook_add ='''
    set noshowmode
    set laststatus=2letg:lightline={        \'colorscheme':'wombat',        \'active':{        \'left':[        \['mode','paste'],        \['gitbranch','readonly','filename','modified'],        \['lsp'],        \]        \},        \'component_function':{        \'gitbranch':'fugitive#head',        \'lsp':'LSPStatus',        \},        \'separator':{'left':"\u2b80",'right':"\u2b82"},        \'subseparator':{'left':"\u2b81",'right':"\u2b83"},        \}function! LSPStatus() abort
        letl:errors =0letl:warnings =0for item in getqflist()if item["type"]=="E"letl:errors +=1elseletl:warnings +=1endifendforreturnl:errors +l:warnings ==0 ? "LSP: OK":"LSP: E:".l:errors ." "."W:".l:warnings
    endfunction'''

(スクリーンショット)
2019-08-01-003215_1278x502_scrot.png

おわりに

以上の設定で、外観を変化させずにエラー表示を行うことができました。
しかし、この方法ではエラー・警告が多くなるほど極端にパフォーマンスが落ちます。対策方法を見つけ次第、変更していく予定です。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>