From ec3f8aedafe09bc8e82f52b963a7995eff6093f4 Mon Sep 17 00:00:00 2001 From: hrsh7th Date: Thu, 26 Aug 2021 16:49:43 +0900 Subject: [PATCH] Add `completion.get_trigger_characters` as configurable option --- README.md | 5 +++++ lua/cmp/config/default.lua | 3 +++ lua/cmp/source.lua | 8 ++++++-- lua/cmp/types/cmp.lua | 1 + 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9f01d65..626747d 100644 --- a/README.md +++ b/README.md @@ -187,6 +187,11 @@ length of the word to the left of the cursor is less than `keyword_length`. Default: `1` +### completion.get_trigger_characters (type: fun(trigger_characters: string[]): string[]) + +The function to resolve trigger_characters. + +Default: `function(trigger_characters) return trigger_characters end` #### completion.completeopt (type: string) diff --git a/lua/cmp/config/default.lua b/lua/cmp/config/default.lua index 01bcfe2..de1de23 100644 --- a/lua/cmp/config/default.lua +++ b/lua/cmp/config/default.lua @@ -13,6 +13,9 @@ return function() completeopt = 'menu,menuone,noselect', keyword_pattern = [[\%(-\?\d\+\%(\.\d\+\)\?\|\h\w*\%(-\w*\)*\)]], keyword_length = 1, + get_trigger_characters = function(trigger_characters) + return trigger_characters + end }, snippet = { diff --git a/lua/cmp/source.lua b/lua/cmp/source.lua index 10569b0..f103273 100644 --- a/lua/cmp/source.lua +++ b/lua/cmp/source.lua @@ -196,12 +196,16 @@ end ---Get trigger_characters ---@return string[] source.get_trigger_characters = function(self) + local trigger_characters = {} if self.source.get_trigger_characters then - return self.source:get_trigger_characters({ + trigger_characters = self.source:get_trigger_characters({ option = self:get_option(), }) or {} end - return {} + if config.get().completion.get_trigger_characters then + return config.get().completion.get_trigger_characters(trigger_characters) + end + return trigger_characters end ---Invoke completion diff --git a/lua/cmp/types/cmp.lua b/lua/cmp/types/cmp.lua index 5eb2b16..86128fc 100644 --- a/lua/cmp/types/cmp.lua +++ b/lua/cmp/types/cmp.lua @@ -63,6 +63,7 @@ cmp.PreselectMode.None = 'none' ---@field public completeopt string ---@field public keyword_pattern string ---@field public keyword_length number +---@field public get_trigger_characters fun(trigger_characters: string[]): string[] ---@class cmp.DocumentationConfig ---@field public border string[]