diff options
author | Sean Dewar <seandewar@users.noreply.github.com> | 2023-08-04 07:10:54 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-04 08:10:54 +0200 |
commit | cc87dda31a5b5637ade7ddcfe5199f2df5fd47df (patch) | |
tree | b89c503ad28d59898c6b14ed1be7ba9bc6e747e7 /scripts/gen_eval_files.lua | |
parent | 3d3ec27d51e1608306c9bd78425e3138f293ae69 (diff) | |
download | rneovim-cc87dda31a5b5637ade7ddcfe5199f2df5fd47df.tar.gz rneovim-cc87dda31a5b5637ade7ddcfe5199f2df5fd47df.tar.bz2 rneovim-cc87dda31a5b5637ade7ddcfe5199f2df5fd47df.zip |
fix(lsp): do not assume client capability exists in watchfiles check (#24550)
PR #23689 assumes `client.config.capabilities.workspace.didChangeWatchedFiles`
exists when checking `dynamicRegistration`, but thats's true only if it was
passed to `vim.lsp.start{_client}`.
This caused #23806 (still an issue in v0.9.1; needs manual backport), but #23681
fixed it by defaulting `config.capabilities` to `make_client_capabilities` if
not passed to `vim.lsp.start{_client}`.
However, the bug resurfaces on HEAD if you provide a non-nil `capabilities` to
`vim.lsp.start{_client}` with missing fields (e.g: not made via
`make_client_capabilities`).
From what I see, the spec says such missing fields should be interpreted as an
absence of the capability (including those indicated by missing sub-fields):
https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#clientCapabilities
Also, suggest `vim.empty_dict()` for an empty dict in
`:h vim.lsp.start_client()` (`{[vim.type_idx]=vim.types.dictionary}`
no longer works anyway, probably since the cjson switch).
Diffstat (limited to 'scripts/gen_eval_files.lua')
0 files changed, 0 insertions, 0 deletions