aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/lsp
Commit message (Collapse)AuthorAge
* refactor(lsp/rpc): move transport logic to separate moduleLewis Russell2024-12-12
|
* feat(lsp): add vim.lsp.config and vim.lsp.enableLewis Russell2024-12-10
| | | | | | | | | | | | | | | | | | | | Design goals/requirements: - Default configuration of a server can be distributed across multiple sources. - And via RTP discovery. - Default configuration can be specified for all servers. - Configuration _can_ be project specific. Solution: - Two new API's: - `vim.lsp.config(name, cfg)`: - Used to define default configurations for servers of name. - Can be used like a table or called as a function. - Use `vim.lsp.confg('*', cfg)` to specify default config for all servers. - `vim.lsp.enable(name)` - Used to enable servers of name. Uses configuration defined via `vim.lsp.config()`.
* refactor(lsp): better tracking of requestsLewis Russell2024-12-08
| | | | | Not essential, but adds robustness and hardening for future changes.
* refactor: add vim._resolve_bufnrLewis Russell2024-12-07
|
* fix(lsp): cancel pending requests before refreshingtris2032024-12-07
| | | | | | | | | | | Problem: Diagnostics and inlay hints can be expensive to calculate, and we shouldn't stack them as this can cause noticeable lag. Solution: Check for duplicate inflight requests and cancel them before issuing a new one. This ensures that only the latest request is processed, improving performance and preventing potential conflicts.
* fix(lsp): check for configuration workspace folders when reusing clientsMaria José Solano2024-12-07
|
* fix(lsp): add foldingrange method support check #31463Tristan Knight2024-12-06
| | | | | | Problem: The folding_range request method assumes that the client supports the method Solution: Add a capability guard to the call
* feat(lsp): deprecate vim.lsp.start_client #31341Maria José Solano2024-12-04
| | | | | | | | Problem: LSP module has multiple "start" interfaces. Solution: - Enhance vim.lsp.start - Deprecate vim.lsp.start_client
* feat(lsp): support `textDocument/foldingRange` (#31311)Yi Ming2024-11-29
| | | | | | | | | | | | | | | | | | | * refactor(shared): extract `vim._list_insert` and `vim._list_remove` * feat(lsp): add `vim.lsp.foldexpr()` * docs(lsp): add a todo for state management * feat(lsp): add `vim.lsp.folding_range.foldclose()` * feat(lsp): schedule `foldclose()` if the buffer is not up-to-date * feat(lsp): add `vim.lsp.foldtext()` * feat(lsp): support multiple folding range providers * refactor(lsp): expose all folding related functions under `vim.lsp.*` * perf(lsp): add `lsp.MultiHandler` for do `foldupdate()` only once
* docs(lsp): update example, optional parameters #31299Yi Ming2024-11-28
|
* docs: more accurate typing for LSP references contextRiley Bruins2024-11-28
| | | | | | | **Problem:** The `context` parameter for `references()` is just typed as a table, which is unhelpful. **Solution:** Properly type it as an `lsp.ReferenceContext`!
* fix(lsp): mention function name in warning #31301glepnir2024-11-27
| | | | | | Problem: The warning message is the same in different functions. It is not convenient to locate the specific function name Solution: add function name in warning message
* fix(lsp): retrigger diagnostics request on server cancellation (#31345)Gregory Anders2024-11-25
| | | Co-authored-by: Jesse <github@jessebakker.com>
* refactor(lsp): rename `offset_encoding` to `position_encoding` #31286Yi Ming2024-11-25
| | | | | | | | Problem: LSP spec uses the term "position encoding" where we say "offset encoding". Solution: - Rename it everywhere except `vim.lsp.Client.offset_encoding` (which would be breaking). - Mention "position encoding" in the documentation for `vim.lsp.Client.offset_encoding`.
* fix(lsp): delete bufvar inside WinClosed eventglepnir2024-11-24
| | | | | | | | Problem: floaing preview window can be closed by some ex commands like `only` `fclose` which will not clean the bufvar Solution: use WinClosed event with floating_winnr for clean bufnr, and add test cases for vim.lsp.util.open_floating_preview
* fix(lsp): delete b:lsp_floating_preview buf var after win closeglepnir2024-11-22
| | | | | | Problem: After floating preview window closed the buf var still exist Solution: delete after floating window closed.
* feat(lsp): require `offset_encoding` param #31249Yi Ming2024-11-20
| | | | | | | | | | | | | | | | | | | | | | | | Problem: Since [version 3.17](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocuments), LSP supports specifying the position encoding (aka offset encoding) supported by the client through `positionEncoding`. Since #31209, Nvim fully supports `utf-8`, `utf-16`, and `utf-32` encodings. Previously, nvim assumed all clients for a buffer had the same `offset_encoding`, so: * Nvim provides `vim.lsp._get_offset_encoding()` to get `offset_encoding`, but this function is incorrect because `offset_encoding` is per-client, not per-buffer. * Based on the strategy of `vim.lsp._get_offset_encoding()`, `vim.lsp.util.make_position_params()`, `vim.lsp.util.make_range_params()`, and `vim.lsp.util.make_given_range_params()` do not require the caller to pass `offset_encoding`, which is invalid. * https://github.com/neovim/neovim/issues/25272 Solution: * Mark `vim.lsp._get_offset_encoding()` as `@deprecated`. * Change the type annotations of `vim.lsp.util.make_position_params()`, `vim.lsp.util.make_range_params()`, `vim.lsp.util.make_given_range_params()` to require the `offset_encoding` param.
* feat(lsp): deprecate non-method client functionsLewis Russell2024-11-20
| | | | | | | | | | | | | | Deprecated: - `client.request()` -> `client:request()` - `client.request_sync()` -> `client:request_sync()` - `client.notify()` -> `client:notify()` - `client.cancel_request()` -> `client:cancel_request()` - `client.stop()` -> `client:stop()` - `client.is_stopped()` `client:is_stopped()` - `client.supports_method()` -> `client:supports_method()` - `client.on_attach()` -> `client:on_attach()` Fixed docgen to link class fields to the full function doc.
* fix(lsp): restore get_language_id behaviourLewis Russell2024-11-19
| | | | | | Ensure filetype is always passed. Fixes #31262
* refactor(lsp): fold in dynamic_registration code into the clientLewis Russell2024-11-18
| | | | | | | | | | | Problem: Capability register logic is spread across 3 files. Solution: - Consolidate (and simplify) logic into the client. - Teach client.supports_method about resolve methods
* fix(api): only flush nvim__redraw when necessary #31250luukvbaal2024-11-18
| | | | | | | | Problem: Not possible to only set a "redraw later" type with nvim__redraw, which seems to be desired for the treesitter highlighter. Solution: Do not update the screen when "flush" is explicitly set to false and only redraw later types are present. In that case, do not call ui_flush() either.
* feat(lsp): highlight hover target/range #31110Riley Bruins2024-11-17
| | | | | | | | | | **Problem:** Despite the LSP providing the option for language servers to specify a range with a hover response (for highlighting), Neovim does not give the option to highlight this range. **Solution:** Add an option to `buf.hover()` which causes this range to be highlighted. Co-authored-by: Mathias Fußenegger <mfussenegger@users.noreply.github.com>
* fix(lsp): type-errors, other nits in vim.lsp.log #31235Maria José Solano2024-11-16
|
* feat(lsp): support utf-8 and utf-32 position encodingsLewis Russell2024-11-14
| | | | Resolves #30034
* fix(lsp): filter completion candidates based on completeopt (#30945)Kristijan Husak2024-11-13
|
* refactor(lsp): avoid redundant function wrappingNicolas Hillegeer2024-11-12
| | | | Leftover from #21026.
* perf(lsp): use faster version of str_byteindexLewis Russell2024-11-11
|
* refactor(lsp): simplify reference range logicRiley Bruins2024-11-10
|
* fix(lsp): fix infinite loopLewis Russell2024-11-09
| | | | Fixes #31129
* perf(lsp): do not apply semantic tokens to folded linesLewis Russell2024-11-08
| | | | Fixes #31106
* feat(lsp): multi-client support for signature_helpLewis Russell2024-11-04
| | | | | Signatures can be cycled using `<C-s>` when the user enters the floating window.
* feat(lsp)!: remove client-server handlers from vim.lsp.handlersLewis Russell2024-11-01
| | | | | | | | | | - Partition the handlers in vim.lsp.handlers as: - client to server response handlers (RCS) - server to client request handlers (RSC) - server to client notification handlers (NSC) Note use string indexes instead of protocol.methods for improved typing in LuaLS (tip: use hover on RCS, RSC or NSC).
* fix(lsp): hover border type can be string (#31013)nikolightsaber2024-11-01
| | | | | Border type can also be a string as defined in `api-win_config` Co-authored-by: Nikolai Devolder <nikolai.devolder@yamabiko.eu>
* fix(lsp): correct hover result handling (#30995)notomo2024-10-30
| | | | | | | Problem: vim.lsp.buf.hover() displays "No information available" when client_id is not 1. Solution: use vim.tbl_isempty(tbl) instead of #tbl==0
* Merge pull request #30935 from lewis6991/feat/lsp_multi_hoverLewis Russell2024-10-29
|\
| * feat(lsp)!: multiple client support for vim.lsp.buf.hover()Lewis Russell2024-10-29
| | | | | | | | Deprecate `vim.lsp.handlers.hover` and `vim.lsp.handlers['textDocument/hover']`
* | fix(lsp): list all workspace folders in healthcheck #30966Maria José Solano2024-10-28
| |
* | docs(lsp): document alternative for vim.lsp.util.jump_to_locationMaria José Solano2024-10-27
| |
* | refactor(lsp): drop str_byteindex/str_utfindex wrappers #30915Tristan Knight2024-10-26
|/ | | | | * deprecate old signatures * move to new str_byteindex/str_utfindex signature * use single-underscore name (double-underscore is reserved for Lua itself)
* feat(lsp): deprecate vim.lsp.buf.completionLewis Russell2024-10-24
| | | | Use `vim.lsp.completion.trigger()` instead'
* feat(lsp): deprecate execute_command with client:exec_cmdLewis Russell2024-10-24
|
* fix(lsp): better multi-client support for callHierarchyLewis Russell2024-10-24
| | | | | | | | Only ever display a dialogue box once. Switch from vim.fn.inpulist to vim.ui.select refactor(lsp): merge call and type hierarchy functions
* fix(lsp): use correct method for prepareTypehierarchyLewis Russell2024-10-24
| | | | Regression from #30902
* fix(lsp): set tagstack on jump via goto methodsMathias Fussenegger2024-10-24
| | | | | Follow up to https://github.com/neovim/neovim/pull/30877 Fixes https://github.com/neovim/neovim/issues/30926
* fix(lsp.buf): use correct offset_encoding for all requestsLewis Russell2024-10-24
| | | | | | | | | | | | | | | Problem: `lsp.buf_request` send the same params to all servers and many calls to this pass PositionalParams which depends on the clients offset_encoding. This can result with incorrect params being sent to a server. Solution: `lsp.buf_request` `params` argument can now be passed as a function which takes the client as the first argument. This is used in lsp/buf.lua to construct correct params for each client request.
* fix(lsp.protocal): improve typing of constantsLewis Russell2024-10-24
|
* refactor(lsp.buf): remove buf_request wrapperLewis Russell2024-10-24
|
* refactor(lsp.buf): use alias for vim.lspLewis Russell2024-10-24
|
* fix(lsp): handle mixed encoding in tagfunc paramsMathias Fussenegger2024-10-24
| | | | Relates to https://github.com/neovim/neovim/issues/30034
* fix(lsp): support multiple clients in typehierarchyLewis Russell2024-10-22
|