From: shane.xb.qian Date: Thu, 17 Nov 2022 09:02:12 +0000 (+0800) Subject: feat: make workspace/workspaceFolders really work and correct sendResponse func X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=e40cc1d51d622b26f07bf2eaed4bdde969d287d5;p=vim-lsp.git feat: make workspace/workspaceFolders really work and correct sendResponse func Signed-off-by: shane.xb.qian --- diff --git a/autoload/lsp/handlers.vim b/autoload/lsp/handlers.vim index cfa3239..fd9c7b2 100644 --- a/autoload/lsp/handlers.vim +++ b/autoload/lsp/handlers.vim @@ -120,7 +120,17 @@ enddef # Request: "workspace/workspaceFolders" # Param: none def ProcessWorkspaceFoldersReq(lspserver: dict, request: dict) - 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 diff --git a/autoload/lsp/lspserver.vim b/autoload/lsp/lspserver.vim index fe4a7af..df4a047 100644 --- a/autoload/lsp/lspserver.vim +++ b/autoload/lsp/lspserver.vim @@ -518,7 +518,7 @@ def CreateNotification(lspserver: dict, notif: string): dict enddef # send a response message to the server -def SendResponse(lspserver: dict, request: dict, result: dict, error: dict) +def SendResponse(lspserver: dict, request: dict, result: any, error: dict) if (request.id->type() == v:t_string && (request.id->trim() =~ '[^[:digit:]]\+' || request.id->trim() == '')) @@ -528,7 +528,7 @@ def SendResponse(lspserver: dict, request: dict, result: dict, er endif var resp: dict = 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})