-
-
Notifications
You must be signed in to change notification settings - Fork 6.2k
LSP: implement documentHighlight #11638
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Where should I document the CursorHold autocommands? In one of the example sections or maybe in its own section? |
somewhere below |
2b1ca1d
to
6c0a810
Compare
Documentation added, please review. |
the linter fails with ```
Checking runtime/lua/vim/lsp/util.lua 5 warnings
|
ddd9f57
to
d08a6bc
Compare
Thanks, PR rebased and feedback addressed in last commit |
Co-Authored-By: Justin M. Keyes <justinkz@gmail.com>
57814e4
to
536f381
Compare
@justinmk can we get this one merged? |
runtime/doc/lsp.txt
Outdated
*hl-LspDiagnosticsHint* | ||
LspDiagnosticHint used for "Hint" diagnostic virtual text | ||
*hl-LspDiagnosticsUnderline* | ||
LspDiagnosticsUnderline used for text with diagnostic information |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The description could be enhanced: does this mean it applies to all previous highlights ? Why force an underline when it can be just a default ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LspDiagnosticsUnderline
was not added by me, I just added the documentation since it was missing and I was adding the docs for the new highlights anyway.
LspDiagnostics(Error|Warning|Hint|Information)
is applied to diagnostics (virtual text and sign column), but is not applied to "diagnosed" code/text.
On the contrary, LspDiagnosticsUnderline
is applied to the code/text.
Maybe we should change LspDiagnosticsUnderline
to LspDiagnosedText
since people may want to customize it (eg: use italics instead of underline) /cc @norcalli
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LspDiagnosedText or LspDiagnosticAny/LspDiagnosticAll to keep the same prefix. You can either remove the doc for this specific highlight and do it in another PR or update all at once here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Will remove it from docs since I prefer the original author to rename the other highlights. Thanks!
@@ -173,6 +158,25 @@ name: > | |||
vim.lsp.protocol.TextDocumentSyncKind.Full == 1 | |||
vim.lsp.protocol.TextDocumentSyncKind[1] == "Full" | |||
|
|||
================================================================================ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am sorry to nitpick, but why rename lsp-highlight to lsp-highlight-groups ? I guess it's fine as this hasn't been released yet but I would prefer to minimize changes as the naming may have been discussed in a previous pr, I see no reason to change/move it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No problem :) I realized it was duplicated so took the one with more context and details. But will rename that one to remove "groups"
This release represents ~4000 commits since v0.4.4, the previous non-maintenance release. Highlights include builtin support for LSP, new APIs for extended marks (with byte resolution tracking of changes) and buffer decorations, as well as vast improvements to lua as a plugin and configuration language. Experimental support for tree-sitter as a syntax engine is also included, building on the new core APIs for byte tracking and decorations. FEATURES: New API functions: nvim_exec: execute multiline vim script blocks nvim_get_hl_id_by_name: Gets a highight definition by name nvim_exec_lua: new name for nvim_execute_lua nvim_notify: Notify the user with a message nvim_get_runtime_file: Find files in runtime directories nvim_get_all_options_info: Get option information for all options nvim_get_option_info: Get option information for one option nvim_echo: Echo a message with highlights nvim_open_term: Open a virtual terminal in a buffer nvim_chan_send: send data to a channel. (like chansend() but supports lua strings) nvim_set_decoration_provider: callback driven decoration API for a namespace nvim_buf_set_text: Set/replace a character range in a buffer nvim_buf_delete: Delete the buffer. |:bwipeout| nvim_buf_get_extmark_by_id: Returns position for a given extmark id. nvim_buf_get_extmarks: get extmarks in traversal order. nvim_buf_set_extmark: Creates or updates an extmark. nvim_buf_del_extmark: Removes an extmark. nvim_buf_call: call a function with buffer as temporary current buffer nvim_win_hide: Closes the window and hide the buffer it contains |:hide| nvim_win_call: Calls a function with window as temporary current window. New UI events: redraw.screenshot redraw.win_viewport Lua: 767cd8b neovim#12235 startup: add init.lua as an alternative user config 687eb0b neovim#14686 feat(startup): Source runtime/plugin/**/*.lua at startup neovim#14686 runtime: allow lua in various runtime search paths such as syntax/ ftdetect/ indent/ ftplugin/ compiler/ colors/ 43956de neovim#13479 lua: Add vim.opt and fix scopes of vim.o 1407899 neovim#12268 lua: Add buffer, window and tab accessors be662fe lua: vim.wait implementation 2b663c0 neovim#14213 viml: embed Lua syntax highlighting 901dd79 feat: add completion to ':lua' 82688973 lua: complete methods in metatables 3421485 runtime: propagate lua parsing errors while using "require" aaca2c1 neovim#13276 feat(lua): improve error message to make it actionable c60c737 startup: handle autoload and lua packages during startup 3ccdbc5 neovim#12536 lua: add vim.register_keystroke_callback 971a191 lua: Add ability to pass lua functions directly to vimL 91e41c8 neovim#12401 lua: add vim.highlight.range f2894bf neovim#12279 lua: Add highlight.on_yank ae5bd04 neovim#11969 lua: add tbl_deep_extend ea4127e lua: metatable for empty dict value dab40f4 Add v:lua.func() vimL syntax for calling lua 678a51b Lua: vim.validate() 474d0bc lua: vim.rpcrequest, vim.rpcnotify, vim.NIL 8ee7c94 lua: add vim.fn.{func} for direct access to vimL function d0d38fc neovim#11442 Lua: vim.env, vim.{g,v,w,bo,wo} Tree-sitter: Note: tree-sitter is considered experimental for 0.5. There's remaining bugs for buffer parsing, as well as known performance issues for large files and injected (nested) languages. e933426 neovim#10124 Tree-sitter API for lua 440695c tree-sitter: implement query functionality and highlighting prototype 8bea39f feat(treesitter): allow injections to be configured through directives 929f194 feat(treesitter): add offset predicate for language injection cd75d32 neovim#14200 feat: treesitter checkhealth 1a63102 feat(treesitter): add language tree d3f5440 treesitter: runtime queries 3c5141d neovim#13008 treesitter: add string parser 9437327 treesitter: use new on_bytes interface e4b5efa treesitter: use decoration provider API d6209a7 fix: Add a test and it is so pretty 836c310 feat(ts): bump tree-sitter to v0.20.0 LSP client: 00dc12c neovim#11336 lua LSP client: initial implementation d5aaad1 neovim#11430 Followup improvements to LSP ee7ac46 neovim#11578 LSP: Use async completion for omnifunc. 070bd3e neovim#11604 LSP: shrink API, improve docs 25afa10 neovim#11669 Merge 'LSP: differentiate diagnostic underline by severity' e956ea7 neovim#11777 LSP: show diagnostic in qf/loclist dd8b29c neovim#11838 LSP: set InitializeParams.rootPath value 0c5d2ff neovim#11837 Merge 'LSP: fixes, improve test visibility' ca86993 neovim#11638 LSP: implement documentHighlight 220a2b0 LSP/references: Add context to locations returned by server ccb038d LSP/completion: add textEdit support da6f38a neovim#12313 LSP: Add workspace.applyEdit client capabilities f559e52 neovim#11607 LSP: Add textDocument/codeAction support 0d83a1c neovim#12638 LSP: Feature/add workspace folders fd507e2 neovim#13641 LSP: window/showMessageRequest e467d29 LSP: Move workspace/configuration handler from nvim-lspconfig to core 2bdd553 feat(lsp): Add codelens support UI: f8134f2 screen.c: remove fold_line special case c146edd experimental support for per-window color schemes a1508c9 nvim__screenshot (dump TUI state to file) 08fe100 terminal: enable pass through indexed colors to TUI in rgb mode 5a85699 tests/ui: make screen.lua use "linegrid" representation internally 8fe19d9 screen: make ui_compositor aware of the intended size of a float 54ce101 extmark: add new flexible "decorations" abstraction 4781333 decorations: allow virt_text overlay at any column bdebe85 decorations: use extmark column adjustments for buffer highlights 7b48831 decorations: Allow highlights beyond end of line hl_eol 425bc43 decorations: add additional styling of virt_text overlays edb5864 floats: z-index 243820e floats: add borders (MS-DOS MODE) 5b6edc8 feat(float): add rounded borders preset 4a36ec6 neovim#14310 float: add "solid" border style vim patches: around ~1000 vim patches and runtime updates got merged. Hooray! Changes include improvements to quickfix, prompt buffers, incsearch, display of search counts, and much much more. various features and changes: 858c056 neovim#12809 Support for :perl, :perlfile, :perldo and perleval() bc86f76 api/buffer: add "on_bytes" callback to nvim_buf_attach 19b6237 jobstart now supports env/clear_env ef7c6b9 Support specifying "env" option for termopen() 7c4f349 neovim#13287 switch from travis to github actions 24db59c feat: implement BufModified autocmd b83d822 implement Scroll autocommand 8caf841 Lower "closed by the client" message level to INFO 7de276b bump libvterm to 0.1.4 097ec71 neovim#14096 aarch64/linux: fix build by updating LuaJIT bd5f0e9 neovim#12531 support autoread using tui focus tracking 8a12760 neovim#12382 Add v:event.visual during `TextYankPost` 802f842 api(nvim_open_win): add "noautocmd" option FIXES: 2144455 BugFix(clipboard): Fix block paste not working properly 01493e7 neovim#14413 api: fix nvim_exec() silencing behaviour 9699f3b fix(doc): Add '/site' to stdpath('data') example in `:help 'rtp'` 581b2bc screen: fix problem with p_ch eae4b1e luaref: fix leaks for global luarefs 409b271 fix: segfault when pasting in term with empty buffer cf6c23f neovim#14273 fix plenty of errors discovered by clang 21035cf neovim#14500 fix plenty of errors discovered by coverity bca1913 neovim#13987 tui: fix possibility of evaluating uninitialized variables 9f23359 fix_cursor: do not change line number when edit will not impact cursor row 33f92fe fix(pty): Always use $TERM from the job's env dict 6249059 checkhealth: fix terminfo problems on Windows 397be5d neovim#12811 UI: fix cursor not displayed after hiding and un-hiding 87afc90 screen.c: fix an issue with wrap and folds b419e39 screen.c: fix last character on foldtext 2ea3127 neovim#13688 screen.c: fix display of signcolumn=auto in diffs c2d288e Fix screen terminal family issues 314b222 neovim#14127 Fix click on foldcolumn with vsplit e65d0e5 vim.fn: throw error when trying to use API function
This release represents ~4000 commits since v0.4.4, the previous non-maintenance release. Highlights include builtin support for LSP, new APIs for extended marks (with byte resolution tracking of changes) and buffer decorations, as well as vast improvements to lua as a plugin and configuration language. Experimental support for tree-sitter as a syntax engine is also included, building on the new core APIs for byte tracking and decorations. FEATURES: New API functions: nvim_exec: execute multiline vim script blocks nvim_get_hl_id_by_name: Gets a highight definition by name nvim_exec_lua: new name for nvim_execute_lua nvim_notify: Notify the user with a message nvim_get_runtime_file: Find files in runtime directories nvim_get_all_options_info: Get option information for all options nvim_get_option_info: Get option information for one option nvim_echo: Echo a message with highlights nvim_open_term: Open a virtual terminal in a buffer nvim_chan_send: send data to a channel. (like chansend() but supports lua strings) nvim_set_decoration_provider: callback driven decoration API for a namespace nvim_buf_set_text: Set/replace a character range in a buffer nvim_buf_delete: Delete the buffer. |:bwipeout| nvim_buf_get_extmark_by_id: Returns position for a given extmark id. nvim_buf_get_extmarks: get extmarks in traversal order. nvim_buf_set_extmark: Creates or updates an extmark. nvim_buf_del_extmark: Removes an extmark. nvim_buf_call: call a function with buffer as temporary current buffer nvim_win_hide: Closes the window and hide the buffer it contains |:hide| nvim_win_call: Calls a function with window as temporary current window. New UI events: redraw.screenshot redraw.win_viewport Lua: 767cd8b #12235 startup: add init.lua as an alternative user config 687eb0b #14686 feat(startup): Source runtime/plugin/**/*.lua at startup #14686 runtime: allow lua in various runtime search paths such as syntax/ ftdetect/ indent/ ftplugin/ compiler/ colors/ 43956de #13479 lua: Add vim.opt and fix scopes of vim.o 1407899 #12268 lua: Add buffer, window and tab accessors be662fe lua: vim.wait implementation 2b663c0 #14213 viml: embed Lua syntax highlighting 901dd79 feat: add completion to ':lua' 82688973 lua: complete methods in metatables 3421485 runtime: propagate lua parsing errors while using "require" aaca2c1 #13276 feat(lua): improve error message to make it actionable c60c737 startup: handle autoload and lua packages during startup 3ccdbc5 #12536 lua: add vim.register_keystroke_callback 971a191 lua: Add ability to pass lua functions directly to vimL 91e41c8 #12401 lua: add vim.highlight.range f2894bf #12279 lua: Add highlight.on_yank ae5bd04 #11969 lua: add tbl_deep_extend ea4127e lua: metatable for empty dict value dab40f4 Add v:lua.func() vimL syntax for calling lua 678a51b Lua: vim.validate() 474d0bc lua: vim.rpcrequest, vim.rpcnotify, vim.NIL 8ee7c94 lua: add vim.fn.{func} for direct access to vimL function d0d38fc #11442 Lua: vim.env, vim.{g,v,w,bo,wo} Tree-sitter: Note: tree-sitter is considered experimental for 0.5. There's remaining bugs for buffer parsing, as well as known performance issues for large files and injected (nested) languages. e933426 #10124 Tree-sitter API for lua 440695c tree-sitter: implement query functionality and highlighting prototype 8bea39f feat(treesitter): allow injections to be configured through directives 929f194 feat(treesitter): add offset predicate for language injection cd75d32 #14200 feat: treesitter checkhealth 1a63102 feat(treesitter): add language tree d3f5440 treesitter: runtime queries 3c5141d #13008 treesitter: add string parser 9437327 treesitter: use new on_bytes interface e4b5efa treesitter: use decoration provider API d6209a7 fix: Add a test and it is so pretty 836c310 feat(ts): bump tree-sitter to v0.20.0 LSP client: 00dc12c #11336 lua LSP client: initial implementation d5aaad1 #11430 Followup improvements to LSP ee7ac46 #11578 LSP: Use async completion for omnifunc. 070bd3e #11604 LSP: shrink API, improve docs 25afa10 #11669 Merge 'LSP: differentiate diagnostic underline by severity' e956ea7 #11777 LSP: show diagnostic in qf/loclist dd8b29c #11838 LSP: set InitializeParams.rootPath value 0c5d2ff #11837 Merge 'LSP: fixes, improve test visibility' ca86993 #11638 LSP: implement documentHighlight 220a2b0 LSP/references: Add context to locations returned by server ccb038d LSP/completion: add textEdit support da6f38a #12313 LSP: Add workspace.applyEdit client capabilities f559e52 #11607 LSP: Add textDocument/codeAction support 0d83a1c #12638 LSP: Feature/add workspace folders fd507e2 #13641 LSP: window/showMessageRequest e467d29 LSP: Move workspace/configuration handler from nvim-lspconfig to core 2bdd553 feat(lsp): Add codelens support UI: f8134f2 screen.c: remove fold_line special case c146edd experimental support for per-window color schemes a1508c9 nvim__screenshot (dump TUI state to file) 08fe100 terminal: enable pass through indexed colors to TUI in rgb mode 5a85699 tests/ui: make screen.lua use "linegrid" representation internally 8fe19d9 screen: make ui_compositor aware of the intended size of a float 54ce101 extmark: add new flexible "decorations" abstraction 4781333 decorations: allow virt_text overlay at any column bdebe85 decorations: use extmark column adjustments for buffer highlights 7b48831 decorations: Allow highlights beyond end of line hl_eol 425bc43 decorations: add additional styling of virt_text overlays edb5864 floats: z-index 243820e floats: add borders (MS-DOS MODE) 5b6edc8 feat(float): add rounded borders preset 4a36ec6 #14310 float: add "solid" border style vim patches: around ~1000 vim patches and runtime updates got merged. Hooray! Changes include improvements to quickfix, prompt buffers, incsearch, display of search counts, and much much more. various features and changes: 858c056 #12809 Support for :perl, :perlfile, :perldo and perleval() bc86f76 api/buffer: add "on_bytes" callback to nvim_buf_attach 19b6237 jobstart now supports env/clear_env ef7c6b9 Support specifying "env" option for termopen() 7c4f349 #13287 switch from travis to github actions 24db59c feat: implement BufModified autocmd b83d822 implement Scroll autocommand 8caf841 Lower "closed by the client" message level to INFO 7de276b bump libvterm to 0.1.4 097ec71 #14096 aarch64/linux: fix build by updating LuaJIT bd5f0e9 #12531 support autoread using tui focus tracking 8a12760 #12382 Add v:event.visual during `TextYankPost` 802f842 api(nvim_open_win): add "noautocmd" option FIXES: 2144455 BugFix(clipboard): Fix block paste not working properly 01493e7 #14413 api: fix nvim_exec() silencing behaviour 9699f3b fix(doc): Add '/site' to stdpath('data') example in `:help 'rtp'` 581b2bc screen: fix problem with p_ch eae4b1e luaref: fix leaks for global luarefs 409b271 fix: segfault when pasting in term with empty buffer cf6c23f #14273 fix plenty of errors discovered by clang 21035cf #14500 fix plenty of errors discovered by coverity bca1913 #13987 tui: fix possibility of evaluating uninitialized variables 9f23359 fix_cursor: do not change line number when edit will not impact cursor row 33f92fe fix(pty): Always use $TERM from the job's env dict 6249059 checkhealth: fix terminfo problems on Windows 397be5d #12811 UI: fix cursor not displayed after hiding and un-hiding 87afc90 screen.c: fix an issue with wrap and folds b419e39 screen.c: fix last character on foldtext 2ea3127 #13688 screen.c: fix display of signcolumn=auto in diffs c2d288e Fix screen terminal family issues 314b222 #14127 Fix click on foldcolumn with vsplit e65d0e5 vim.fn: throw error when trying to use API function
This PR implements the functions required for users to enable document highlight support, but is left to users to enable it. For example, in my case I use CursorHold to trigger the highlighting: