Coc.nvimを触ってみようアドベントカレンダー 6日目 – coc-diagnostic

とっても楽しいcoc.nvimを触ってみようというアドベントカレンダーです。6日目はcoc-diagnostic。新しくリリースされたlint用コマンドラインツールをcocで動作させたい場合には必須です。
2021.12.06

Coc.nvimを触ってみよう Advent Calendar 2021 6日目です。

今回は coc-diagnostic です。

coc-diagnostic について

diagnostic-languageserver のcoc.nvim拡張です。diagnostic-languageserver自体はlinter及び整形を実際に行うコマンドとの非同期の繋ぎとなる仕組みなので、

コマンド⇔diagnostic-languageserver⇔coc-diagnostic

の関係で連携していることになります。

coc-diagnostic をインストールする

vimを起動した状態で以下のコマンドを実行します。

:CocInstall coc-diagnostic

使ってみる

基本は diagnostic-languageserver.** にて指定を入れて行きます。coc-diagnosticのREADMEに利用できるOptionと指定可能な値が全て記載されているため、特に迷うことはないはずです。

  "diagnostic-languageserver.filetypes": {
    "vim": "vint",
    "email": "languagetool",
    "markdown": [ "write-good", "markdownlint" ],
    "sh": "shellcheck",
    "elixir": ["mix_credo", "mix_credo_compile"],
    "eelixir": ["mix_credo", "mix_credo_compile"],
    "php": ["phpstan", "psalm"],
    "yaml": [ "yamllint" ],
    "cmake": [ "cmake-lint", "cmakelint" ],
    "systemd": "systemd-analyze",
  }

この diagnostic-languageserver指定はLinter一覧に掲載されている設定をcoc-diagnosticが内部所持することにより、ファイルタイプのみ指定で動作することを実現しています。

内包していない場合もcoc-settings.json内に languageserver プロパティで独自指定可能です。

例として、以前掲載した以下記事のactionlintがあります。

あとがき

独自Linterや、設定がまだ書き起こされていないLinterを適用させたい場合には動作検証が必要になりますが、メジャーな言語については基本ファイルタイプを指定するだけで動作します。coc.nvimをどう使うか迷ったときにはまずcoc-diagnosticを入れてみましょう。