nvimでsolargraphのプラグインを使ってRailsやRspecの補完を効かせる
/ 4 min read
Updated:Table of Contents
はじめに
自分は、Rails(Ruby)を書くときにsolargraphを使っています。solargraphは単体で使ってもある程度補完をしてくれて便利なのですが、RailsやRspecなどで使うと微妙に補完してくれないことがあります。
例えばRspecでletやdescribed_class使って変数を定義しても、solargraph単体ではその変数を型情報などと一緒に補完してくれません。
これらを補助するためにsolargraphにはプラグインというものがあり、Railsの補完をしたいならsolargraph-rails、Rspecの補完をしたいならsolargraph-rspecなどがあります。
VSCodeだとvscode-solargraphをインストール後、使用したいプラグインをgem installして、.solargraph.yml に設定を書くだけで使うことができました。
しかし、nvimだとmason経由でインストールしただけではうまくプラグインを読み込んでくれず、GitHub上で色々検索すると動くものを見つけて、どうにか動かすことができました。
設定
まずは必要なgemをグローバルにインストールします。
gem install solargraphgem install solargraph-railsgem install solargraph-rspec次にnvimの設定にmasonでインストールしたsolargraphではなく、グローバルにインストールした方を起動するようにします。
local lsp_config = require("lspconfig")local mason_lspconfig = require("mason-lspconfig")local capabilities = require("cmp_nvim_lsp").default_capabilities()mason_lspconfig.setup()mason_lspconfig.setup_handlers({ function(server_name) local server_config = { capabilities = capabilities } if server_name == "solargraph" then server_config = { filetypes = { "ruby" }, root_dir = lsp_config.util.root_pattern("Gemfile"), cmd = { os.getenv("HOME") .. "/.rbenv/shims/solargraph", "stdio" }, settings = { solargraph = { diagnostics = true, }, }, } end server_config.on_attach = on_attach lsp_config[server_name].setup(server_config)最後にRailsプロジェクト直下でyard gemsして、solargraphの設定ファイルをsolargraph configで生成します。生成した設定ファイルに使用するプラグインを追記します。
include: - "**/*.rb"exclude: - spec/**/* - vendor/**/* - ".bundle/**/*"require: []domains: []plugins: ["solargraph-rspec", "solargraph-rails"]reporters: - rubocop - require_not_foundmax_files: 5000これでファイルを開くと補完されました(もし補完されなかったら、yard gems の前にrailsやrspecをグローバルにインストールする必要があるかもです)。
letで定義したheaders変数を型付で補完
described_classを型付で補完
終わりに
nvimでRailsやRspecの補完を効かせるようにしました。本当はグローバルにインストールするのではなくmason経由で動かせると良かったのですがよく分からず妥協しました…
いずれどうにかしたいなぁ