aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/lsp/buf.lua
diff options
context:
space:
mode:
authorMichael Lingelbach <m.j.lbach@gmail.com>2021-11-11 01:15:59 -0800
committerGitHub <noreply@github.com>2021-11-11 01:15:59 -0800
commit0ecc58c2775ae576a3325aec163aa1018aad9e0a (patch)
treeda49af39fa1b091442250899d288801b035772c1 /runtime/lua/vim/lsp/buf.lua
parent14def4d2271a5bc5e6e6e774d291a9e0fd2477e0 (diff)
downloadrneovim-0ecc58c2775ae576a3325aec163aa1018aad9e0a.tar.gz
rneovim-0ecc58c2775ae576a3325aec163aa1018aad9e0a.tar.bz2
rneovim-0ecc58c2775ae576a3325aec163aa1018aad9e0a.zip
fix(lsp): gracefully handle nil workspaceFolders (#16284)
* handle when workspaceFolder is nil in buf.list_workspace_folders and buf.add_workspace_folder
Diffstat (limited to 'runtime/lua/vim/lsp/buf.lua')
-rw-r--r--runtime/lua/vim/lsp/buf.lua7
1 files changed, 5 insertions, 2 deletions
diff --git a/runtime/lua/vim/lsp/buf.lua b/runtime/lua/vim/lsp/buf.lua
index b0348e8307..747d761730 100644
--- a/runtime/lua/vim/lsp/buf.lua
+++ b/runtime/lua/vim/lsp/buf.lua
@@ -369,7 +369,7 @@ end
function M.list_workspace_folders()
local workspace_folders = {}
for _, client in pairs(vim.lsp.buf_get_clients()) do
- for _, folder in pairs(client.workspaceFolders) do
+ for _, folder in pairs(client.workspaceFolders or {}) do
table.insert(workspace_folders, folder.name)
end
end
@@ -389,7 +389,7 @@ function M.add_workspace_folder(workspace_folder)
local params = util.make_workspace_params({{uri = vim.uri_from_fname(workspace_folder); name = workspace_folder}}, {{}})
for _, client in pairs(vim.lsp.buf_get_clients()) do
local found = false
- for _, folder in pairs(client.workspaceFolders) do
+ for _, folder in pairs(client.workspaceFolders or {}) do
if folder.name == workspace_folder then
found = true
print(workspace_folder, "is already part of this workspace")
@@ -398,6 +398,9 @@ function M.add_workspace_folder(workspace_folder)
end
if not found then
vim.lsp.buf_notify(0, 'workspace/didChangeWorkspaceFolders', params)
+ if not client.workspaceFolders then
+ client.workspaceFolders = {}
+ end
table.insert(client.workspaceFolders, params.event.added[1])
end
end