色がつかなくて困っていた
Lintを非同期実行できるプラグインのale。NeovimのVirtual Textにも対応していて、Lintエラーの文言を下記のように表示できる。
上記画像では黄色でハイライトされているが、以前までハイライトがされなくて困っていた。let g:ale_set_highlights = 1
にしてもつかなくてどうしたものかと思っていたが、先日解決策を見つけたので残しておく。
autocmdでALEWarning,ALEErrorを再設定すればいける
これで色がつくようになる。
autocmd VimEnter,SourcePost * :highlight! ALEError guifg=#C30500 guibg=#151515 autocmd VimEnter,SourcePost * :highlight! ALEWarning guifg=#ffd300 guibg=#333333
highlight! ALEError guifg=...
を設定すればいけるんじゃないかと思っていたが、それだけだとどうやら処理のどこかでclearに設定されてしまうっぽい。
ALEError
をハイライト設定していないと、そんな定義ないよと怒られる。
なのでautocmd
でファイルを開いたときまたは再読み込みしたときにhighlightを再定義すると、ちゃんと色がつく。
バグなのか他のプラグインやtmuxとの相性が悪いのか、原因は定かではないがIssueには一応上がっていた。
let g:ale_set_highlights = 1について
let g:ale_set_highlights = 1
にすれば色がつくようになると思っていたが、そうじゃないらしい。g:ale_set_highlights
は実際のコードに色をつけるかどうか、の判定フラグだった。
prettierやeslintも同じ
これは自分だけかもしれないが、ファイルを保存した際prettierで自動整形する、ということをaleで行っている。
自動整形はされるのだが、ファイルを一度再読み込みしないと発動されなかった。これもハイライトと同様でautocmdによって回避可能であった。
let g:ale_fix_on_save = 1 " vimrcを再読込みしないとfixersが未定義になってしまうため、autocmdで設定した autocmd VimEnter,SourcePost * :let b:ale_fixers = ['prettier', 'eslint']
設定すると、再読み込みしなくても保存したら自動整形されるようになった。