Allow to take the full SourceConfig from source API (#561)

* - SourceConfig.opts -> SourceConfig.option
- Add SourceConfig.trigger_characters
- Allow accessing full SourceConfig from source

* fmt&lint
This commit is contained in:
hrsh7th
2021-11-23 21:17:03 +09:00
committed by GitHub
parent ea10d5bd2f
commit 1944b46336
7 changed files with 73 additions and 38 deletions

View File

@@ -185,6 +185,24 @@ source.is_available = function(self)
return true
end
---Get trigger_characters
---@return string[]
source.get_trigger_characters = function(self)
local c = self:get_config()
if c.trigger_characters then
return c.trigger_characters
end
local trigger_characters = {}
if self.source.get_trigger_characters then
trigger_characters = self.source:get_trigger_characters(misc.readonly(self:get_config())) or {}
end
if config.get().completion.get_trigger_characters then
return config.get().completion.get_trigger_characters(trigger_characters)
end
return trigger_characters
end
---Get keyword_pattern
---@return string
source.get_keyword_pattern = function(self)
@@ -193,9 +211,7 @@ source.get_keyword_pattern = function(self)
return c.keyword_pattern
end
if self.source.get_keyword_pattern then
return self.source:get_keyword_pattern({
option = self:get_config().opts,
})
return self.source:get_keyword_pattern(misc.readonly(c))
end
return config.get().completion.keyword_pattern
end
@@ -210,21 +226,6 @@ source.get_keyword_length = function(self)
return config.get().completion.keyword_length or 1
end
---Get trigger_characters
---@return string[]
source.get_trigger_characters = function(self)
local trigger_characters = {}
if self.source.get_trigger_characters then
trigger_characters = self.source:get_trigger_characters({
option = self:get_config().opts,
}) or {}
end
if config.get().completion.get_trigger_characters then
return config.get().completion.get_trigger_characters(trigger_characters)
end
return trigger_characters
end
---Invoke completion
---@param ctx cmp.Context
---@param callback function
@@ -287,12 +288,11 @@ source.complete = function(self, ctx, callback)
self.context = ctx
self.completion_context = completion_context
self.source:complete(
{
context = ctx,
vim.tbl_extend('keep', misc.copy(self:get_config()), {
offset = self.offset,
option = self:get_config().opts,
context = ctx,
completion_context = completion_context,
},
}),
self.complete_dedup(vim.schedule_wrap(function(response)
response = response or {}