aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfrancisco souza <108725+fsouza@users.noreply.github.com>2020-06-18 08:04:49 -0400
committerGitHub <noreply@github.com>2020-06-18 08:04:49 -0400
commit70d4b31b834395fe36f4886e43b63fd4dc62ded1 (patch)
tree3f97e447c549b59a771e73a0cfa36a8d5dd52c40
parent25aa2969f25a1a6554e7ecd48692c60852d74101 (diff)
downloadrneovim-70d4b31b834395fe36f4886e43b63fd4dc62ded1.tar.gz
rneovim-70d4b31b834395fe36f4886e43b63fd4dc62ded1.tar.bz2
rneovim-70d4b31b834395fe36f4886e43b63fd4dc62ded1.zip
lsp: Add new highlight groups used in show_line_diagnostics (#12473)
* lsp: support custom hl groups in show_line_diagnostics Closes #12472. * runtime: add docs for the new lsp highlight groups Co-authored-by: francisco souza <fsouza@users.noreply.github.com>
-rw-r--r--runtime/doc/lsp.txt31
-rw-r--r--runtime/lua/vim/lsp/util.lua7
-rw-r--r--test/functional/plugin/lsp_spec.lua4
3 files changed, 33 insertions, 9 deletions
diff --git a/runtime/doc/lsp.txt b/runtime/doc/lsp.txt
index 3a93390210..f81265c2c8 100644
--- a/runtime/doc/lsp.txt
+++ b/runtime/doc/lsp.txt
@@ -164,21 +164,36 @@ name: >
LSP HIGHLIGHT *lsp-highlight*
*hl-LspDiagnosticsError*
-LspDiagnosticsError used for "Error" diagnostic virtual text
+LspDiagnosticsError used for "Error" diagnostic virtual text
*hl-LspDiagnosticsErrorSign*
-LspDiagnosticsErrorSign used for "Error" diagnostic signs in sign column
+LspDiagnosticsErrorSign used for "Error" diagnostic signs in sign
+ column
+ *hl-LspDiagnosticsErrorFloating*
+LspDiagnosticsErrorFloating used for "Error" diagnostic messages in the
+ diagnostics float
*hl-LspDiagnosticsWarning*
-LspDiagnosticsWarning used for "Warning" diagnostic virtual text
+LspDiagnosticsWarning used for "Warning" diagnostic virtual text
*hl-LspDiagnosticsWarningSign*
-LspDiagnosticsWarningSign used for "Warning" diagnostic signs in sign column
+LspDiagnosticsWarningSign used for "Warning" diagnostic signs in sign
+ column
+ *hl-LspDiagnosticsWarningFloating*
+LspDiagnosticsWarningFloating used for "Warning" diagnostic messages in the
+ diagnostics float
*hl-LspDiagnosticsInformation*
-LspDiagnosticsInformation used for "Information" diagnostic virtual text
+LspDiagnosticsInformation used for "Information" diagnostic virtual text
*hl-LspDiagnosticsInformationSign*
-LspDiagnosticsInformationSign used for "Information" signs in sign column
+LspDiagnosticsInformationSign used for "Information" signs in sign column
+ *hl-LspDiagnosticsInformationFloating*
+LspDiagnosticsInformationFloating used for "Information" diagnostic messages in
+ the diagnostics float
*hl-LspDiagnosticsHint*
-LspDiagnosticsHint used for "Hint" diagnostic virtual text
+LspDiagnosticsHint used for "Hint" diagnostic virtual text
*hl-LspDiagnosticsHintSign*
-LspDiagnosticsHintSign used for "Hint" diagnostic signs in sign column
+LspDiagnosticsHintSign used for "Hint" diagnostic signs in sign
+ column
+ *hl-LspDiagnosticsHintFloating*
+LspDiagnosticsHintFloating used for "Hint" diagnostic messages in the
+ diagnostics float
*hl-LspReferenceText*
LspReferenceText used for highlighting "text" references
*hl-LspReferenceRead*
diff --git a/runtime/lua/vim/lsp/util.lua b/runtime/lua/vim/lsp/util.lua
index 4c3c4fa6cb..71ca1048e1 100644
--- a/runtime/lua/vim/lsp/util.lua
+++ b/runtime/lua/vim/lsp/util.lua
@@ -859,6 +859,8 @@ do
local severity_highlights = {}
+ local severity_floating_highlights = {}
+
local default_severity_highlight = {
[protocol.DiagnosticSeverity.Error] = { guifg = "Red" };
[protocol.DiagnosticSeverity.Warning] = { guifg = "Orange" };
@@ -870,6 +872,7 @@ do
for severity, hi_info in pairs(default_severity_highlight) do
local severity_name = protocol.DiagnosticSeverity[severity]
local highlight_name = "LspDiagnostics"..severity_name
+ local floating_highlight_name = highlight_name.."Floating"
-- Try to fill in the foreground color with a sane default.
local cmd_parts = {"highlight", "default", highlight_name}
for k, v in pairs(hi_info) do
@@ -877,7 +880,9 @@ do
end
api.nvim_command(table.concat(cmd_parts, ' '))
api.nvim_command('highlight link ' .. highlight_name .. 'Sign ' .. highlight_name)
+ api.nvim_command('highlight link ' .. highlight_name .. 'Floating ' .. highlight_name)
severity_highlights[severity] = highlight_name
+ severity_floating_highlights[severity] = floating_highlight_name
end
function M.buf_clear_diagnostics(bufnr)
@@ -926,7 +931,7 @@ do
-- TODO(ashkan) make format configurable?
local prefix = string.format("%d. ", i)
- local hiname = severity_highlights[diagnostic.severity]
+ local hiname = severity_floating_highlights[diagnostic.severity]
assert(hiname, 'unknown severity: ' .. tostring(diagnostic.severity))
local message_lines = split_lines(diagnostic.message)
table.insert(lines, prefix..message_lines[1])
diff --git a/test/functional/plugin/lsp_spec.lua b/test/functional/plugin/lsp_spec.lua
index 1ab81a0ef8..c74ed6bf3b 100644
--- a/test/functional/plugin/lsp_spec.lua
+++ b/test/functional/plugin/lsp_spec.lua
@@ -770,10 +770,13 @@ describe('LSP', function()
it('highlight groups', function()
eq({'LspDiagnosticsError',
+ 'LspDiagnosticsErrorFloating',
'LspDiagnosticsErrorSign',
'LspDiagnosticsHint',
+ 'LspDiagnosticsHintFloating',
'LspDiagnosticsHintSign',
'LspDiagnosticsInformation',
+ 'LspDiagnosticsInformationFloating',
'LspDiagnosticsInformationSign',
'LspDiagnosticsUnderline',
'LspDiagnosticsUnderlineError',
@@ -781,6 +784,7 @@ describe('LSP', function()
'LspDiagnosticsUnderlineInformation',
'LspDiagnosticsUnderlineWarning',
'LspDiagnosticsWarning',
+ 'LspDiagnosticsWarningFloating',
'LspDiagnosticsWarningSign',
},
exec_lua([[require'vim.lsp'; return vim.fn.getcompletion('Lsp', 'highlight')]]))