diff options
-rw-r--r-- | runtime/doc/lsp.txt | 35 | ||||
-rw-r--r-- | runtime/lua/vim/lsp/util.lua | 4 | ||||
-rw-r--r-- | test/functional/plugin/lsp_spec.lua | 34 |
3 files changed, 53 insertions, 20 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 338aedb4e0..df82e2d412 100644 --- a/runtime/lua/vim/lsp/util.lua +++ b/runtime/lua/vim/lsp/util.lua @@ -549,7 +549,9 @@ do local underline_highlight_name = "LspDiagnosticsUnderline" vim.cmd(string.format("highlight default %s gui=underline cterm=underline", underline_highlight_name)) for kind, _ in pairs(protocol.DiagnosticSeverity) do - vim.cmd(string.format("highlight default link %s%s %s", underline_highlight_name, kind, underline_highlight_name)) + 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 = {} diff --git a/test/functional/plugin/lsp_spec.lua b/test/functional/plugin/lsp_spec.lua index 45452c0b20..4829a33861 100644 --- a/test/functional/plugin/lsp_spec.lua +++ b/test/functional/plugin/lsp_spec.lua @@ -1,6 +1,7 @@ local helpers = require('test.functional.helpers')(after_each) local clear = helpers.clear +local buf_lines = helpers.buf_lines local dedent = helpers.dedent local exec_lua = helpers.exec_lua local eq = helpers.eq @@ -709,14 +710,9 @@ describe('LSP', function() end) end) -describe('LSP util', function() +describe('LSP', function() before_each(function() clear() - insert(dedent([[ - First line of text - Second line of text - Third line of text - Fourth line of text]])) end) local function make_edit(y_0, x_0, y_1, x_1, text) @@ -729,8 +725,29 @@ describe('LSP util', function() } end + it('highlight groups', function() + eq({'LspDiagnosticsError', + 'LspDiagnosticsHint', + 'LspDiagnosticsInformation', + 'LspDiagnosticsUnderline', + 'LspDiagnosticsUnderlineError', + 'LspDiagnosticsUnderlineHint', + 'LspDiagnosticsUnderlineInformation', + 'LspDiagnosticsUnderlineWarning', + 'LspDiagnosticsWarning', + }, + exec_lua([[require'vim.lsp'; return vim.fn.getcompletion('Lsp', 'highlight')]])) + end) + describe('apply_edits', function() - it('should apply simple edits', function() + before_each(function() + insert(dedent([[ + First line of text + Second line of text + Third line of text + Fourth line of text]])) + end) + it('applies apply simple edits', function() local edits = { make_edit(0, 0, 0, 0, {"123"}); make_edit(1, 0, 1, 1, {"2"}); @@ -744,8 +761,7 @@ describe('LSP util', function() 'Fourth line of text'; }, buf_lines(1)) end) - - it('should apply complex edits', function() + it('applies complex edits', function() local edits = { make_edit(0, 0, 0, 0, {"", "12"}); make_edit(0, 0, 0, 0, {"3", "foo"}); |