]> Sergey Matveev's repositories - vim-lsp.git/commitdiff
Add support for lazy documentation and omni completion
authorAndreas Louv <andreas@louv.dk>
Mon, 22 May 2023 20:30:39 +0000 (22:30 +0200)
committerAndreas Louv <andreas@louv.dk>
Mon, 22 May 2023 21:05:27 +0000 (23:05 +0200)
autoload/lsp/completion.vim
autoload/lsp/lspserver.vim

index 1f240ae33f7eb3d9445dba403d7faf344c821fba..444ec0827ffe351f30deacfbe44ae0c368d39f33 100644 (file)
@@ -395,12 +395,24 @@ def ShowCompletionDocumentation(cItem: any)
     return
   endif
 
+  # autoComplete or &omnifunc with &completeopt =~ 'popup'
   var id = popup_findinfo()
   if id > 0
     var bufnr = id->winbufnr()
     id->popup_settext(infoText)
     infoKind->setbufvar(bufnr, '&ft')
     id->popup_show()
+  else
+    # &omnifunc with &completeopt =~ 'preview'
+    execute $':silent! pedit Completion'
+    :wincmd P
+    :setlocal buftype=nofile
+    :setlocal bufhidden=delete
+    bufnr()->deletebufline(1, '$')
+    infoText->append(0)
+    [1, 1]->cursor()
+    exe $'setlocal ft={infoKind}'
+    :wincmd p
   endif
 enddef
 
@@ -601,19 +613,20 @@ export def BufferInit(lspserver: dict<any>, bnr: number, ftype: string)
                event: 'TextChangedI',
                group: 'LSPBufferAutocmds',
                cmd: 'LspComplete()'})
-    if lspserver.completionLazyDoc
-      # resolve additional documentation for a selected item
-      acmds->add({bufnr: bnr,
-                 event: 'CompleteChanged',
-                 group: 'LSPBufferAutocmds',
-                 cmd: 'LspResolve()'})
-    endif
   else
     if LspOmniComplEnabled(ftype)
       setbufvar(bnr, '&omnifunc', 'g:LspOmniFunc')
     endif
   endif
 
+  if lspserver.completionLazyDoc
+    # resolve additional documentation for a selected item
+    acmds->add({bufnr: bnr,
+                event: 'CompleteChanged',
+                group: 'LSPBufferAutocmds',
+                cmd: 'LspResolve()'})
+  endif
+
   acmds->add({bufnr: bnr,
              event: 'CompleteChanged',
              group: 'LSPBufferAutocmds',
index 8988cada3a13427527f7137775800c489a87ab58..f7505de71ddd1fbde095202bcaecff632b009858 100644 (file)
@@ -113,9 +113,9 @@ def ServerInitReply(lspserver: dict<any>, initResult: dict<any>): void
   if opt.lspOptions.autoComplete && caps->has_key('completionProvider')
     lspserver.completionTriggerChars =
                        caps.completionProvider->get('triggerCharacters', [])
-    lspserver.completionLazyDoc =
-                       caps.completionProvider->get('resolveProvider', false)
   endif
+  lspserver.completionLazyDoc =
+                      caps.completionProvider->get('resolveProvider', false)
 
   # send a "initialized" notification to server
   lspserver.sendInitializedNotif()