autoload/lsp/completion.vim | 15 +++++++++++++++ autoload/lsp/options.vim | 5 ++++- diff --git a/autoload/lsp/completion.vim b/autoload/lsp/completion.vim index 4ab65dd1d954b146fdbddb0ac441774240296983..a1458299a74c812fb30a63837d9e523434f75b8e 100644 --- a/autoload/lsp/completion.vim +++ b/autoload/lsp/completion.vim @@ -188,6 +188,7 @@ CompletionFromBuffer(items) endif var completeItems: list> = [] + var itemsUsed: list = [] for item in items var d: dict = {} @@ -294,6 +295,20 @@ d.score = item->get('sortText') if d.score->empty() d.score = item->get('label', '') endif + + # Dont include duplicate items + if lspOpts.filterCompletionDuplicates + var key = d->get('word', '') .. + d->get('info', '') .. + d->get('kind', '') .. + d->get('score', '') .. + d->get('abbr', '') .. + d->get('dup', '') + if index(itemsUsed, key) != -1 + continue + endif + add(itemsUsed, key) + endif d.user_data = item completeItems->add(d) diff --git a/autoload/lsp/options.vim b/autoload/lsp/options.vim index dbe23dc17965790c3faaffcaf5c245dee7266a27..18e23dd1b29071e0b73a549e03b01d2ef3a87fab 100644 --- a/autoload/lsp/options.vim +++ b/autoload/lsp/options.vim @@ -135,7 +135,10 @@ # Enable support for custom completion kinds customCompletionKinds: false, # A dictionary with all completion kinds that you want to customize - completionKinds: {} + completionKinds: {}, + + # Filter duplicate completion items + filterCompletionDuplicates: false, } # set the LSP plugin options from the user provided option values