]> Sergey Matveev's repositories - vim-lsp.git/commitdiff
Pass the completion trigger kind
authorYegappan Lakshmanan <yegappan@yahoo.com>
Tue, 16 Feb 2021 02:49:02 +0000 (18:49 -0800)
committerYegappan Lakshmanan <yegappan@yahoo.com>
Tue, 16 Feb 2021 02:49:02 +0000 (18:49 -0800)
autoload/handlers.vim
autoload/lsp.vim
autoload/lspserver.vim

index caf07830a9a574cb7a43cfc3a0568fabde8c7bd7..bf1711dfd948ff3abf8d8cf6e88806fbee2f8cbc 100644 (file)
@@ -37,7 +37,6 @@ def s:processInitializeReply(lspserver: dict<any>, req: dict<any>, reply: dict<a
     lspserver.completionTriggerChars = triggers
   endif
 
-
   # send a "initialized" notification to server
   lspserver.sendInitializedNotif()
 
@@ -209,6 +208,7 @@ def s:processCompletionReply(lspserver: dict<any>, req: dict<any>, reply: dict<a
        d.info = item.documentation.value
       endif
     endif
+    d.user_data = item
     completeItems->add(d)
   endfor
 
index d2607dbf829dc2ef9b949d7153416cfd60b07a37..f36e3a8e17be1515e1e768459a8b6f843d152c6b 100644 (file)
@@ -548,19 +548,24 @@ def lsp#complete()
     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
@@ -586,7 +591,7 @@ def lsp#omniFunc(findstart: number, base: string): any
     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('.')
index db972b6af5c1f0a72391a945f0cdc03f18620997..02f70ac029e6a409da5acf6eb7dc2a676894fe64 100644 (file)
@@ -351,7 +351,7 @@ enddef
 # 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")
@@ -369,7 +369,7 @@ def s:getCompletion(lspserver: dict<any>): void
   #   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