# Request: "workspace/workspaceFolders"
# Param: none
def ProcessWorkspaceFoldersReq(lspserver: dict<any>, request: dict<any>)
- lspserver.sendResponse(request, {}, {})
+ if !lspserver->has_key('workspaceFolders')
+ lspserver.sendResponse(request, null, {})
+ return
+ endif
+ if empty(lspserver.workspaceFolders)
+ lspserver.sendResponse(request, [], {})
+ else
+ lspserver.sendResponse(request,
+ \ map(copy(lspserver.workspaceFolders), '{name: v:val->fnamemodify(":t"), uri: util.LspFileToUri(v:val)}'),
+ \ {})
+ endif
enddef
# process the client/registerCapability LSP server request
enddef
# send a response message to the server
-def SendResponse(lspserver: dict<any>, request: dict<any>, result: dict<any>, error: dict<any>)
+def SendResponse(lspserver: dict<any>, request: dict<any>, result: any, error: dict<any>)
if (request.id->type() == v:t_string
&& (request.id->trim() =~ '[^[:digit:]]\+'
|| request.id->trim() == ''))
endif
var resp: dict<any> = lspserver.createResponse(
request.id->type() == v:t_string ? request.id->str2nr() : request.id)
- if result->type() != v:t_none
+ if empty(error)
resp->extend({result: result})
else
resp->extend({error: error})