if msg->has_key('result') || msg->has_key('error')
# response message from the server
- var req = lspserver.requests->get(msg.id->string())
- # Remove the corresponding stored request message
- lspserver.requests->remove(msg.id->string())
-
- if msg->has_key('result')
- lspserver.processReply(req, msg)
- else
- # request failed
- var emsg: string = msg.error.message
- emsg ..= ', code = ' .. msg.error.code
- if msg.error->has_key('data')
- emsg = emsg .. ', data = ' .. msg.error.data->string()
+ var req = lspserver.requests->get(msg.id->string(), {})
+ if !req->empty()
+ # Remove the corresponding stored request message
+ lspserver.requests->remove(msg.id->string())
+
+ if msg->has_key('result')
+ lspserver.processReply(req, msg)
+ else
+ # request failed
+ var emsg: string = msg.error.message
+ emsg ..= ', code = ' .. msg.error.code
+ if msg.error->has_key('data')
+ emsg = emsg .. ', data = ' .. msg.error.data->string()
+ endif
+ ErrMsg("Error: request " .. req.method .. " failed ("
+ .. emsg .. ")")
endif
- ErrMsg("Error: request " .. req.method .. " failed (" .. emsg .. ")")
endif
elseif msg->has_key('id')
# request message from the server
# interface CompletionParams
# interface TextDocumentPositionParams
- req.params->extend(s:getLspTextDocPosition())
+ req.params = s:getLspTextDocPosition()
# interface CompletionContext
- req.params->extend({context: {triggerKind: triggerKind_arg}})
+ req.params.context = {triggerKind: triggerKind_arg}
lspserver.sendMessage(req)
enddef
# interface DocumentFormattingParams
# interface TextDocumentIdentifier
- req.params->extend({textDocument: {uri: LspFileToUri(fname)}})
var tabsz: number
if &sts > 0
tabsz = &sts
tabSize: tabsz,
insertSpaces: &expandtab ? true : false,
}
- req.params->extend({options: fmtopts})
+ req.params->extend({textDocument: {uri: LspFileToUri(fname)},
+ options: fmtopts})
if rangeFormat
var r: dict<dict<number>> = {
start: {line: start_lnum - 1, character: 0},
var req = lspserver.createRequest('textDocument/rename')
# interface RenameParams
# interface TextDocumentPositionParams
- req.params->extend(s:getLspTextDocPosition())
- req.params->extend({newName: newName})
+ req.params = s:getLspTextDocPosition()
+ req.params.newName = newName
+ #req.params->extend({newName: newName})
lspserver.sendMessage(req)
enddef
# interface CodeActionParams
var fname: string = fnamemodify(fname_arg, ':p')
var bnr: number = fname_arg->bufnr()
- req.params->extend({textDocument: {uri: LspFileToUri(fname)}})
var r: dict<dict<number>> = {
start: {line: line('.') - 1, character: charcol('.') - 1},
end: {line: line('.') - 1, character: charcol('.') - 1}}
- req.params->extend({range: r})
+ req.params->extend({textDocument: {uri: LspFileToUri(fname)}, range: r})
var diag: list<dict<any>> = []
var lnum = line('.')
var diagInfo: dict<any> = lspserver.getDiagByLine(bnr, lnum)
var req = lspserver.createRequest('textDocument/selectionRange')
# interface SelectionRangeParams
# interface TextDocumentIdentifier
- req.params->extend({textDocument: {uri: LspFileToUri(fname)}})
- req.params->extend({positions: [s:getLspPosition()]})
+ req.params->extend({textDocument: {uri: LspFileToUri(fname)},
+ positions: [s:getLspPosition()]})
lspserver.sendMessage(req)
enddef