| Commit message (Collapse) | Author | Age |
... | |
|
|
|
|
|
|
|
| |
The spec indicates that the response may be `null`, but it doesn't
really say what a `null` response means. Since neovim raises an error if
the response is `null`, I figured that ignoring it would be the safest
bet.
Co-authored-by: Mathias Fussenegger <f.mathias@zignar.net>
|
|
|
| |
Follow up to https://github.com/neovim/neovim/pull/21337
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. The algorithm for applying edits was slightly incorrect. It needs to
preserve the original token list as the edits are applied instead of
mutating it as it iterates. From the spec:
Semantic token edits behave conceptually like text edits on
documents: if an edit description consists of n edits all n edits are
based on the same state Sm of the number array. They will move the
number array from state Sm to Sm+1.
2. Schedule the semantic token engine start() call in the
client._on_attach() function so that users who schedule_wrap() their
config.on_attach() functions (like nvim-lspconfig does) can still
disable semantic tokens by deleting the semanticTokensProvider from
their server capabilities.
|
|
|
|
|
|
| |
* credit to @smolck and @theHamsta for their contributions in laying the
groundwork for this feature and for their work on some of the helper
utility functions and tests
|
| |
|
|
|
|
|
| |
`willSaveWaitUntil` allows servers to respond with text edits before
saving a document. That is used by some language servers to format a
document or apply quick fixes like removing unused imports.
|
|
|
| |
Closes https://github.com/neovim/neovim/issues/21052
|
|
|
|
| |
Closes https://github.com/neovim/neovim/issues/21177
|
|
|
|
| |
(#21271)
|
| |
|
|
|
|
|
| |
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Co-authored-by: Raphael <glephunter@gmail.com>
Co-authored-by: Gregory Anders <greg@gpanders.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Language servers can take some time to respond to the
`textDocument/hover` and `textDocument/signatureHelp` messages. During
that time, the user could have already moved to another buffer. The
popup was always shown in the current buffer, which could be a different
one than the buffer for which the request was sent.
This was particularly annoying when moving to a buffer with a `BufLeave`
autocmd, as that autocmd was triggered when the hover popup was shown
for the original buffer.
Ignoring the response from these 2 messages if they are for a buffer
that is not the current one leads to less noise. The popup will only be
shown for the buffer for which it was requested.
A more robust solution could involve cancelling the hover/signatureHelp
request if the buffer changes so the language server can free its
resources. It could be implemented in the future.
|
|
|
|
| |
To illustrate a use-case this also changes `window/showMessageRequest`
to use `vim.ui.select`
|
|
|
|
|
| |
- since cmd is a list, it runs directly ('no shell') and we shouldn't
escape.
- typo: shellerror -> shell_error
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem:
LSP client provides bogus capabilities in CodeActionKind.
LSP logs show this in the "initialize" message:
codeActionKind = { valueSet = { "Empty", "QuickFix",
"Refactor", "RefactorExtract", "RefactorInline", "RefactorRewrite",
"Source", "SourceOrganizeImports", "", "quickfix", "refactor",
"refactor.extract", "refactor.inline", "refactor.rewrite", "source",
"source.organizeImports" }
Solution:
Only the values from the CodeActionKind table should be presented, not also the
keys.
fix #20657
|
|
|
|
| |
(#20551)
|
| |
|
| |
|
|
|
|
|
| |
Co-authored-by: Raphael <glephunter@gmail.com>
Co-authored-by: smjonas <jonas.strittmatter@gmx.de>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
|
|
|
|
|
| |
- adapt to parser changes from https://github.com/vigoux/tree-sitter-vimdoc/pull/16
- numerous other generator improvements
|
|
|
|
|
| |
Fix those naughty single quotes.
closes #20159
|
|
|
| |
Co-authored-by: Mathias Fussenegger <f.mathias@zignar.net>
|
|
|
| |
fix: use correct function name in deprecated message
|
|
|
| |
Co-authored-by: Jonas Strittmatter <40792180+smjonas@users.noreply.github.com>
|
|
|
| |
Closes https://github.com/neovim/neovim/issues/20111
|
| |
|
| |
|
|
|
| |
Follow up to https://github.com/neovim/neovim/pull/19916
|
| |
|
|
|
|
| |
Makes the previously inner functions re-usable for a TCP client
|
|
|
|
|
| |
To prepare for different transports like TCP where the handle won't have
a kill method.
|
| |
|
|
|
|
| |
This makes it easier to find documentation about the on-list-handler
when starting the search term with "lsp".
|
|
|
| |
The `onexit` handler isn't called if `uv.spawn` doesn't return a handle.
|
| |
|
|
|
|
| |
The last line was excluded from formatting via formatexpr because the
character in the params was set to 0 instead of the end of line.
|
| |
|
| |
|
|
|
|
| |
Also changes `@see` to `See` to avoid the break to a dedicated "See
also" block in the generated vimdoc
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
`code_action` gained extra functions (`filter` and `apply`) which
`range_code_action` didn't have.
To close this gap, this adds a `range` option to `code_action` and
deprecates `range_code_action`.
The option defaults to the current selection if in visual mode.
This allows users to setup a mapping like `vim.keymap.set({'v', 'n'},
'<a-CR>', vim.lsp.buf.code_action)`
`range_code_action` used to use the `<` and `>` markers to get the
_last_ selection which required using a `<Esc><Cmd>lua
vim.lsp.buf.range_code_action()<CR>` (note the `<ESC>`) mapping.
|
|
|
|
|
| |
Without some form of feedback a user cannot easily tell if the server is
still computing the result (which can take a while in large projects),
or whether the server couldn't compute the rename result.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Neovim implements `workspace/configuration`
It should set the capability accordingly.
From https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#clientCapabilities:
/**
* The client supports `workspace/configuration` requests.
*
* @since 3.6.0
*/
configuration?: boolean;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
lists (#19213)
Currently LSP allows only using loclist or quickfix list window. I
normally prefer to review all quickfix items without opening quickfix
window. This fix allows passing `on_list` option which allows full
control what to do with list.
Here is example how to use it with quick fix list:
```lua
local function on_list(options)
vim.fn.setqflist({}, ' ', options)
vim.api.nvim_command('cfirst')
end
local bufopts = { noremap=true, silent=true, buffer=bufnr }
vim.keymap.set('n', '<leader>ad', function() vim.lsp.buf.declaration{on_list=on_list} end, bufopts)
vim.keymap.set('n', '<leader>d', function() vim.lsp.buf.definition{on_list=on_list} end, bufopts)
vim.keymap.set('n', '<leader>ai', function() vim.lsp.buf.implementation{on_list=on_list} end, bufopts)
vim.keymap.set('n', '<leader>at', function() vim.lsp.buf.type_definition{on_list=on_list} end, bufopts)
vim.keymap.set('n', '<leader>af', function() vim.lsp.buf.references(nil, {on_list=on_list}) end, bufopts)
```
If you prefer loclist do something like this:
```lua
local function on_list(options)
vim.fn.setloclist(0, {}, ' ', options)
vim.api.nvim_command('lopen')
end
```
close #19182
Co-authored-by: Mathias Fußenegger <mfussenegger@users.noreply.github.com>
|
|
|
|
| |
regression from PR #19283: custom close autocommands for the preview window were
not cleaned up after the window was closed.
|
|
|
|
|
|
|
| |
* refactor(lsp): use autocmd api
* refactor(lsp): inline BufWritePost and VimLeavePre callbacks
|
| |
|
| |
|
| |
|