aboutsummaryrefslogtreecommitdiff
path: root/test/functional/plugin
Commit message (Collapse)AuthorAge
* 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
* Revert "lsp: Fix text edits with the same start position (#12434)" (#12564)Andreas Johansson2020-07-30
| | | This reverts commit 44fe8828f06a22bc9aa3617a6fd8aae447a838de.
* lsp: Add support for call hierarchies (#12556)cbarrete2020-07-18
| | | | | | | | | | | | | | | | | | * LSP: Add support for call hierarchies * LSP: Add support for call hierarchies * LSP: Add support for call hierarchies * LSP: Jump to call location Jump to the call site instead of jumping to the definition of the caller/callee. * LSP: add tests for the call hierarchy callbacks * Fix linting error Co-authored-by: Cédric Barreteau <>
* lsp: Use nvim_buf_get_lines in locations_to_items and add more tests (#12357)Mathias Fußenegger2020-06-30
| | | | | | | | | | | | | | | * LSP: Add tests & use nvim_buf_get_lines in locations_to_items This is to add support for cases where the server returns a URI in the locations that does not have a file scheme but needs to be loaded via a BufReadCmd event. * LSP: Don't iterate through all lines in locations_to_items * fixup! LSP: Don't iterate through all lines in locations_to_items * fixup! fixup! LSP: Don't iterate through all lines in locations_to_items * fixup! fixup! fixup! LSP: Don't iterate through all lines in locations_to_items
* lsp: Add sync variant of LSP formattingDavid Lukes2020-06-22
| | | | | Also, factor out a `vim.lsp.util.get_effective_tabstop()` helper and add tests for it.
* lsp: Add new highlight groups used in show_line_diagnostics (#12473)francisco souza2020-06-18
| | | | | | | | | * lsp: support custom hl groups in show_line_diagnostics Closes #12472. * runtime: add docs for the new lsp highlight groups Co-authored-by: francisco souza <fsouza@users.noreply.github.com>
* lsp: Fix text edits with the same start position (#12434)Andreas Johansson2020-06-14
| | | | | | | | | | According to the LSP spec[1], multiple edits can have the same starting position, and if that is the case, they should be applied in the order as they come in the array. The implementation uses a reverse sort to not interfere with non applied edits, but failed to take into account the spec. [1] https://microsoft.github.io/language-server-protocol/specifications/specification-3-14/#textedit
* test: Fix ignored LSP tests (#12470)David Lukes2020-06-11
| | | | | | | | | * Fix ignored LSP tests * Restructure _make_floating_popup_size tests Co-authored-by: Christian Clason <christian.clason@uni-due.de> Co-authored-by: Christian Clason <christian.clason@uni-due.de>
* lsp: compute height of floating preview correctly for wrapped lines (#12380)Christian Clason2020-06-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | * take wrapping into account when computing float height * factor out size calculation * add test * accept and pass through opts.wrap_at in floating_preview * make padding configurable * slightly refactor fancy_floating_markdown to make use of make_position * padding using string.format * move trim and pad to separate function * nit Co-authored-by: Hirokazu Hata <h.hata.ai.t@gmail.com> * remove mention of backward compat * make lint happy Co-authored-by: Hirokazu Hata <h.hata.ai.t@gmail.com>
* lua: fix behavior when split empty string (#12429)notomo2020-06-04
| | | | | * lua: fix behavior when split empty string * test: lsp.util.apply_text_edits with an empty edit
* Merge pull request #12343 from ndreas/fix/lsp-multibyte-indexingHirokazu Hata2020-06-04
|\ | | | | Fix LSP multibyte indexing
| * Add tests for jump_to_locationAndreas Johansson2020-05-19
| |
* | lua: simple snippet support in the completion items (#12118)Viktor Kojouharov2020-05-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Old behavior is: foo(${placeholder: bar, ...) with lots of random garbage you'd never want inserted. New behavior is: foo(bar, baz) (which maybe is good, maybe is bad [depends on user], but definitely better than it was). ----- * Implement rudimentary snippet parsing Add support for parsing and discarding snippet tokens from the completion items. Fixes #11982 * Enable snippet support * Functional tests for snippet parsing Add simplified real-world snippet text examples to the completion items test * Add a test for nested snippet tokens * Remove TODO comment * Return the unmodified item if the format is plain text * Add a plain text completion item
* | lsp: make the command error message more detailed (#11633)Hirokazu Hata2020-05-26
|/ | | | | * lsp.lua: make the error message more detailed * test: add lsp._cmd_part test
* lsp: Handle end lines in apply_text_edits (#12314)Andreas Johansson2020-05-17
| | | | | | If the LSP sends an end line that is larger than what nvim considers to be the last line, you get an Index out of bounds error when fetching the line from nvim, a change that was introduced in #12223. This change removes the strict indexing and checks the return value from nvim_buf_get_lines.
* lsp: fix bug when documentEdit version=null for unattached buffer (#12272)landerlo2020-05-13
|
* LSP: Make applyEdit return a response (#12270)Mathias Fußenegger2020-05-11
| | | | | | | | According to the specification workspace/applyEdit needs to respond with a `ApplyWorkspaceEditResponse` See https://microsoft.github.io/language-server-protocol/specifications/specification-current/#workspace_applyEdit This is a subset of https://github.com/neovim/neovim/pull/11607
* lsp: Make apply_text_edits non-ASCII safe (#12223)Christian Clason2020-05-08
| | | | | | | | | | | | | | | * Make apply_text_edits non-ASCII safe Use `vim.str_byteindex` to correct starting and ending positions for text edits if the line contains non-ASCII characters. Fixes #12221 * text_edit may be applied to other buffers * make sure the buffer is loaded * add comments * add test for non-ASCII edits
* lsp: Handle unknown CompletionItemKind and SymbolKind (#12257)Hirokazu Hata2020-05-07
| | | | | | | | | | | * lsp: handle kinds not specified in protocol fix: #12200 If the client set "symbolKind.valueSet", the client must handle it properly even if it receives a value outside the specification. * test: add lsp.util.{get_completion_item_kind_name, get_symbol_kind_name} test case * lsp: make lsp.util.{get_completion_item_kind_name, get_symbol_kind_name} private
* Merge pull request #12237 from h-michael/vim-nilMatthieu Coudron2020-05-04
|\ | | | | lsp: text_document.version may be vim.NIL not nil
| * lsp: add a lsp.util.apply_text_edits test(pending)Hirokazu Hata2020-05-04
| | | | | | | | | | We don't handle non-ASCII characters well in UTF-16. So I add a non-ASCII characters test case.
| * lsp: fix apply_text_document_edit testHirokazu Hata2020-05-04
| | | | | | | | | | | | lsp.util.buf_versions must be set in advance. Use helper.insert to create an anonymous buffer, so create a named buffer for testing without using insert.
| * [LSP] check for vim.NIL and add apply_text_document_edit testsckipp012020-05-01
| |
* | lsp: add lsp.util.symbols_to_items testHirokazu Hata2020-05-02
|/
* Merge pull request #12204 from archseer/lsp-user-dataMatthieu Coudron2020-04-30
|\ | | | | lsp/completion: Expose completion_item under completed_items.user_data + vim-patch:8.2.0084
| * lsp/completion: Expose completion_item under completed_items.user_data.Blaž Hrastnik2020-04-29
| | | | | | | | | | By passing through completion_item it's now possible for snippet plugins to add LSP snippet support.
* | LSP: enable using different highlighting rules for LSP signs (#12176)Ghjuvan Lacambre2020-04-29
|/ | | | | | | | | | | | | This commit creates 4 new highlight groups: - LspDiagnosticsErrorSign - LspDiagnosticsWarningSign - LspDiagnosticsInformationSign - LspDiagnosticsHintSign These highlight groups are linked to their corresponding LspDiagnostics highlight groups by default. This lets users choose a different color for their sign columns and virtualtext diagnostics.
* LSP: Fix show_line_diagnostics #12186Mathias Fußenegger2020-04-26
| | | Messed this up in ef0398fe88e6cc74f33fb20519997774168d7832
* LSP: Expose diagnostics grouped by bufnr (#11932)Mathias Fußenegger2020-04-25
| | | | | | | | | Expose `vim.lsp.buf.diagnostics_by_buf` This makes it easier to customize the diagnostics behavior. For example to defer the update they can override the `textDocument/publishDiagnostics` callback to only call `buf_diagnostics_save_positions` and then defer the other actions to a autocmd event.
* test: add docs for get_completion_word testAndrey Avramenko2020-04-20
|
* test: add get_completion_word test for text_doc...Andrey Avramenko2020-04-20
| | | | ...ument_completion_list_to_complete_items
* lsp: add 'textDocument/documentSymbol’ callbackHirokazu Hata2020-03-01
| | | | Spec: https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_documentSymbol
* test: always dump logs on failure #11886Justin M. Keyes2020-02-16
| | | | | Whenever `eq()`, `ok()`, etc. fails, include log tail in the failure message. This helps to correlate log messages with a particular test failure.
* test/LSP: assert contents of log fileJustin M. Keyes2020-02-16
|
* test/LSP: dump logs on errorJustin M. Keyes2020-02-16
| | | | | | This will help debug CI flakey failures. TODO: helpers.assert_log() -- Explicitly check contents of the logfile.
* LSP: fix validate_client_configJustin M. Keyes2020-02-16
| | | | | - `cmd_env` is a table not a function. - tests: Set $NVIM_LOG_FILE for fake LSP server.
* test/LSP: use less-generic exit codeJustin M. Keyes2020-02-16
| | | | | | | | | | | | | | | | | | | | | - os.exit(1) is too generic, since code 1 may be caused by Nvim exiting for some other reason. Change it to os.exit(101). - style: de-architect json_encode/json_decode calls. Failure seen in travis macOS job: https://travis-ci.org/neovim/neovim/jobs/647849133 [ FAILED ] test/functional/plugin/lsp_spec.lua@ 266 SP basic_init test should not send didOpen if the buffer closes before init test/functional/plugin/lsp_spec.lua:297: exit code Expected objects to be the same. Passed in: (number) 1 Expected: (number) 0 stack traceback: test/functional/plugin/lsp_spec.lua:297: in function 'on_exit' test/functional/plugin/lsp_spec.lua:100: in function 'test_rpc_server' test/functional/plugin/lsp_spec.lua:272: in function <test/functional/plugin/lsp_spec.lua:266>
* test: styleJustin M. Keyes2020-02-16
|
* LSP: highlight groups test, docJustin M. Keyes2020-01-08
|
* test: hoist buf_lines()Justin M. Keyes2020-01-08
|
* test: just say no to hyper-granularityJustin M. Keyes2020-01-08
| | | | | - Move plugin/lsp/* to plugin/* - Merge lsp/util_spec.lua into lsp_spec.lua
* LSP: eliminate lsp.stop_all_clients()Justin M. Keyes2019-12-31
| | | | | | Reduce API surface. We don't need so many variations of functions. Too many functions means verbose, largely redundant documentation, tests, and cognitive burden.
* Revert "runtime: Add vim.lsp.get_client_by_name" #11623Ashkan Kiani2019-12-29
| | | reverts 680693e263576e34d5947c43ab0ae3ff0ebfeab5 #11603
* runtime: Add vim.lsp.get_client_by_name (#11603)Hirokazu Hata2019-12-28
| | | | Since the client name is more obvious than the client id for the user, add an API to get the lsp client by the client name.
* LSP: Fix flaky test #11618Ashkan Kiani2019-12-27
|
* lualintAshkan Kiani2019-11-21
|
* UpdatesAshkan Kiani2019-11-21
| | | | | | | | - Use correct implementation of text_edits. - Send indent options to rangeFormatting and formatting. - Remove references to vim bindings and filetype from lsp.txt - Add more examples to docs. - Add before_init to allow changing initialize_params.
* lsp: transmit "\n" after last line when 'eol' is setBjörn Linse2019-11-21
| | | | | Otherwise some servers like clangd will emit spurious "no newline at end of file" warnings.
* lua LSP client: initial implementation (#11336)Ashkan Kiani2019-11-13
| | | | | | Mainly configuration and RPC infrastructure can be considered "done". Specific requests and their callbacks will be improved later (and also served by plugins). There are also some TODO:s for the client itself, like incremental updates. Co-authored by at-tjdevries and at-h-michael, with many review/suggestion contributions.
* tests/ui: remove unnecessary screen:detach()Björn Linse2019-10-13
| | | | | | | | | | | | | It is perfectly fine and expected to detach from the screen just by the UI disconnecting from nvim or exiting nvim. Just keep detach() in screen_basic_spec, to get some coverage of the detach method itself. This avoids hang on failure in many situations (though one could argue that detach() should be "fast", or at least "as fast as resize", which works in press-return already). Never use detach() just to change the size of the screen, try_resize() method exists for that specifically.