lspserver.completionTriggerChars = triggers
endif
-
# send a "initialized" notification to server
lspserver.sendInitializedNotif()
d.info = item.documentation.value
endif
endif
+ d.user_data = item
completeItems->add(d)
endfor
return
endif
+ # Trigger kind is 1 for 24x7 code complete or manual invocation
+ var triggerKind: number = 1
+
# If the character before the cursor is not a keyword character or is not
# one of the LSP completion trigger characters, then do nothing.
if line[cur_col - 2] !~ '\k'
if lspserver.completionTriggerChars->index(line[cur_col - 2]) == -1
return
endif
+ # completion triggered by one of the trigger characters
+ triggerKind = 2
endif
# first send all the changes in the current buffer to the LSP server
listener_flush()
# initiate a request to LSP server to get list of completions
- lspserver.getCompletion()
+ lspserver.getCompletion(triggerKind)
return
enddef
lspserver.completePending = v:true
lspserver.completeItems = []
# initiate a request to LSP server to get list of completions
- lspserver.getCompletion()
+ lspserver.getCompletion(1)
# locate the start of the word
var line = getline('.')
# Get a list of completion items.
# Request: "textDocument/completion"
# Param: CompletionParams
-def s:getCompletion(lspserver: dict<any>): void
+def s:getCompletion(lspserver: dict<any>, triggerKind_arg: number): void
# Check whether LSP server supports completion
if !lspserver.caps->has_key('completionProvider')
ErrMsg("Error: LSP server does not support completion")
# interface TextDocumentPositionParams
req.params->extend(s:getLspTextDocPosition())
# interface CompletionContext
- req.params->extend({context: {triggerKind: 1}})
+ req.params->extend({context: {triggerKind: triggerKind_arg}})
lspserver.sendMessage(req)
enddef