import './options.vim' as opt
import './textedit.vim'
import './snippet.vim'
+import './codeaction.vim'
# per-filetype omni-completion enabled/disabled table
var ftypeOmniCtrlMap: dict<bool> = {}
# additional text edits. So try to resolve the completion item now to get
# the text edits.
completionData = lspserver.resolveCompletion(completionData, true)
- if completionData->get('additionalTextEdits', {})->empty()
- return
+ if !completionData->get('additionalTextEdits', {})->empty()
+ textedit.ApplyTextEdits(bnr, completionData.additionalTextEdits)
endif
endif
- textedit.ApplyTextEdits(bnr, completionData.additionalTextEdits)
+ if completionData->has_key('command')
+ # Some language servers (e.g. haskell-language-server) want to apply
+ # additional commands after completion.
+ codeaction.DoCommand(lspserver, completionData.command)
+ endif
+
enddef
# Initialize buffer-local completion options and autocmds
return
endif
- var save_cursor: list<number> = getcurpos()
for [uri, changes] in workspaceEdit.changes->items()
var bnr: number = util.LspUriToBufnr(uri)
if bnr == 0
# interface TextEdit
ApplyTextEdits(bnr, changes)
endfor
- # Restore the cursor to the location before the edit
- save_cursor->setpos('.')
enddef
# vim: tabstop=8 shiftwidth=2 softtabstop=2