aboutsummaryrefslogtreecommitdiff
path: root/test/functional/plugin/lsp_spec.lua
Commit message (Collapse)AuthorAge
* feat(lsp): add a registry for client side code action commandsMathias Fussenegger2021-09-20
| | | | | This builds on https://github.com/neovim/neovim/pull/14112 and closes https://github.com/neovim/neovim/issues/12326
* feat(lsp): include original request params in handler ctxMathias Fussenegger2021-09-20
| | | | | | | | | | | This is mostly motivated by https://github.com/neovim/neovim/issues/12326 Client side commands might need to access the original request parameters. Currently this is already possible by using closures with `vim.lsp.buf_request`, but the global handlers so far couldn't access the request parameters.
* feat(lsp): improve vim.lsp.util.apply_text_edits (#15561)hrsh7th2021-09-18
| | | | | - Fix the cursor position after applying TextEdits - Support reversed range of TextEdit - Invoke nvim_buf_set_text one by one
* refactor: move vim.lsp.diagnostic to vim.diagnosticGregory Anders2021-09-15
| | | | | | | | | | | This generalizes diagnostic handling outside of just the scope of LSP. LSP clients are now a specific case of a diagnostic producer, but the diagnostic subsystem is decoupled from the LSP subsystem (or will be, eventually). More discussion at [1]. [1]: https://github.com/neovim/neovim/pull/15585
* fix(lsp): correctly parse LSP snippets #15579hrsh7th2021-09-14
| | | Fixes #15522
* feat(lsp): support textDocument/prepareRename (#15514)Zi How Poh2021-09-08
|
* fix(lsp): update workspace/applyEdit handler signature (#15573)Jose Alvarez2021-09-05
|
* Merge pull request #15504 from mjlbach/feat/change-handler-signatureMichael Lingelbach2021-09-05
|\ | | | | feat(lsp)!: change handler signature
| * feat(lsp)!: change handler signatureMichael Lingelbach2021-09-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, the handler signature was: function(err, method, params, client_id, bufnr, config) In order to better support external plugins that wish to extend the protocol, there is other information which would be advantageous to forward to the client, such as the original params of the request that generated the callback. In order to do this, we would need to break symmetry of the handlers, to add an additional "params" as the 7th argument. Instead, this PR changes the signature of the handlers to: function(err, result, ctx, config) where ctx (the context) includes params, client_id, and bufnr. This also leaves flexibility for future use-cases. BREAKING_CHANGE: changes the signature of the built-in client handlers, requiring updating handler calls
* | feat(lsp): get_border_size(): support repeating border char list #15474zeertzjq2021-08-27
|/
* Merge pull request #15368 from jamessan/fragilityJames McCoy2021-08-14
|\ | | | | test(lsp): disable finicky test when TEST_SKIP_FRAGILE is set
| * test(lsp): disable finicky test when TEST_SKIP_FRAGILE is setJames McCoy2021-08-13
| |
* | fix(lsp): properly handle `nil` lines when trimming empty lines (#15325)Andrea Cappuccio2021-08-10
| |
* | fixup! vim-patch:8.2.3019: location list only has the start position.Jan Edmund Lazo2021-07-31
| |
* | fix(ci): disable broken test on openbsd on all CI due to resource constraintsBjörn Linse2021-07-23
| |
* | test(lsp): file URIs do not allow relative pathsAlessandro Pezzoni2021-07-10
|/
* fix(doc): remove reference to vim.lsp.callbacks (#14576)Matthieu Coudron2021-06-28
| | | | too old now, can be confusing
* fix(lsp): do not convert vim.NIL to nil in listsAkin Sowemimo2021-06-24
|
* fixup! vim-patch:8.2.3020: unreachable code (#14866)Matthieu Coudron2021-06-22
|
* Merge pull request #14563 from mjlbach/fix_intelephense_langserverMichael Lingelbach2021-05-19
|\ | | | | lsp: handle case where CompletionItem.insertTextFormat is nil
| * lsp: handle case where CompletionItem.insertTextFormat is nilMichael Lingelbach2021-05-16
| | | | | | | | * Update tests to use explicit insertTextFormat for snippets
* | test(lsp_spec): improve correctnessMarco Hinz2021-05-19
| | | | | | | | References https://github.com/neovim/neovim/issues/14571
* | Revert "lsp: make tagstack smarter motion-wise (#12262)"Marco Hinz2021-05-19
|/ | | | This reverts commit 8885ea7f244ee49b0018dc57be84917ea7886c2d.
* lsp: add a test for the jump_to_location + jump list fixfrancisco souza2021-05-06
|
* lsp: make tagstack smarter motion-wise (#12262)Gabriel Sanches2021-04-23
| | | | | | | | | | | This commit prevents two things regarding the tagstack and jumping to locations: - Pushing the same item twice in a row - Pushing an item where the destination is the same as the source Both prevent having to press CTRL-T additional times just to pop items that don't make the cursor move.
* lsp: Remove vim.NIL handling from apply_text_document_editMathias Fussenegger2021-04-14
| | | | | The rpc layer normalizes `vim.NIL` to `nil`, so the scenario tested should never happen.
* lsp: Accept text document edits with version zeroMathias Fussenegger2021-04-14
| | | | | | | | | | | | | | | | | | | | | There were a couple of reports of "Buffer X newer than edits" problems. We first assumed that it is incorrect for a server to send 0 as a version - and stated that they should send a `null` instead, given that in the specification the `textDocument` of a `TextDocumentEdit` is a `OptionalVersionedTextDocumentIdentifier`. But it turns out that this was a change in 3.16, and in 3.15 and earlier versions of the specification it was a `VersionedTextDocumentIdentifier` and language servers didn't have a better option than sending `0` if they don't keep track of the version numbers. So this changes the version check to always accept `0` values. See - https://github.com/neovim/neovim/issues/12970 - https://github.com/neovim/neovim/issues/14256 - https://github.com/haskell/haskell-language-server/pull/1727
* test/lsp: disable tracking in LSP tests (here be dragons)Björn Linse2021-04-03
|
* lsp: Add support for delete workspaceEdit resource operationMathias Fussenegger2021-03-18
|
* lsp: Add support for create workspaceEdit resource operationMathias Fussenegger2021-03-18
|
* lsp: Add support for file rename via workspaceEditMathias Fussenegger2021-03-18
|
* lsp: Resolve codeLense server capabilities (#14056)Josa Gesell2021-03-10
|
* Merge pull request #14079 from mjlbach/incremental_syncMichael Lingelbach2021-03-09
|\ | | | | lsp: add incremental text synchronization
| * lsp: add incremental text synchronizationMichael Lingelbach2021-03-09
| | | | | | | | | | * Implementation derived from and validated by vim-lsc authored by Nate Bosch
* | state: throttle batched event processing when input is availableBjörn Linse2021-03-08
|/ | | | | | | before, calling vim.schedule() from inside an event would execute the scheduled callback immediately after this event without checking for user input in between. Break event processing whenever user input or an interrupt is available.
* LSP: Resolve text_document_save capability according to specMathias Fussenegger2021-02-25
| | | | | Fixes https://github.com/neovim/neovim/issues/13989 See https://github.com/microsoft/language-server-protocol/issues/288
* lsp: remove deprecated references to 'callbacks' (#13945)Matthieu Coudron2021-02-23
| | | | | vim.lsp.callbacks was deprecated a few months ago. This is a cleanup before the release. Use vim.lsp.handlers instead.
* lsp: Fix text edits operating on the last line of a document (#13677)Mathias Fußenegger2021-02-19
| | | | | | `lines` can be empty, in which case `#lines[#lines]` failed with an error: lsp/util.lua:214: attempt to get length of a nil value
* lsp/tests: Ensure client is stopped in basic_init tests (#13798)Mathias Fußenegger2021-01-27
|
* LSP: Fix nil settings handling in workspace/configuration (#13708)Mathias Fußenegger2021-01-18
| | | | | | | | | The `workspace/configuration` handler could fail with the following error if `config.settings` is nil: runtime/lua/vim/lsp/util.lua:1432: attempt to index local 'settings' (a nil value)" This ensures that `config.settings` is always initialized to an empty table.
* fix(lsp): Allow subsequent text document edits to pass (#13534)TJ DeVries2021-01-11
| | | | | | | * fix: Allow subsequent text document edits to pass * fixup: cleaner code * add tests
* LSP: add test for workspace/configuration handlerMichael Lingelbach2021-01-01
|
* lsp: Fix "unsupported_method" error when the buffer does not have an LSP ↵eightpigs2020-12-03
| | | | Server (#13175)
* lsp: vim.lsp.diagnostic (#12655)TJ DeVries2020-11-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Breaking Changes: - Deprecated all `vim.lsp.util.{*diagnostics*}()` functions. - Instead, all functions must be found in vim.lsp.diagnostic - For now, they issue a warning ONCE per neovim session. In a "little while" we will remove them completely. - `vim.lsp.callbacks` has moved to `vim.lsp.handlers`. - For a "little while" we will just redirect `vim.lsp.callbacks` to `vim.lsp.handlers`. However, we will remove this at some point, so it is recommended that you change all of your references to `callbacks` into `handlers`. - This also means that for functions like |vim.lsp.start_client()| and similar, keyword style arguments have moved from "callbacks" to "handlers". Once again, these are currently being forward, but will cease to be forwarded in a "little while". - Changed the highlight groups for LspDiagnostic highlight as they were inconsistently named. - For more information, see |lsp-highlight-diagnostics| - Changed the sign group names as well, to be consistent with |lsp-highlight-diagnostics| General Enhancements: - Rewrote much of the getting started help document for lsp. It also provides a much nicer configuration strategy, so as to not recommend globally overwriting builtin neovim mappings. LSP Enhancements: - Introduced the concept of |lsp-handlers| which will allow much better customization for users without having to copy & paste entire files / functions / etc. Diagnostic Enhancements: - "goto next diagnostic" |vim.lsp.diagnostic.goto_next()| - "goto prev diagnostic" |vim.lsp.diagnostic.goto_prev()| - For each of the gotos, auto open diagnostics is available as a configuration option - Configurable diagnostic handling: - See |vim.lsp.diagnostic.on_publish_diagnostics()| - Delay display until after insert mode - Configure signs - Configure virtual text - Configure underline - Set the location list with the buffers diagnostics. - See |vim.lsp.diagnostic.set_loclist()| - Better performance for getting counts and line diagnostics - They are now cached on save, to enhance lookups. - Particularly useful for checking in statusline, etc. - Actual testing :) - See ./test/functional/plugin/lsp/diagnostic_spec.lua - Added `guisp` for underline highlighting NOTE: "a little while" means enough time to feel like most plugins and plugin authors have had a chance to refactor their code to use the updated calls. Then we will remove them completely. There is no need to keep them, because we don't have any released version of neovim that exposes these APIs. I'm trying to be nice to people following HEAD :) Co-authored: [Twitch Chat 2020](https://twitch.tv/teej_dv)
* lua: make vim.inspect available early so it can be used for path debuggingBjörn Linse2020-11-05
|
* lsp: fix fallback for callback in method_unsupportedfrancisco souza2020-10-25
| | | | Missed this #12764. My bad :((
* lsp: only send buf requests to servers that support the request (#12764)francisco souza2020-10-25
| | | | | | | | | | | | | Refactors how required capabilities are detected and validated, and make sure requests are only sent to clients that support it (and only fail if no clients support the provided method). The validation happens at the buf_request level, because we assume that if someone is sending the request directly through the client, they know what they're doing. Also, let unknown methods go through. This is extracted from #12518 and closes #12755. Co-authored-by: francisco souza <fsouza@users.noreply.github.com>
* test/vim.validate(): assert normalized stacktraceJustin M. Keyes2020-10-05
| | | | | | | - The previous commit lost information in the tests. Instead, add some more "normalization" substitutions in pcall_err(), so that the general shape of the stacktrace is included in the asserted text. - Eliminate contains(), it is redundant with matches()
* vim.validate(): include stacktrace in messageTJ DeVries2020-10-05
|
* lsp: Fix bad sortText comparison (#12485)Anmol Sethi2020-08-30
| | | | | | The spec indicates we have to fallback to comparing by label if sortText is falsy. Closes #12431