[IMPORTANT] Deprecation & Transition Strategy #73
Description
Now that neovim/neovim#12655 is merged, we are deprecating diagnostic-nvim. For full information and commit message, see: neovim/neovim@f75be5e
Any features that were in diagnostic-nvim have now been implemented in Neovim core! This was always the plan for diagnostic-nvim, as it was a playground and testing area for features and interfaces for the builtin LSP
You should remove any on_attach
calls from diagnostic-nvim
in your configuration. They are no longer required.
Common Actions
PrevDiagnosticCycle
andNextDiagnosticCycle
:- New methods:
vim.lsp.diagnostic.goto_prev()
vim.lsp.diagnostic.goto_next()
- Example Mappings:
nnoremap <leader>dn <cmd>lua vim.lsp.diagnostic.goto_next()<CR>
- New methods:
PrevDiagnostic
andNextDiagnostic
- New methods:
vim.lsp.diagnostic.goto_prev { wrap = false }
vim.lsp.diagnostic.goto_next { wrap = false }
- Example Mappings:
nnoremap <leader>dn <cmd>lua vim.lsp.diagnostic.goto_next { wrap = false }<CR>
- New methods:
OpenDiagnostic
- New method:
vim.lsp.diagnostic.set_loclist()
- New method:
Configuring LSP Diagnostic Display
- Configuration of the LSP diagnostic display is now done with
lsp-handler
s.- You can read more about them by doing
:help lsp-handler
- For example, to disable virtual text, you would do this in your init.vim
- You can read more about them by doing
lua << EOF
vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(
vim.lsp.diagnostic.on_publish_diagnostics, {
-- This will disable virtual text, like doing:
-- let g:diagnostic_enable_virtual_text = 0
virtual_text = false,
-- This is similar to:
-- let g:diagnostic_show_sign = 1
-- To configure sign display,
-- see: ":help vim.lsp.diagnostic.set_signs()"
signs = true,
-- This is similar to:
-- "let g:diagnostic_insert_delay = 1"
update_in_insert = false,
}
)
EOF
Also note, the highlight group names have changed to now be consistent with each other. From the commit message in neovim core:
- Changed the highlight groups for LspDiagnostic highlight as they were
inconsistently named.
- For more information, see |lsp-highlight-diagnostics|
For example, the highlight that was formerly LspDiagnosticsError
is now LspDiagnosticsVirtualTextError
. It can also be configured by changing the default highlight group, LspDiagnosticsDefaultError
. For more information, read :help lsp-highlight-diagnostics
.
Advanced configuration
- To configure more advanced usage, first, you should read the new help for ":help vim.lsp.diagnostic.on_publish_diagnostics"
- After reading, you can override diagnostic-nvim configuration values, like sign configuration and virtual text spacing using something similar to the following:
vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(
vim.lsp.diagnostic.on_publish_diagnostics, {
-- Enable underline, use default values
underline = true,
-- Enable virtual text, override spacing to 4
virtual_text = {
spacing = 4,
prefix = '~',
},
-- Use a function to dynamically turn signs off
-- and on, using buffer local variables
signs = function(bufnr, client_id)
local ok, result = pcall(vim.api.nvim_buf_get_var, bufnr, 'show_signs')
-- No buffer local variable set, so just enable by default
if not ok then
return true
end
return result
end,
-- Disable a feature
update_in_insert = false,
}
)