neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit ed05d38d9fa643c7e562b754c6cfed8b9da5c4d8
parent ac69ba5fa0081026f2c5e6e29d5788802479b7b9
Author: Mathias Fußenegger <mfussenegger@users.noreply.github.com>
Date:   Sun,  5 Mar 2023 08:42:15 +0100

fix(lsp): don't monitor files if workspace_folders is nil (#22531)

Fixes:

    Error SERVER_REQUEST_HANDLER_ERROR: "...di/dev/neovim/neovim/runtime/lua/vim/lsp/_watchfiles.lua
    :200: bad argument #1 to 'ipairs' (table expected, got nil)"

Language servers can be started without root_dir or workspace_folders.
Diffstat:
Mruntime/lua/vim/lsp/_watchfiles.lua | 7+++++--
1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/runtime/lua/vim/lsp/_watchfiles.lua b/runtime/lua/vim/lsp/_watchfiles.lua @@ -168,11 +168,11 @@ end M._watchfunc = (vim.fn.has('win32') == 1 or vim.fn.has('mac') == 1) and watch.watch or watch.poll ----@type table<number, table<number, function()>> client id -> registration id -> cancel function +---@type table<number, table<number, function[]>> client id -> registration id -> cancel function local cancels = vim.defaulttable() local queue_timeout_ms = 100 ----@type table<number, uv_timer_t> client id -> libuv timer which will send queued changes at its timeout +---@type table<number, uv.uv_timer_t> client id -> libuv timer which will send queued changes at its timeout local queue_timers = {} ---@type table<number, lsp.FileEvent[]> client id -> set of queued changes to send in a single LSP notification local change_queues = {} @@ -193,6 +193,9 @@ local to_lsp_change_type = { function M.register(reg, ctx) local client_id = ctx.client_id local client = vim.lsp.get_client_by_id(client_id) + if not client.workspace_folders then + return + end local watch_regs = {} for _, w in ipairs(reg.registerOptions.watchers) do local glob_patterns = {}