👮

RuboCopのLSPをNeovimで利用する

2023/07/02に公開

概要

RuboCop 1.53で搭載された言語サーバープロトコル(Language Server Protocol, LSP)機能をNeovimで使えるようにします。coc.nvimを利用するので、試してないですが、たぶんVimでもいけます。

インストール

RuboCop 1.53はインストール済として、まず、Neovim/VimのLSPサポートプラグインのcoc.nvimをインストールします。プラグインマネージャにvim-plugを利用しているのであれば、以下のようにして、バッファで :PlugInstall を実行します。

~/.config/nvim/init.vim
call plug#begin()

" ... 省略

Plug 'neoclide/coc.nvim', { 'branch': 'release' }

call plug#end()
:PlugInstall

※coc.nvimは、実行にNode.jsを必要とするので、インストールしていない場合は別でインストールください。

設定

バッファで :CocConfig を実行して、RuboCop LSPの設定を書いていきます。

:CocConfig

gem install rubocop でグローバルにインストールしたRuboCopを利用する場合は、以下のとおりです。

{
  "languageserver": {
    "rubocop": {
      "command": "rubocop",
      "args": ["--lsp"],
      "filetypes": ["ruby"]
    }
  }
}

bundlerでインストールしたRuboCopを利用する場合は、以下のようになります。

{
  "languageserver": {
    "rubocop": {
      "command": "bundle",
      "args": ["exec", "rubocop", "--lsp"],
      "filetypes": ["ruby"]
    }
  }
}

実行結果

Rubyファイルを開くとRuboCopの指示が表示されます。例えば、 Style/StringLiterals を有効にした状態で、変数展開などのない文字列でダブルクォートを使うと、次のように指示が表示されます。便利ですね。

リンク

coc.nvim: https://github.com/neoclide/coc.nvim
LSP (Language Server Protocol) :: RuboCop Docs: https://docs.rubocop.org/rubocop/usage/lsp.html

Discussion