# Perform a code action
# Uses LSP "textDocument/codeAction" request
-export def CodeAction()
+export def CodeAction(line1: number, line2: number)
var lspserver: dict<any> = CurbufGetServerChecked()
if lspserver->empty()
return
endif
var fname: string = @%
- lspserver.codeAction(fname)
+ lspserver.codeAction(fname, line1, line2)
enddef
# Perform a workspace wide symbol lookup
# Request: "textDocument/codeAction"
# Param: CodeActionParams
-def CodeAction(lspserver: dict<any>, fname_arg: string)
+def CodeAction(lspserver: dict<any>, fname_arg: string, line1: number,
+ line2: number)
# Check whether LSP server supports code action operation
if !lspserver.caps->has_key('codeActionProvider')
|| (lspserver.caps.codeActionProvider->type() == v:t_bool
var fname: string = fnamemodify(fname_arg, ':p')
var bnr: number = fname_arg->bufnr()
var r: dict<dict<number>> = {
- start: {line: line('.') - 1, character: charcol('.') - 1},
- end: {line: line('.') - 1, character: charcol('.') - 1}}
+ start: {line: line1 - 1, character: 0},
+ end: {line: line2 - 1, character: charcol([line2, '$']) - 1}}
params->extend({textDocument: {uri: util.LspFileToUri(fname)}, range: r})
var d: list<dict<any>> = []
- var lnum = line('.')
- var diagInfo: dict<any> = diag.GetDiagByLine(lspserver, bnr, lnum)
- if !diagInfo->empty()
- d->add(diagInfo)
- endif
+ for lnum in range(line1, line2)
+ var diagInfo: dict<any> = diag.GetDiagByLine(lspserver, bnr, lnum)
+ if !diagInfo->empty()
+ d->add(diagInfo)
+ endif
+ endfor
params->extend({context: {diagnostics: d, triggerKind: 1}})
var reply = lspserver.rpc('textDocument/codeAction', params)
command! -nargs=0 -bar LspOutgoingCalls lsp.OutgoingCalls()
command! -nargs=0 -bar LspIncomingCalls lsp.IncomingCalls()
command! -nargs=0 -bar LspRename lsp.Rename()
-command! -nargs=0 -bar LspCodeAction lsp.CodeAction()
+command! -nargs=0 -bar -range LspCodeAction lsp.CodeAction(<line1>, <line2>)
command! -nargs=? -bar LspSymbolSearch lsp.SymbolSearch(<q-args>)
command! -nargs=0 -bar LspHover lsp.Hover()
command! -nargs=0 -bar LspSelectionExpand lsp.SelectionExpand()