summaryrefslogtreecommitdiff
path: root/lua/telescope/finders.lua
diff options
context:
space:
mode:
authorTJ DeVries <devries.timothyj@gmail.com>2020-08-31 16:44:47 -0400
committerTJ DeVries <devries.timothyj@gmail.com>2020-08-31 17:32:31 -0400
commite38589f265a276d431113efcef6fdb157120ce68 (patch)
treebd3203a976f3e349875184f03d3199d79fb7303f /lua/telescope/finders.lua
parent0af8a911b4b5d3eefa6518a804ddadefefd65e19 (diff)
feat: Combine configuration into picker.new()
Diffstat (limited to 'lua/telescope/finders.lua')
-rw-r--r--lua/telescope/finders.lua48
1 files changed, 41 insertions, 7 deletions
diff --git a/lua/telescope/finders.lua b/lua/telescope/finders.lua
index 7866c87..ae32370 100644
--- a/lua/telescope/finders.lua
+++ b/lua/telescope/finders.lua
@@ -1,17 +1,19 @@
local Job = require('plenary.job')
local log = require('telescope.log')
+local utils = require('telescope.utils')
local finders = {}
-
-- TODO: We should make a few different "FinderGenerators":
-- SimpleListFinder(my_list)
-- FunctionFinder(my_func)
-- JobFinder(my_job_args)
---@class Finder
-local Finder = {}
+local Finder = {
+ hello = "world"
+}
Finder.__index = Finder
Finder.__call = function(t, ... ) return t:_find(...) end
@@ -35,7 +37,7 @@ function Finder:new(opts)
-- string
-- list
-- ...
- return setmetatable({
+ local obj = setmetatable({
results = opts.results,
fn_command = opts.fn_command,
@@ -45,7 +47,9 @@ function Finder:new(opts)
-- Maximum number of results to process.
-- Particularly useful for live updating large queries.
maximum_results = opts.maximum_results,
- }, Finder)
+ }, self)
+
+ return obj
end
-- Probably should use the word apply here, since we're apply the callback passed to us by
@@ -145,8 +149,38 @@ end
--- Return a new Finder
--
--@return Finder
-finders.new = function(...)
- return Finder:new(...)
+finders.new = function(opts)
+ return Finder:new(opts)
+end
+
+-- TODO: Is this worth making?
+-- finders.new_responsive_job = function(opts)
+-- return finders.new {
+-- maximum_results = get_default(opts.maximum_results, 2000),
+-- }
+-- end
+
+finders.new_oneshot_job = function(command_list)
+ command_list = vim.deepcopy(command_list)
+
+ local command = table.remove(command_list, 1)
+
+ return finders.new {
+ static = true,
+
+ fn_command = function()
+ return {
+ command = command,
+ args = command_list,
+ }
+ end,
+ }
+end
+
+finders.new_table = function(t)
+ return finders.new {
+ results = t
+ }
end
-- We should add a few utility functions here...
@@ -155,6 +189,6 @@ end
-- finders.new_one_shot_job
-- finders.new_table
-finders.Finder = Finder
+-- finders.Finder = Finder
return finders