From: shane.xb.qian Date: Tue, 26 Dec 2023 06:02:56 +0000 (+0800) Subject: none: compl item sel X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=a82cd5fce795de5e39b8ac38e378ede5a56b3233;p=vim-lsp.git none: compl item sel Signed-off-by: shane.xb.qian --- diff --git a/autoload/lsp/completion.vim b/autoload/lsp/completion.vim index 4ab65dd..26dc24a 100644 --- a/autoload/lsp/completion.vim +++ b/autoload/lsp/completion.vim @@ -330,23 +330,30 @@ export def CompletionReply(lspserver: dict, cItems: any) endif enddef -# process the completion documentation -def ShowCompletionDocumentation(cItem: any) - if cItem->empty() || cItem->type() != v:t_dict - return - endif - - # check if completion item is still selected +# Check if completion item is selected +def CheckCompletionItemSel(label: string): bool var cInfo = complete_info() if cInfo->empty() || !cInfo.pum_visible || cInfo.selected == -1 - return + return false endif - var selItem = cInfo.items->get(cInfo.selected, {}) if selItem->empty() || selItem->type() != v:t_dict || selItem.user_data->type() != v:t_dict - || selItem.user_data.label != cItem.label + || selItem.user_data.label != label + return false + endif + return true +enddef + +# Process the completion documentation +def ShowCompletionDocumentation(cItem: any) + if cItem->empty() || cItem->type() != v:t_dict + return + endif + + # check if completion item is still selected + if !CheckCompletionItemSel(cItem.label) return endif @@ -390,13 +397,7 @@ def ShowCompletionDocumentation(cItem: any) endif # check if completion item is changed in meantime - cInfo = complete_info() - if cInfo->empty() - || !cInfo.pum_visible - || cInfo.selected == -1 - || cInfo.items[cInfo.selected]->type() != v:t_dict - || cInfo.items[cInfo.selected].user_data->type() != v:t_dict - || cInfo.items[cInfo.selected].user_data.label != cItem.label + if !CheckCompletionItemSel(cItem.label) return endif