diff options
author | Michael Lingelbach <m.j.lbach@gmail.com> | 2021-11-11 01:15:59 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-11 01:15:59 -0800 |
commit | 0ecc58c2775ae576a3325aec163aa1018aad9e0a (patch) | |
tree | da49af39fa1b091442250899d288801b035772c1 /runtime/lua/vim/lsp/buf.lua | |
parent | 14def4d2271a5bc5e6e6e774d291a9e0fd2477e0 (diff) | |
download | rneovim-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.lua | 7 |
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 |