mirror of
https://github.com/hrsh7th/cmp-buffer
synced 2025-02-21 01:06:49 +00:00
Add keyword_length
option
This commit is contained in:
parent
5dde543075
commit
d1ca295ce5
@ -17,6 +17,13 @@ require'cmp'.setup {
|
||||
The below source configuration are available.
|
||||
|
||||
|
||||
### keyword_length (type: number)
|
||||
|
||||
_Default:_ `3`
|
||||
|
||||
Specify word length to gather.
|
||||
|
||||
|
||||
### keyword_pattern (type: string)
|
||||
|
||||
_Default:_ `[[\%(-\?\d\+\%(\.\d\+\)\?\|\h\w*\%([\-.]\w*\)*\)]]`
|
||||
|
@ -1,6 +1,7 @@
|
||||
---@class cmp_buffer.Buffer
|
||||
---@field public bufnr number
|
||||
---@field public regexes any[]
|
||||
---@field public length number
|
||||
---@field public pattern string
|
||||
---@field public timer any|nil
|
||||
---@field public words table<number, string[]>
|
||||
@ -9,12 +10,14 @@ local buffer = {}
|
||||
|
||||
---Create new buffer object
|
||||
---@param bufnr number
|
||||
---@param length number
|
||||
---@param pattern string
|
||||
---@return cmp_buffer.Buffer
|
||||
function buffer.new(bufnr, pattern)
|
||||
function buffer.new(bufnr, length, pattern)
|
||||
local self = setmetatable({}, { __index = buffer })
|
||||
self.bufnr = bufnr
|
||||
self.regexes = {}
|
||||
self.length = length
|
||||
self.pattern = pattern
|
||||
self.timer = nil
|
||||
self.words = {}
|
||||
@ -103,7 +106,7 @@ function buffer.index_line(self, i, line)
|
||||
local s, e = self:matchstrpos(buf)
|
||||
if s then
|
||||
local word = string.sub(buf, s, e - 1)
|
||||
if #word > 1 then
|
||||
if #word >= self.length then
|
||||
table.insert(words, word)
|
||||
end
|
||||
end
|
||||
|
@ -1,6 +1,7 @@
|
||||
local buffer = require('cmp_buffer.buffer')
|
||||
|
||||
local defaults = {
|
||||
keyword_length = 3,
|
||||
keyword_pattern = [[\%(-\?\d\+\%(\.\d\+\)\?\|\h\w*\%([\-]\w*\)*\)]],
|
||||
get_bufnrs = function()
|
||||
return { vim.api.nvim_get_current_buf() }
|
||||
@ -18,6 +19,7 @@ end
|
||||
source.get_keyword_pattern = function(_, params)
|
||||
params.option = vim.tbl_deep_extend('keep', params.option, defaults)
|
||||
vim.validate({
|
||||
keyword_length = { params.option.keyword_length, 'number', '`opts.keyword_length` must be `number`' },
|
||||
keyword_pattern = { params.option.keyword_pattern, 'string', '`opts.keyword_pattern` must be `string`' },
|
||||
get_bufnrs = { params.option.get_bufnrs, 'function', '`opts.get_bufnrs` must be `function`' },
|
||||
})
|
||||
@ -64,7 +66,11 @@ source._get_buffers = function(self, params)
|
||||
local buffers = {}
|
||||
for _, bufnr in ipairs(params.option.get_bufnrs()) do
|
||||
if not self.buffers[bufnr] then
|
||||
local new_buf = buffer.new(bufnr, params.option.keyword_pattern)
|
||||
local new_buf = buffer.new(
|
||||
bufnr,
|
||||
params.option.keyword_length,
|
||||
params.option.keyword_pattern
|
||||
)
|
||||
new_buf:index()
|
||||
new_buf:watch()
|
||||
self.buffers[bufnr] = new_buf
|
||||
|
Loading…
Reference in New Issue
Block a user