diff options
Diffstat (limited to 'script/method/workspace/didChangeWorkspaceFolders.lua')
-rw-r--r-- | script/method/workspace/didChangeWorkspaceFolders.lua | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/script/method/workspace/didChangeWorkspaceFolders.lua b/script/method/workspace/didChangeWorkspaceFolders.lua new file mode 100644 index 00000000..25c06f4b --- /dev/null +++ b/script/method/workspace/didChangeWorkspaceFolders.lua @@ -0,0 +1,43 @@ +local rpc = require 'rpc' + +--- @param lsp LSP +--- @param params table +return function (lsp, params) + local event = params.event + + for _, removed in ipairs(event.removed) do + lsp:removeWorkspace(removed.name, removed.uri) + end + + for _, added in ipairs(event.added) do + lsp:addWorkspace(added.name, added.uri) + end + + local ws = lsp.workspaces[1] + if ws then + -- 请求工作目录 + local uri = ws.uri + -- 请求配置 + rpc:request('workspace/configuration', { + items = { + { + scopeUri = uri, + section = 'Lua', + }, + { + scopeUri = uri, + section = 'files.associations', + }, + { + scopeUri = uri, + section = 'files.exclude', + } + }, + }, function (configs) + lsp:onUpdateConfig(configs[1], { + associations = configs[2], + exclude = configs[3], + }) + end) + end +end |