aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/lsp
Commit message (Collapse)AuthorAge
* doc: Fix incorrect LSP diagnostic-related helptags (#13388)Kevin Fleming2020-12-09
|
* doc: Add missing parameter end_pos for range_formatting (#13481)Olivier Roques2020-12-09
|
* feat: Allow incremental sync & lsp flags (#13371)TJ DeVries2020-12-08
|
* lsp: Change diagnosticg.get_all to return {bufnr: Diagnostic[]} (#13310)Mathias Fußenegger2020-12-03
| | | Allows users to associate the diagnostics with the right bufnr.
* lsp: Make open_floating_preview buffers ephemeral (#13437)runiq2020-12-03
| | | Fixes #13429.
* lsp: Reduce memory usage for buffering the message from LSP.Yuki Ito2020-11-29
|
* use if_nil variable replace vim.F.if_nilRaphael2020-11-26
|
* Lsp: fix vim.F.ifnil to vim.F.if_nil (#13384)Raphael2020-11-25
|
* LSP: Feature/add workspace folders (#12638)Michael Lingelbach2020-11-25
| | | | | | | | | | | * First implementation of workspace folders * Add completion for current directory * Add tracking of workspace folders * Add workspace folder listing * Add checks on adding/removing workspaces * Add appropriate initialization options * Add documentation * Make workspaceFolders available wherever client is
* lsp: Expose all diagnostics (#13285)Mathias Fußenegger2020-11-14
| | | | | | | | | | | | | | | * lsp: Remove duplicate `diagnostics` fallback in diagnostic.display * lsp: Expose all diagnostics Before the changes in #12655 it was possible to retrieve all diagnostics via `vim.lsp.util.diagnostics_by_buf`. This adds a `diagnostic.get_all()` to enable users to retrieve all diagnostics. Use cases for that could include loading all diagnostics into the quickfix list, or to build an enhanced goto_next that can move across buffers.
* doc: fixup sign information (#13281)TJ DeVries2020-11-13
| | | Thanks to @sunzoje for finding the outdated documentation.
* 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)
* lsp: fix formatting_sync with multiple clients (#13233)francisco souza2020-11-07
| | | | | | | | buf_request_sync returns a table indexed by the client id, so when starting a second client on a separate buffer, result[1] will be nil. Closes #13232. Co-authored-by: francisco souza <fsouza@users.noreply.github.com>
* lsp: remove vim.NIL from processing (#13174)TJ DeVries2020-11-02
| | | | | * lsp: remove vim.NIL from processing * lsp: remove instances of vim.NIL
* lsp: complete support for `CodeActionKind`s to capabilities (#13180)Jesse2020-11-01
| | | | | We support applying all kinds in the spec equivalently and some servers (including dartls) won't send code actions if support for the relevant kinds is not explicitly stated in the client capabilities. Therefore, this PR makes that support explicit. Also, as we support all CodeActionKinds, we should also mark the server as supporting code actions when it specifies code action kinds. This is also done in this PR.
* lsp: Remove snippet lies (#13183)TJ DeVries2020-10-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | We don't actually support snippets in core in the way that users would truly expect. So, by default, we will not say that builtin-lsp has `snippetSupport`. To re-enable, users can do the following: First, get a capabilities dictionary with `local capabilities = vim.lsp.protocol.make_client_capabilities()` Then override `capabilities.textDocument.completion.completionItem.snippetSupport = true` and then pass those capabilties to the setup function. ``` nvim_lsp.server_name.setup { ..., capabilities = capabilities, ..., } ``` See https://github.com/neovim/neovim/issues/12795
* lsp: Fix case where active_signature == vim.NIL (#13114)Michael Lingelbach2020-10-27
|
* lsp: Store diagnostics for unloaded buffers (#13102)Mathias Fußenegger2020-10-25
| | | | | | | | | | | | | | | | | | | | | | To avoid loading buffers https://github.com/neovim/neovim/pull/12440 changed the logic to not process diagnostics for unloaded buffers. This is problematic for language servers where compile errors or build errors are reported via diagnostics. These errors may prevent the language server from providing all functions and it is difficult for users to debug it without having access to the errors. For example, with eclipse.jdt.ls there may be a problem with gradle (the build tool for java), it results in a diagnostics like this: org.gradle.toolingapi/build.gradle|1 col 1| Could not run build action using Gradle distribution 'https://services.gradle.org/distributions/gradle-4.8.1-bin.zip'. This would be invisible to users unless the user happens to open the right file. In this case the user would actually never see the error, because the language server isn't attached to the build configuration files. This changes the behaviour to at least store the diagnostics. The other operations which are more expensive are still skipped.
* 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>
* Opts.wrap_at is sometimes a bool, ensure it falls back to a valid number in ↵Tony Kuneck2020-10-04
| | | | the call to math.min
* LSP: Fix separator width on hover (fixes #13006, #12998) (#13007)Christian Clason2020-09-30
| | | | * fix insert_separator conditional * only draw separator over wrapped width
* lsp: Add vim.lsp.buf.range_code_action() (#12962)notomo2020-09-24
| | | | | Allows to execute code_action for a given range. :'<,'>lua vim.lsp.buf.range_code_action()
* lsp: Handle ContentModified the same way as RequestCancelled (#12803)Rasmus Ishøy Michelsen2020-09-22
| | | | | * Added the ContentModified error to be hidden from users, like RequestCancelled * Fixed tests (and ill-formed lua code) * Simplified if-expression
* lsp: remove popup No signature available. (#12915)Raphael2020-09-18
| | | | | | | | | | | | * lsp: remove popup No signature available. If no signatures. we shouldn't popup No signature available ..It will make noise when use ` api.nvim_command("autocmd CompleteDone <buffer> lua vim.lsp.buf.signature_help()")` * fix ci test failed remove whitespace * print message when no signature help * Add comment
* lsp: fix failed switch window error (#12900)Raphael2020-09-14
| | | | | * fix failed switch window error * checks if window already exists
* lsp: fix lsp.buf.formatting_sync() null response (#12752)beardedsakimonkey2020-09-12
| | | Co-authored-by: tim apple <tim@tims-MacBook-Pro.local>
* lsp: Fix parameter markdown rendering for signature help (#12832)Xuyuan Pang2020-09-12
|
* Merge #12468 'lsp: logging'Justin M. Keyes2020-09-01
|\
| * lsp: remove output log at rpc.notifyHirokazu Hata2020-08-26
| | | | | | | | Since "rpc.send.payload" outputs the log with almost the same contents, delete the output here.
* | lsp/make_position_param(): handle empty buffer #12825Gıyaseddin Tanrıkulu2020-09-01
| | | | | | | | | | | | | | | | | | | | | | Fix #12623 problem: nvim_buf_get_lines(0) returns empty during startup, where no buffers are loaded yet. solution: return empty object Happens during startup, where buffer may not be loaded yet, because... `source_startup_scripts()` is done before `edit_buffers()`: https://github.com/neovim/neovim/blob/9bb552875d205d2f869c66137563f93b77a6d08e/src/nvim/main.c#L362 https://github.com/neovim/neovim/blob/9bb552875d205d2f869c66137563f93b77a6d08e/src/nvim/main.c#L480
* | 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
* Add FIXMEsPatrice Peterson2020-08-23
|
* Add docs for most vim.lsp methodsPatrice Peterson2020-08-23
| | | | Most of the lsp.log will be addressed in a separate PR.
* Remove unused function (#12719)Patrice Peterson2020-08-08
|
* Revert "lsp: Fix text edits with the same start position (#12434)" (#12564)Andreas Johansson2020-07-30
| | | This reverts commit 44fe8828f06a22bc9aa3617a6fd8aae447a838de.
* Make the window `nomodifiable` when it's createdCédric Barreteau2020-07-20
|
* LSP: make the hover window nomodifiableCédric Barreteau2020-07-20
|
* doc: Add documentation for some `vim.lsp.buf` functions (#12552)cbarrete2020-07-19
| | | | | | | | | * Add documentation for some `vim.lsp.buf` functions * Add inline Lua documentation * Use generated documentation for LSP buffer functions Co-authored-by: Cédric Barreteau <>
* 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: add optional vertical padding, maximal size to floats (#12444)Christian Clason2020-07-05
| | | | | | | | | | | * add vertical padding to floats * add max_width, max_height option to float methods * lint * lintlint * guard against nil wrap_at
* doc: fix scripts and regenerate (#12506)TJ DeVries2020-07-02
| | | | | | | | | | | | | | | | | * Fix some small doc issues * doc: fixup * doc: fixup * Fix lint and rebase * Remove bad advice * Ugh, stupid mpack files... * Don't let people include these for now until they specifically want to * Prevent duplicate tag
* 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: Set current name as default rename text (#12553)cbarrete2020-06-27
| | | | | | Since we don't know what the server considers to be a symbol, `cword` is the best bet in most cases. Co-authored-by: Cédric Barreteau <>
* Merge pull request #12252 from dlukes/formatting-syncHirokazu Hata2020-06-27
|\
| * 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: when apply text edits, set buflisted on buffers (#12489)francisco souza2020-06-23
|/ | | | | | | | | | | The client creates buffers on the fly to be able to apply text edits on files that weren't previously open, which is great, but it uses the bufadd() function, which creates unlisted buffers and can lead to a weird experience in the text editor. Setting the buffer to buflisted fixes this. Closes #12488. Co-authored-by: francisco souza <fsouza@users.noreply.github.com>
* 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
* lsp: Add `BufLeave` to `close_preview_autocmd` function call (#12477)Dheepak Krishnamurthy2020-06-12
| | | else popup window remains open when switching buffer.
* lsp: Fix #12449 textDocumentSync.save can be boolean. Access ↵Stephan Seitz2020-06-11
| | | | textDocumentSync.save.includeText only if table. (#12450)