From: Andreas Louv Date: Sun, 19 Mar 2023 10:30:38 +0000 (+0100) Subject: Respect "isIncomplete" when omni completing X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=545919221bea28d36169ed27a04915b2de89d683;p=vim-lsp.git Respect "isIncomplete" when omni completing The specifications states: > for speed clients should be able to filter an already received > completion list if the user continues typing. Servers can opt out of > this using a CompletionList and mark it as isIncomplete --- diff --git a/autoload/lsp/completion.vim b/autoload/lsp/completion.vim index e50f2a0..5932990 100644 --- a/autoload/lsp/completion.vim +++ b/autoload/lsp/completion.vim @@ -78,11 +78,14 @@ export def CompletionReply(lspserver: dict, cItems: any) return endif + lspserver.completeItemsIsIncomplete = false + var items: list> if cItems->type() == v:t_list items = cItems else items = cItems.items + lspserver.completeItemsIsIncomplete = cItems.isIncomplete endif # Get the keyword prefix before the current cursor column. @@ -301,6 +304,12 @@ def g:LspOmniFunc(findstart: number, base: string): any endwhile var res: list> = lspserver.completeItems + + # Don't attempt to filter on the items, when "isIncomplete" is set + if lspserver.completeItemsIsIncomplete + return res->empty() ? v:none : res + endif + return res->empty() ? v:none : res->filter((i, v) => v.word =~# '^' .. lspserver.omniCompleteKeyword) endif enddef