
## Description Solargraph already delegates some diagnostics to Rubocop by itself if it is installed on your system. However, if Rubocop is also enabled as an LSP while you're using Solargraph, then all Rubocop diagnostics are going to be duplicated and shown twice. Once from Solargraph after it calls Rubocop, and again by Rubocop separately running as an LSP. ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines.
96 lines
2.3 KiB
Lua
96 lines
2.3 KiB
Lua
if lazyvim_docs then
|
|
-- LSP Server to use for Ruby.
|
|
-- Set to "solargraph" to use solargraph instead of ruby_lsp.
|
|
vim.g.lazyvim_ruby_lsp = "ruby_lsp"
|
|
vim.g.lazyvim_ruby_formatter = "rubocop"
|
|
end
|
|
|
|
local lsp = vim.g.lazyvim_ruby_lsp or "ruby_lsp"
|
|
if vim.fn.has("nvim-0.10") == 0 then
|
|
-- ruby_lsp does not work well with Neovim < 0.10
|
|
lsp = vim.g.lazyvim_ruby_lsp or "solargraph"
|
|
end
|
|
local formatter = vim.g.lazyvim_ruby_formatter or "rubocop"
|
|
|
|
return {
|
|
recommended = function()
|
|
return LazyVim.extras.wants({
|
|
ft = "ruby",
|
|
root = "Gemfile",
|
|
})
|
|
end,
|
|
{
|
|
"nvim-treesitter/nvim-treesitter",
|
|
opts = { ensure_installed = { "ruby" } },
|
|
},
|
|
{
|
|
"neovim/nvim-lspconfig",
|
|
---@class PluginLspOpts
|
|
opts = {
|
|
---@type lspconfig.options
|
|
servers = {
|
|
ruby_lsp = {
|
|
enabled = lsp == "ruby_lsp",
|
|
},
|
|
solargraph = {
|
|
enabled = lsp == "solargraph",
|
|
},
|
|
rubocop = {
|
|
-- If Solargraph and Rubocop are both enabled as an LSP,
|
|
-- diagnostics will be duplicated because Solargraph
|
|
-- already calls Rubocop if it is installed
|
|
enabled = formatter == "rubocop" and lsp ~= "solargraph",
|
|
},
|
|
standardrb = {
|
|
enabled = formatter == "standardrb",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"williamboman/mason.nvim",
|
|
opts = { ensure_installed = { "erb-formatter", "erb-lint" } },
|
|
},
|
|
{
|
|
"mfussenegger/nvim-dap",
|
|
optional = true,
|
|
dependencies = {
|
|
"suketa/nvim-dap-ruby",
|
|
config = function()
|
|
require("dap-ruby").setup()
|
|
end,
|
|
},
|
|
},
|
|
{
|
|
"stevearc/conform.nvim",
|
|
optional = true,
|
|
opts = {
|
|
formatters_by_ft = {
|
|
ruby = { formatter },
|
|
eruby = { "erb_format" },
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"nvim-neotest/neotest",
|
|
optional = true,
|
|
dependencies = {
|
|
"olimorris/neotest-rspec",
|
|
},
|
|
opts = {
|
|
adapters = {
|
|
["neotest-rspec"] = {
|
|
-- NOTE: By default neotest-rspec uses the system wide rspec gem instead of the one through bundler
|
|
-- rspec_cmd = function()
|
|
-- return vim.tbl_flatten({
|
|
-- "bundle",
|
|
-- "exec",
|
|
-- "rspec",
|
|
-- })
|
|
-- end,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|