Skip to content

Commit

Permalink
Recommend pull_diags.nvim instead of manual config
Browse files Browse the repository at this point in the history
  • Loading branch information
nithinbekal committed Apr 15, 2024
1 parent 4cc5e5c commit fa4c6c2
Showing 1 changed file with 2 additions and 94 deletions.
96 changes: 2 additions & 94 deletions EDITORS.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,102 +61,10 @@ mason_lspconfig.setup_handlers {
}
```

### Neovim Limitations
### Limitations

Ruby LSP only supports pull diagnostics, and neovim versions prior to v0.10.0-dev-695+g58f948614 only support [publishDiagnostics](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_publishDiagnostics).
Additional setup is required to enable diagnostics from Ruby LSP to appear in neovim.

```lua
-- textDocument/diagnostic support until 0.10.0 is released
_timers = {}
local function setup_diagnostics(client, buffer)
if require("vim.lsp.diagnostic")._enable then
return
end

local diagnostic_handler = function()
local params = vim.lsp.util.make_text_document_params(buffer)
client.request("textDocument/diagnostic", { textDocument = params }, function(err, result)
if err then
local err_msg = string.format("diagnostics error - %s", vim.inspect(err))
vim.lsp.log.error(err_msg)
end
local diagnostic_items = {}
if result then
diagnostic_items = result.items
end
vim.lsp.diagnostic.on_publish_diagnostics(
nil,
vim.tbl_extend("keep", params, { diagnostics = diagnostic_items }),
{ client_id = client.id }
)
end)
end

diagnostic_handler() -- to request diagnostics on buffer when first attaching

vim.api.nvim_buf_attach(buffer, false, {
on_lines = function()
if _timers[buffer] then
vim.fn.timer_stop(_timers[buffer])
end
_timers[buffer] = vim.fn.timer_start(200, diagnostic_handler)
end,
on_detach = function()
if _timers[buffer] then
vim.fn.timer_stop(_timers[buffer])
end
end,
})
end

-- adds ShowRubyDeps command to show dependencies in the quickfix list.
-- add the `all` argument to show indirect dependencies as well
local function add_ruby_deps_command(client, bufnr)
vim.api.nvim_buf_create_user_command(bufnr, "ShowRubyDeps",
function(opts)

local params = vim.lsp.util.make_text_document_params()

local showAll = opts.args == "all"

client.request("rubyLsp/workspace/dependencies", params,
function(error, result)
if error then
print("Error showing deps: " .. error)
return
end

local qf_list = {}
for _, item in ipairs(result) do
if showAll or item.dependency then
table.insert(qf_list, {
text = string.format("%s (%s) - %s",
item.name,
item.version,
item.dependency),

filename = item.path
})
end
end

vim.fn.setqflist(qf_list)
vim.cmd('copen')
end, bufnr)
end, {nargs = "?", complete = function()
return {"all"}
end})
end


require("lspconfig").ruby_ls.setup({
on_attach = function(client, buffer)
setup_diagnostics(client, buffer)
add_ruby_deps_command(client, buffer)
end,
})
```
[pull_diags.nvim](https://github.com/catlee/pull_diags.nvim) can be used to enable diagnostics from Ruby LSP to appear in neovim.

## Sublime Text LSP

Expand Down

0 comments on commit fa4c6c2

Please sign in to comment.