8000 LSP: implement documentHighlight by pwntester · Pull Request #11638 · neovim/neovim · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

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

Merged
merged 17 commits into from
Feb 26, 2020
Merged

Conversation

pwntester
Copy link
Contributor

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:

    vim.api.nvim_command [[autocmd CursorHold <buffer> lua vim.lsp.buf.document_highlight()]]
    vim.api.nvim_command [[autocmd CursorHoldI <buffer> lua vim.lsp.buf.document_highlight()]]
    vim.api.nvim_command [[autocmd CursorMoved <buffer> lua vim.lsp.util.buf_clear_references()]]

@pwntester
Copy link
Contributor Author

Where should I document the CursorHold autocommands? In one of the example sections or maybe in its own section?

@justinmk
Copy link
Member
justinmk commented Jan 1, 2020

Where should I document the CursorHold autocommands? In one of the example sections or maybe in its own section?

somewhere below :help lsp-config. (note: a big change to lsp.txt was merged today, so rebase before editing it...)

@pwntester
Copy link
Contributor Author

Where should I document the CursorHold autocommands? In one of the example sections or maybe in its own section?

somewhere below :help lsp-config. (note: a big change to lsp.txt was merged today, so rebase before editing it...)

Documentation added, please review.

@justinmk justinmk added this to the 0.5 milestone Jan 7, 2020
@pwntester pwntester requested a review from justinmk January 7, 2020 21:58
@pwntester pwntester requested a review from justinmk January 8, 2020 17:47
@teto
Copy link
Member
teto commented Feb 6, 2020

the linter fails with ```
Checking runtime/lua/vim/lsp/buf.lua 1 warning

runtime/lua/vim/lsp/buf.lua:135:66: trailing whitespace in a comment

Checking runtime/lua/vim/lsp/util.lua 5 warnings

runtime/lua/vim/lsp/util.lua:531:10: setting non-standard global variable highlight_range

runtime/lua/vim/lsp/util.lua:663:7: accessing undefined variable highlight_range

runtime/lua/vim/lsp/util.lua:681:9: accessing undefined variable highlight_range

runtime/lua/vim/lsp/util.lua:683:9: accessing undefined variable highlight_range

runtime/lua/vim/lsp/util.lua:685:9: accessing undefined variable highlight_range

@justinmk justinmk added the lsp label Feb 7, 2020
@justinmk justinmk changed the title implement documentHighlight LSP: implement documentHighlight Feb 7, 2020
@pwntester
Copy link
Contributor Author

Thanks, PR rebased and feedback addressed in last commit

@pwntester
Copy link
Contributor Author

@justinmk can we get this one merged?

*hl-LspDiagnosticsHint*
LspDiagnosticHint used for "Hint" diagnostic virtual text
*hl-LspDiagnosticsUnderline*
LspDiagnosticsUnderline used for text with diagnostic information
Copy link
Member

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 ?

Copy link
Contributor Author

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

Copy link
Member

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.

Copy link
Contributor Author

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"

================================================================================
Copy link
Member

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.

Copy link
Contributor Author

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"

@teto teto merged commit ca86993 into neovim:master Feb 26, 2020
@pwntester pwntester deleted the document_highlight branch February 26, 2020 21:24
bfredl added a commit to bfredl/neovim that referenced this pull request Jul 2, 2021
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
bfredl added a commit that referenced this pull request Jul 2, 2021
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants
0