From: Andreas Louv Date: Fri, 14 Apr 2023 14:58:06 +0000 (+0200) Subject: Initialize completion when all server capabilities are known X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=a71d687213bd8e16aedf6e8f3a4def42b012dc18;p=vim-lsp.git Initialize completion when all server capabilities are known It's only possible to initialize completion when all server capabilities are known, as this is the time it's known which server will end up being used for completion. --- diff --git a/autoload/lsp/lsp.vim b/autoload/lsp/lsp.vim index f69ac7e..303e30c 100644 --- a/autoload/lsp/lsp.vim +++ b/autoload/lsp/lsp.vim @@ -432,20 +432,29 @@ def BufferInit(lspserverId: number, bnr: number): void setbufvar(bnr, '&balloonexpr', 'g:LspDiagExpr()') - completion.BufferInit(lspserver, bnr, ftype) signature.BufferInit(lspserver) inlayhints.BufferInit(lspserver, bnr) - if exists('#User#LspAttached') - var allServersReady = true - var lspservers: list> = buf.BufLspServersGet(bnr) + var allServersReady = true + var lspservers: list> = buf.BufLspServersGet(bnr) + for lspsrv in lspservers + if !lspsrv.ready + allServersReady = false + break + endif + endfor + + if allServersReady for lspsrv in lspservers - if !lspsrv.ready - allServersReady = false + # It's only possible to initialize completion when all server capabilities + # are known. + var completionServer = buf.BufLspServerGet(bnr, 'completion') + if !completionServer->empty() && lspsrv.id == completionServer.id + completion.BufferInit(lspsrv, bnr, ftype) endif endfor - if allServersReady + if exists('#User#LspAttached') doautocmd User LspAttached endif endif