Commit Graph

427 Commits

Author SHA1 Message Date
github-actions[bot]
f365e68293 feat(lua): add notify_once() (#17010)
Like vim.notify(), but only displays the notification once.

This function prints a warning message to the user only once per Nvim
session. This is useful for things we want the user to see without being
overwhelmed with warning messages (for example, the deprecation messages
in LSP diagnostics).
2022-01-09 10:42:30 -07:00
github-actions[bot]
dd0d4fc666 fix(lsp): only send command and args in executeCommand (#17002)
(cherry picked from commit 2045479416)

Co-authored-by: Michael Lingelbach <m.j.lbach@gmail.com>
2022-01-08 11:25:44 -08:00
github-actions[bot]
e44f88bbe7 fix(lsp): resolve bufnr for get_lines (#16997)
Closes https://github.com/neovim/neovim/issues/16985

* get_lines checks if buf_loaded using bufnr 0, which is
  typically used as a sentinel value, but here must be resolved
  to the true bufnr

(cherry picked from commit 5ebb1951bc)

Co-authored-by: Michael Lingelbach <m.j.lbach@gmail.com>
2022-01-08 13:31:39 +01:00
github-actions[bot]
cebda91abb fix(lsp): always use target bufnr in location handler (#16880)
(cherry picked from commit ab8c22ab87)

Co-authored-by: Michael Lingelbach <m.j.lbach@gmail.com>
2022-01-02 09:42:50 -05:00
dundargoc
844872cc0a chore: fix typos in doc and Lua files
Co-authored-by: Gregory Anders <8965202+gpanders@users.noreply.github.com>
Co-authored-by: Evgeni Chasnovski <evgeni.chasnovski@gmail.com>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Co-authored-by: Christoph Hasse <hassec@users.noreply.github.com>
Co-authored-by: Alef Pereira <ealefpereira@gmail.com>
Co-authored-by: AusCyber <willp@outlook.com.au>
Co-authored-by: kylo252 <59826753+kylo252@users.noreply.github.com>
2021-12-29 17:02:46 +01:00
Michael Lingelbach
857678c2ec refactor(lsp): remove usage of deprecated function (#16787)
(cherry picked from commit bb31d3f21a)

Co-authored-by: Gregory Anders <greg@gpanders.com>
2021-12-25 11:42:29 -05:00
github-actions[bot]
03bd9147f0 fix(lsp): fix nil-index behavior for UTF-8 in _str_*index_enc methods (#16785)
Previously, the `_str_utfindex_enc` and `_str_byteindex_enc` helper functions would return `nil` when `offset_encoding == "utf-8"` and `index == nil`. Clearly, this doesn't reflect the expected behavior of the functions they're wrapping which would return the length of the line in this case. This should fix behavior with servers that use UTF-8 `offset_encoding` when applying text edits, formatting a range, and doing range code actions (though this isn't tested currently).

(cherry picked from commit 5f4c501cf1)

Co-authored-by: Rishikesh Vaishnav <rishhvaishnav@gmail.com>
2021-12-25 10:52:45 -05:00
github-actions[bot]
ee9e3420fd feat(lsp,diagnostic): open folds in jump-related functions (#16784)
(cherry picked from commit ddf545c152)

Co-authored-by: Dmytro Meleshko <dmytro.meleshko@gmail.com>
2021-12-25 10:43:28 -05:00
github-actions[bot]
7b60ec79ea fix(lsp): handle offset encoding (#16783)
Co-authored-by: black-desk <clx814727823@gmail.com>
Co-authored-by: Mathias Fußenegger <mfussenegger@users.noreply.github.com>
(cherry picked from commit 4687d853a5)

Co-authored-by: Rishikesh Vaishnav <rishhvaishnav@gmail.com>
2021-12-25 10:27:55 -05:00
github-actions[bot]
14357c83c5 feat(lsp): use vim.ui.select for selecting lsp client (#16782)
(cherry picked from commit 43cdcba476)

Co-authored-by: Anshuman <amedhi@connect.ust.hk>
2021-12-25 10:17:57 -05:00
github-actions[bot]
222d1414dc fix(lsp): correctly align start and end range to codepoints during incremental sync (#16670)
Closes #16624

Fixes two issues with aligning the start position and end position to
codepoints when calculating the start and end range.

When aligning the start position:
* use aligned byte index to calculate character index rather than 
  the unadjusted byte

When aligning the end position:
* do not adjust the end byte if it falls on a UTF-8 codepoint
* align byte to the first byte of the next codepoint rather than the
  last byte of the current codepoint
* compute character character end range on the aligned byte index

This commit also adds additional test coverage, including multibyte operations
that previously failed before this commit.
2021-12-21 09:24:50 -08:00
github-actions[bot]
785baceaee fix(ui): close floating window on BufLeave event (#16664)
When buffer is visible in two splits simultaneously, BufHidden event is
not triggered, causing the floating window to remain on screen after
switching to another buffer.

Remove BufHidden event from close_events defaults, and close the window
if we changed the buffer to something other than the buffer that spawned
the floating window or the floating window buffer itself.
2021-12-15 08:12:35 -07:00
github-actions[bot]
2cd272decb refactor: replace deprecated lua functions with their new versions (#16609)
Calling vim.lsp.buf.definition() sometimes gives a deprecation warning.
This will likely solve that.

Co-authored-by: Christian Clason <christian.clason@uni-due.de>
2021-12-10 13:24:49 -07:00
github-actions[bot]
ce4c8010cc docs(lsp): fix resolve_capabilities docstring (#16580) 2021-12-08 11:02:14 -07:00
github-actions[bot]
1d32521135 refactor(diagnostic): add warning to deprecated functions (#16575) 2021-12-08 09:15:24 -07:00
github-actions[bot]
fb11ef0aad fix(lsp): progress handlers should return vim.NIL on error (#16476) 2021-12-01 07:17:15 -05:00
Michael Lingelbach
04c7b55038 fix(lsp): change rpc start notify level to warn (#16467)
This is less obtrusive, and does not require a confirmation to dismiss
2021-11-30 09:55:42 +01:00
Björn Linse
f5fb79733e Merge pull request #16460 from dundargoc/chore/typos
chore: fix typos
2021-11-30 09:28:50 +01:00
Gregory Anders
d0fbbea62a docs(lsp): do not use nvim_command for Vimscript examples
The examples are relevant and applicable for both Lua and Vimscript
configurations and the `vim.api.nvim_command` prefixes just add noise
that doesn't contribute to the example.
2021-11-30 09:03:41 +01:00
Gregory Anders
5a24c2c83d docs(lsp): do not use | as argument separator
This translates into a tag in the help doc.
2021-11-30 09:03:41 +01:00
Gregory Anders
b6e531c1d9 docs(lsp): add annotations for private functions 2021-11-30 09:03:41 +01:00
Gregory Anders
fff8827908 feat(lsp): add 'focus' option to open_floating_preview (#16465)
When the 'focusable' and 'focus_id' parameters are set,
`open_floating_preview` assumes that it should always move focus to an
existing floating window with the same 'focus_id'. However, there are
cases where we want to make a floating window focusable, but do not want
to focus it upon calling `open_floating_preview`. To distinguish these
cases, add a boolean parameter 'focus' that, when false, prevents
moving focus.
2021-11-29 15:37:55 -07:00
Michael Lingelbach
b16b7021ef fix(lsp): do not attempt to index nil client in progress handler (#16463) 2021-11-29 10:03:57 +01:00
cbarrete
217f9f8d1e feat(diagnostic): use scope = 'line' by default for open_float() (#16456)
Closes #16453

Co-authored-by: Cédric Barreteau <cbarrete@users.noreply.github.com>
2021-11-28 09:42:29 -07:00
dundargoc
caa6992a10 chore: fix typos (#16361)
Co-authored-by: Brede Yabo Sherling Kristensen <bredeyabo@hotmail.com>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Co-authored-by: István Donkó <istvan.donko@gmail.com>
Co-authored-by: Julian Berman <Julian@GrayVines.com>
Co-authored-by: bryant <bryant@users.noreply.github.com>
Co-authored-by: Michael Lingelbach <m.j.lbach@gmail.com>
Co-authored-by: nlueb <9465658+nlueb@users.noreply.github.com>
Co-authored-by: Leonhard Saam <leonhard.saam@yahoo.com>
Co-authored-by: Jesse Wertheim <jaawerth@gmail.com>
Co-authored-by: dm1try <me@dmitry.it>
Co-authored-by: Jakub Łuczyński <doubleloop@o2.pl>
Co-authored-by: Louis Lebrault <louis.lebrault@gmail.com>
Co-authored-by: Brede Yabo Sherling Kristensen <bredeyabo@hotmail.com>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Co-authored-by: István Donkó <istvan.donko@gmail.com>
Co-authored-by: Julian Berman <Julian@GrayVines.com>
Co-authored-by: bryant <bryant@users.noreply.github.com>
Co-authored-by: Michael Lingelbach <m.j.lbach@gmail.com>
Co-authored-by: nlueb <9465658+nlueb@users.noreply.github.com>
Co-authored-by: Leonhard Saam <leonhard.saam@yahoo.com>
Co-authored-by: Jesse Wertheim <jaawerth@gmail.com>
Co-authored-by: dm1try <me@dmitry.it>
Co-authored-by: Jakub Łuczyński <doubleloop@o2.pl>
Co-authored-by: Louis Lebrault <louis.lebrault@gmail.com>
2021-11-27 11:10:48 -05:00
Michael Lingelbach
102e7e7929 fix(lsp): require bufnr for apply_text_edits (#16444) 2021-11-26 10:36:37 +01:00
Gregory Anders
150a5922aa feat(diagnostic)!: make DiagnosticChanged a first class autocmd (#16098)
This allows users to hook into diagnostic events with finer granularity
(e.g. per-buffer or file).

BREAKING CHANGE: DiagnosticsChanged and LspDiagnosticsChanged user
autocommands are removed.
2021-11-25 11:55:11 -07:00
Michael Lingelbach
1a60580925 feat(lsp): use uv_spawn to check if server executable (#16430)
Previously, the built-in language server client checked if the first
argument of cmd was executable via vim.fn.executable. This ignores PATH
injected via cmd_env. Instead, we now start the client via uv.spawn, and
handle the failure mode, reporting the error back to the user.

Co-authored-by: Mathias Fußenegger <mfussenegger@users.noreply.github.com>
2021-11-25 07:54:45 -05:00
Mathias Fußenegger
f2722884a8 perf(lsp)!: use faster line retrieval for utf-16 to byte idx conversion (#16360) 2021-11-24 20:49:34 -05:00
ii14
c132144d24 fix(ui): use nowait for q mapping in floating window (#16427) 2021-11-24 15:57:33 -07:00
Michael Lingelbach
33ce02ee4d fix(lsp): avoid indexing vim.NIL for null workspaceFolders (#16404)
* internally represent no workspaceFolders as nil instead of vim.NIL
* rename workspaceFolders -> workspace_folders for consistency
2021-11-22 09:52:24 -05:00
Gregory Anders
2abc799ffd fix(diagnostic): deepcopy diagnostics before clamping line numbers
The current 'clamp_line_numbers' implementation modifies diagnostics in
place, which can have adverse downstream side effects. Before clamping
line numbers, make a copy of the diagnostic. This commit also merges the
'clamp_line_numbers' method into a new 'get_diagnostics' local function
which also implements the more general "get" method. The public
'vim.diagnostic.get()' API now just uses this function (without
clamping). This has the added benefit that other internal API functions
that need to use get() no longer have to go through vim.validate.

Finally, reorganize the source code a bit by grouping all of the data
structures together near the top of the file.
2021-11-19 11:37:45 -07:00
Michael Lingelbach
f71be1f87b fix(lsp): improve incremental sync robustness (#16358)
closes https://github.com/neovim/neovim/issues/16352

* improve handling of multi-byte deletions
2021-11-18 16:49:46 -05:00
Gregory Anders
8081a30ca8 docs: mark tagfunc.lua methods as private 2021-11-18 11:30:09 -07:00
Michael Lingelbach
f940e7a5b9 feat(lsp): add tagfunc (#16103) 2021-11-18 12:26:26 -05:00
Michael Lingelbach
eb3d59126e fix(lsp): change signature of buf_highlight_references (#16345)
the prior signature did not assume an active language client
this function can now be used directly by passing an offset encoding
defaults to utf-16 (standard for LSP)
2021-11-17 21:14:45 +01:00
Michael Lingelbach
87a053f126 fix(lsp): fix edge cases in incremental sync (#16308) 2021-11-15 08:51:30 -08:00
Mathias Fußenegger
ee3a58d42e fix(lsp): ensure buffers are re-attached on rename (#16266)
If a LSP server sent a workspace edit containing a rename the buffers
file name changed without the server receiving a close notification for
the old buffer and without the client properly re-attaching on the new
file.

This affected `Move` code-actions in nvim-jdtls, but also
`vim.lsp.buf.rename` on a class level.
2021-11-14 12:55:16 +01:00
Michael Lingelbach
0ecc58c277 fix(lsp): gracefully handle nil workspaceFolders (#16284)
* handle when workspaceFolder is nil in buf.list_workspace_folders and buf.add_workspace_folder
2021-11-11 01:15:59 -08:00
Michael Lingelbach
2ecf0a4c61 fix(lsp): rewrite incremental sync (#16252)
* use codeunits/points instead of byte ranges when applicable
* take into account different file formats when computing range and
  sending text (dos, unix, and mac supported)
* add tests of incremental sync
2021-11-09 14:37:48 -08:00
Michael Lingelbach
8f31b218f9 fix(lsp): do not index nil client in progress (#16262) 2021-11-09 22:05:41 +01:00
Sebastian Lyng Johansen
16d4af6d2f feat(ui): add vim.ui.input and use in lsp rename (#15959)
* vim.ui.input is an overridable function that prompts for user input
* take an opts table and the `on_confirm` callback, see `:help vim.ui.input` for more details
* defaults to a wrapper around vim.fn.input(opts)
* switches the built-in client's rename handler to use vim.ui.input by default
2021-11-07 07:13:53 -08:00
elianiva
b74916cfd2 fix(lsp): convert range to byte index before highlighting (#16218)
Co-authored-by: Mathias Fußenegger <mfussenegger@users.noreply.github.com>
Co-authored-by: Michael Lingelbach <m.j.lbach@gmail.com>
2021-11-06 15:05:52 -07:00
Gregory Anders
1fdbd29dfa fix(diagnostic): handle an unknown or missing client (#16242)
Sometimes plugins use pseudo-client IDs (e.g. nvim-lint or null-ls) in
order to hook into the LSP infrastructure without being a bona fide LSP
client. In these cases, get_client_by_id() will return nil since the
client ID given does not correspond to a real client recognized by the
LSP subsystem. When this happens, use "unknown" for the client name.
2021-11-05 10:10:27 -06:00
Nghia Le Minh
fa97d34858 fix(lsp): pass the enriched ctx to the client-side command (#16201) 2021-11-01 14:29:50 +01:00
Michael Lingelbach
519d8deb08 feat(lsp): add per-client commands (#16101) 2021-11-01 03:14:59 -07:00
Zachary Churchill
7ae86c1d4c feat(ui): add opt.kind to vim.ui.select (#15838)
Co-authored-by: Justin M. Keyes <justinkz@gmail.com>
2021-10-31 17:15:09 -07:00
Michael Lingelbach
5ad15c9fa1 fix(lsp): improve symbols_to_items performance (#16197)
* use table.insert instead of list_extend to avoid validation overhead

Co-authored-by: Gianmarco Fantinuoli <fanto-dev@hotmail.com>
2021-10-31 15:18:51 -07:00
black_desk
85a8bede45 fix(lsp): default to UTF-16 when lsp client using str_utfindex 2021-10-31 14:15:56 -07:00
black_desk
2e3a4747e2 fix(lsp): default to UTF-16 in make_position_params 2021-10-31 14:15:56 -07:00