diff options
Diffstat (limited to 'lua/clever_f')
| -rw-r--r-- | lua/clever_f/direct_preview_planner.lua | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/lua/clever_f/direct_preview_planner.lua b/lua/clever_f/direct_preview_planner.lua index e81d941..9a6b0d2 100644 --- a/lua/clever_f/direct_preview_planner.lua +++ b/lua/clever_f/direct_preview_planner.lua @@ -72,6 +72,24 @@ function DirectPreviewPlanner:scan_for_descriptor(view, origin, descriptor) ) end +local function increment_counter(counters, character) + local value = (counters[character] or 0) + 1 + counters[character] = value + return value +end + +function DirectPreviewPlanner:plan(view, origin, descriptor, count) + local selected_occurrence = self:normalize_count(count) + local counters = {} + local positions = {} + for _, record in ipairs(self:scan_for_descriptor(view, origin, descriptor)) do + if increment_counter(counters, record.character) == selected_occurrence then + positions[#positions + 1] = record.position + end + end + return positions +end + function M.new() return DirectPreviewPlanner.new() end @@ -84,6 +102,10 @@ function M.scan_for_descriptor(view, origin, descriptor) return DirectPreviewPlanner.new():scan_for_descriptor(view, origin, descriptor) end +function M.plan(view, origin, descriptor, count) + return DirectPreviewPlanner.new():plan(view, origin, descriptor, count) +end + setmetatable(M, { __call = function() return DirectPreviewPlanner.new() |
