aboutsummaryrefslogtreecommitdiff
path: root/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'runtime')
-rw-r--r--runtime/doc/lsp.txt35
-rw-r--r--runtime/lua/vim/lsp/util.lua23
2 files changed, 43 insertions, 15 deletions
diff --git a/runtime/doc/lsp.txt b/runtime/doc/lsp.txt
index 70a3110042..c173ecead3 100644
--- a/runtime/doc/lsp.txt
+++ b/runtime/doc/lsp.txt
@@ -57,24 +57,39 @@ use of |v:lua| to call Lua from Vimscript): >
autocmd Filetype python setlocal omnifunc=v:lua.vim.lsp.omnifunc
-FAQ ~
-
-> How to force-reload LSP?
+================================================================================
+FAQ *lsp-faq*
-Stop all clients, then reload the buffer. >
+- Q: How to force-reload LSP?
+ A: Stop all clients, then reload the buffer. >
:lua vim.lsp.stop_all_clients()
:edit
-> Why isn't completion working?
-
-In the buffer where you want to use LSP, check that 'omnifunc' is set to
-"v:lua.vim.lsp.omnifunc": >
+- Q: Why isn't completion working?
+ A: In the buffer where you want to use LSP, check that 'omnifunc' is set to
+ "v:lua.vim.lsp.omnifunc": >
:verbose set omnifunc?
-Some other plugin may be overriding the option. To avoid that, you could set
-the option in an |after-directory| ftplugin, e.g. "after/ftplugin/python.vim".
+< Some other plugin may be overriding the option. To avoid that, you could
+ set the option in an |after-directory| ftplugin, e.g.
+ "after/ftplugin/python.vim".
+
+================================================================================
+LSP HIGHLIGHT *lsp-highlight*
+
+When LSP is activated these highlight groups are defined:
+
+ LspDiagnosticsError
+ LspDiagnosticsHint
+ LspDiagnosticsInformation
+ LspDiagnosticsUnderline
+ LspDiagnosticsUnderlineError
+ LspDiagnosticsUnderlineHint
+ LspDiagnosticsUnderlineInformation
+ LspDiagnosticsUnderlineWarning
+ LspDiagnosticsWarning
================================================================================
LSP API *lsp-api*
diff --git a/runtime/lua/vim/lsp/util.lua b/runtime/lua/vim/lsp/util.lua
index 0de5fdad46..df82e2d412 100644
--- a/runtime/lua/vim/lsp/util.lua
+++ b/runtime/lua/vim/lsp/util.lua
@@ -547,7 +547,12 @@ do
local diagnostic_ns = api.nvim_create_namespace("vim_lsp_diagnostics")
local underline_highlight_name = "LspDiagnosticsUnderline"
- api.nvim_command(string.format("highlight default %s gui=underline cterm=underline", underline_highlight_name))
+ vim.cmd(string.format("highlight default %s gui=underline cterm=underline", underline_highlight_name))
+ for kind, _ in pairs(protocol.DiagnosticSeverity) do
+ if type(kind) == 'string' then
+ vim.cmd(string.format("highlight default link %s%s %s", underline_highlight_name, kind, underline_highlight_name))
+ end
+ end
local severity_highlights = {}
@@ -657,13 +662,21 @@ do
function M.buf_diagnostics_underline(bufnr, diagnostics)
for _, diagnostic in ipairs(diagnostics) do
- local start = diagnostic.range.start
+ local start = diagnostic.range["start"]
local finish = diagnostic.range["end"]
+ local hlmap = {
+ [protocol.DiagnosticSeverity.Error]='Error',
+ [protocol.DiagnosticSeverity.Warning]='Warning',
+ [protocol.DiagnosticSeverity.Information]='Information',
+ [protocol.DiagnosticSeverity.Hint]='Hint',
+ }
+
-- TODO care about encoding here since this is in byte index?
- highlight_range(bufnr, diagnostic_ns, underline_highlight_name,
- {start.line, start.character},
- {finish.line, finish.character}
+ highlight_range(bufnr, diagnostic_ns,
+ underline_highlight_name..hlmap[diagnostic.severity],
+ {start.line, start.character},
+ {finish.line, finish.character}
)
end
end