aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/lsp
Commit message (Collapse)AuthorAge
* feat(lsp.util): deprecate vim.lsp.util.stylize_markdownLewis Russell2025-04-04
| | | | It's not used anywhere.
* fix: bug in stylize_markdownLewis Russell2025-04-04
| | | | `stripped` and `markdown_lines` are iterated together so must have the same length.
* refactor: add basic stringbuffer shimLewis Russell2025-03-31
|
* perf(lsp): use string.buffer for rpc loopMathias Fussenegger2025-03-31
| | | | | | | | | | Avoids some table allocations. In a quick test over 50000 iterations it reduces the time from 130ms to 74 ms For the test setup details see: https://github.com/mfussenegger/nvim-dap/pull/1394#issue-2725352391
* perf(lsp): optimize content length extraction from rpc headersMathias Fussenegger2025-03-31
| | | | | | - No redundant `:gsub` to turn `-` in `Content-Length` into `_` - No table allocations only to add and later get the content-length header
* feat(lsp): workspace_required #31824Michael Strobel2025-03-30
| | | | | | | | | | Problem: Some language servers do not work properly without a workspace folder. Solution: Add `workspace_required`, which skips starting the lsp client if no workspace folder is found. Co-authored-by: Justin M. Keyes <justinkz@gmail.com>
* fix(vim.lsp.inlay_hint): requesting inlay_hints even when disabled #32999Bartłomiej Maryńczak2025-03-30
| | | | | | | | Problem: Nvim needlessly requests inlay_hints even if they are disabled for a given buffer. Solution: Add the missing `enabled` check in `on_refresh`. Rest of the code has this check already so that's the only needed one to fix this.
* fix(lsp): warn on missing config in :checkhealth #33087Micah Halter2025-03-28
| | | | | | | | | | | Problem When calling `:checkhealth vim.lsp` after the user has enabled a language server with `vim.lsp.enable` that has no configuration a runtime error is hit because the code expects for a configuration to exist. Solution: Check if a configuration was returned before parsing it, if it isn't returned then warn the user that the server has been enabled but a configuration was not found.
* docs(lsp): completion.enable #33063Mathias Fußenegger2025-03-26
|
* docs: news, lsp autocomplete #33047Justin M. Keyes2025-03-26
|
* fix(lsp): handle using array as open_floating_preview title (#33016)Au.2025-03-22
|
* docs: misc (#32928)dundargoc2025-03-21
| | | | Co-authored-by: James Trew <j.trew10@gmail.com> Co-authored-by: przepompownia <przepompownia@users.noreply.github.com>
* docs: LSP completion #33006Justin M. Keyes2025-03-21
|
* feat(float): add winborder option (#31074)glepnir2025-03-18
| | | | | | | | | Problem: There is currently no global option to define the default border style for floating windows. This leads to repetitive code when developers need consistent styling across multiple floating windows. Solution: Introduce a global option winborder to specify the default border style for floating windows. When a floating window is created without explicitly specifying a border style, the value of the winborder option will be used. This simplifies configuration and ensures consistency in floating window appearance. Co-authored-by: Gregory Anders <greg@gpanders.com>
* fix(diagnostic): remove deprecated `severity_limit` optionChristian Clason2025-03-17
| | | | Deprecated to be removed in 0.11
* docs: miscJustin M. Keyes2025-03-17
|
* perf(lsp): don't construct potentially expensive stringsRiley Bruins2025-03-16
|
* refactor(lsp)!: rename lsp.completion.trigger() to get() (#32911)Mathias Fußenegger2025-03-16
| | | | | | | | | | | | Problem: `trigger` is a custom word not yet used in APIs. Solution: Use `get` instead because the main effect is that the completion candidates will be collected (and shown by default, but follow-up commits are planned to add an `on_result` callback that allows more general handling). --------- Co-authored-by: Christian Clason <c.clason@uni-graz.at>
* fix(lsp): correctly check for "codeAction/resolve" supportTobias Schmitz2025-03-15
|
* fix(lsp): autocmds to close lsp preview windows not clearedbekaboo2025-03-15
| | | | | | | | Problem: Augroup to close lsp preview hover window is not cleared after the window is closed because of unmatched group name. Solution: Delete the augroup before closing the preview window with correct group name.
* fix(lsp): handle non-existent configs in lsp.config/enableLewis Russell2025-03-12
|
* refactor(lsp): rename `on_publish_diagnostics` parameter #32776Will Lillis2025-03-11
| | | | * fix(lsp): rename `on_publish_diagnostics` parameter: result->params * fix(colors): specify local var type to address lint failure
* fix(lsp): improve LSP floating preview window cleanup #31353glepnir2025-03-11
| | | | | Problem: The current implementation creates a unique autocommand group for each floating preview window, which is inefficient and can lead to numerous autocommand groups. Solution: Use a single shared autocommand group with improved window validation to properly clean up LSP floating preview windows.
* fix(lsp): wrapped ctx in opts before passed to vim.lsp.completion.trigger #32837glepnir2025-03-11
| | | | | Problem: ctx is passed directly to M.trigger. In fact, it is a field of opts. Solution: wrapped in a table and passed to M.trigger.
* feat(lsp): support completion context #32793Maria José Solano2025-03-10
| | | | | | | | | Problem: vim.lsp.completion with "autotrigger" enabled, does not send completion context, even though it has all the necessary info. Solution: Include the context for "autotrigger". trigger() also optionally accepts context when manually invoked.
* fix(lsp): use unresolved code action when `codeAction/resolve` failsMaria José Solano2025-03-07
|
* feat(lsp): support for resolving code action command (#32704)Maria José Solano2025-03-06
| | | | | * fix(lsp): don't call codeAction_resolve with commands * feat(lsp): support for resolving code action command
* fix(lsp): open_floating_preview() ignores max_height (#32716)Robert Muir2025-03-04
| | | | | | | Problem: After 47aaddfa the max_height option is no longer respected. Hover documentation and Signature help windows take up the entire text height. Solution: Compare to window's current height and only modify the height if it would reduce the height, not enlarge it.
* docs: misc #31996Justin M. Keyes2025-03-02
|
* doc: clarify window-id, tab-id, nvim_set_current_x #32528David Briscoe2025-02-27
| | | | | | | | | | | | | | Problem: Descriptions are somewhat vague. nvim_set_current_line modifies contents but nvim_set_current_buf does not, etc. Solution: - Make it clear that these functions accept or return a winid/tabid by linking to that concept in help. - Only these few files use the term "handles", so replace them with the more conventional terminology. - Add a new help section for tab-ID. This concept is unique to neovim because vim exposes tabnr, but not tab handles. This section is modelled after `:h winid`.
* fix(lsp): resize hover window for concealed linesLuuk van Baal2025-02-25
| | | | | | | | Problem: Height of a (markdown) `vim.lsp.util.open_floating_preview()` window can be reduced to account for concealed lines (after #31324). Solution: Set the window height to the text height of the preview window. Set 'concealcursor' to avoid unconcealing the cursorline when entering the hover window.
* fix(lsp): reset the applied hints on `refresh` request #32446Yi Ming2025-02-23
|
* Merge #32503 feat(lsp): use the meta model to generate server capability mapJustin M. Keyes2025-02-23
|\
| * feat(lsp): use the meta model to generate server capability mapMaria José Solano2025-02-21
| |
| * feat(lsp): update LSP typesMaria José Solano2025-02-17
| |
* | fix(float): ensure floating window width can fit titleMaria José Solano2025-02-23
| |
* | fix(lsp): unify get_completion_word for textEdits/insertTextMathias Fussenegger2025-02-22
|/ | | | | | | | | | | | | | Problem: After https://github.com/neovim/neovim/pull/32377 selecting snippets provided by luals inserted the multi-line text before accepting the candidates. That's inconsistent with servers who provide `textEdit` instead of `insertText` and having lines shift up/down while cycling through the completion candidates is a bit irritating. Solution: Use the logic used for `textEdit` snippets also for `insertText`
* fix(docs): update context type in `vim.lsp.LocationOpts.OnList`Maria José Solano2025-02-16
|
* feat(lsp): add support for completionItem.command resolvingMathias Fussenegger2025-02-14
| | | | | | | | `command` was already resolved via a `completionItem/resolve` request but only if `additionalTextEdits` were also present, and the `resolveSupport` capability wasn't listed. Closes https://github.com/neovim/neovim/issues/32406
* feat(lsp): add select kind in showMessageRequest #32387Maria José Solano2025-02-13
|
* Merge #32426 fix(lsp): reset active request when reporting an errorJustin M. Keyes2025-02-13
|\
| * refactor(lsp): handling errors and nil responses togetherYi Ming2025-02-13
| |
| * fix(lsp): reset active request when reporting an errorYi Ming2025-02-13
| |
| * fix(lsp): missing method parameter when canceling requestsYi Ming2025-02-13
| |
* | fix(lsp): clear word when expand multi-lines word (#32393)glepnir2025-02-13
| | | | | | | | | | Problem: When expanding a completion item that contains a multi-line word, the word is not deleted correctly. Solution: If the word contains a line break, delete the text from Context.cursor to the current cursor position.
* | fix(lsp): autotrigger should only trigger on client's triggerCharacters (#32266)Robert Muir2025-02-13
|/ | | | | | | | | | | | Problem: autotrigger option of vim.lsp.completion.enable() would trigger all clients, as long as it matched at least one client's triggerCharacters. Solution: trigger only the clients with triggerCharacters matching the character. overtriggering still happens if any client returns isIncomplete=true (this case is more involved). Co-authored-by: Mathias Fussenegger <f.mathias@zignar.net>
* fix(lsp): on detach, cancel pending foldingRange requests #31509Yi Ming2025-02-12
| | | | | | | | | | | | | | | | | | | Problem: 1. Open a relatively large file (so the server needs some time to process the request). 2. Then immediately execute `:bdelete`. 3. Once the request is completed, the handler will obtain the bufstate of a buffer already unloaded. Error executing vim.schedule lua callback: ...7841_1/share/nvim/runtime/lua/vim/lsp/_folding_range.lua:119: assertion failed! stack traceback: [C]: in function 'assert' ...7841_1/share/nvim/runtime/lua/vim/lsp/_folding_range.lua:119: in function 'multi_handler' ...7841_1/share/nvim/runtime/lua/vim/lsp/_folding_range.lua:140: in function 'handler' ...HEAD-c137841_1/share/nvim/runtime/lua/vim/lsp/client.lua:669: in function '' vim/_editor.lua: in function <vim/_editor.lua:0> Solution: On detach, cancel all pending textDocument_foldingRange requests.
* feat(lsp)!: `symbol_to_item` requires `offset_encoding`Yi Ming2025-02-11
|
* feat(lsp): include `end_col` and `end_lnum` in `vim.lsp.buf.symbols_to_items`Yi Ming2025-02-11
|
* fix(lsp): signature_help highlights wrong parameter #32382Shantanu Raj2025-02-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: With some LSP servers, `vim.lsp.buf.signature_help` (CTRL-s in insert-mode) highlights the first parameter regardless of the current cursor position. - On some lsps the `textDocument/signatureHelp` response only includes the `activeParameter` field on the `lsp.SignatureHelp` object. ```lua { { result = { activeParameter = 2, signatures = { { documentation = { kind = "markdown", value = "" }, label = "getBuyers(ctx context.Context, orderDB boil.ContextExecutor, supplierID string) ([]*BuyerWithLocation, error)", parameters = { { label = "ctx context.Context" }, { label = "orderDB boil.ContextExecutor" }, { label = "supplierID string" } } } } } } } ``` Solution: Ensure we retain this information before showing the signature information. Closes #32381