Coc-solargraph

From wikinotes

COC LSP extension built overtop of ruby solargraph.

Documentation

github https://github.com/neoclide/coc-solargraph
solargraph homepage https://github.com/castwide/solargraph

Tutorials

solagraph w/ rails http://iftheshoefritz.com/code%20completion/intellisense/rails/ruby/vscode/emacs/2020/06/18/rails-code-completion-with-lsp-and-solargraph.html

Install

NOTE:

If using a nix-provided nvim, coc-solargraph may fail to start within vim because directories are not writable.

If you are not getting completions, see :CocInfo.

gem install neovim
gem install solargraph
gem install solargraph-rails --pre  # if using rails (I've had a lot of issues with this)
:CocInstall coc-solargraph   " uses solargraph on backend

For each project:

# add docs from project's gems to solargraph
solargraph bundle

# generate a solargraph config
# (add 'plugins: ["solargraph-rails"]' if wanted)
solargraph config .

Make sure to see ruby solargraph instructions for additional optimizations.

Usage

  • ctrl+space triggers coc completion.
  • ctrl+n/p will continue to use vim's builtin keyword completion.

Troubleshooting

Tools

:CocInfo          " see logs, exceptions
:CocList commands " fuzzy-search solargraph commands, enter to run

could not find X-Y.Y.Y in any of the sources

2021-12-28T10:55:26.265 INFO (pid:11001) [extension:coc-solargraph] - [WARN] /Users/will/.gem/ruby/2.7.2/gems/bundler-1.17.3/lib/bundler/spec_set.rb:91:in `block in materialize': Could not find racc-1.6.0 in any of the sources (Bundler::GemNotFound)
	from /Users/will/.gem/ruby/2.7.2/gems/bundler-1.17.3/lib/bundler/spec_set.rb:85:in `map!'
	from /Users/will/.gem/ruby/2.7.2/gems/bundler-1.17.3/lib/bundler/spec_set.rb:85:in `materialize'
	from /Users/will/.gem/ruby/2.7.2/gems/bundler-1.17.3/lib/bundler/definition.rb:170:in `specs'
	from /Users/will/.gem/ruby/2.7.2/gems/bundler-1.17.3/lib/bundler/definition.rb:237:in `specs_for'
	from -e:1:in `block in <main>'
	from -e:1:in `chdir'
	from -e:1:in `<main>'

One way around this is to add solargraph to your Gemfile and tell solargraph to use bundler.
solargraph has it's own requirements however, which may conflict with your own.

// ~/.config/nvim/coc-settings.json

{
  "solargraph.useBundler": true
}