Use state status to store depth toggle
This commit is contained in:
parent
af0ec4052c
commit
06d9dafb2d
@ -4,6 +4,7 @@ local conf = require("telescope.config").values
|
||||
local action_set = require("telescope.actions.set")
|
||||
local actions = require("telescope.actions")
|
||||
local action_state = require("telescope.actions.state")
|
||||
local state = require("telescope.state")
|
||||
|
||||
local utils = require('orgmode-telescope.utils')
|
||||
|
||||
@ -49,21 +50,23 @@ return function(opts)
|
||||
end
|
||||
end
|
||||
|
||||
local current_depth = opts.max_depth
|
||||
local next_depth = nil
|
||||
if current_depth ~= 0 then
|
||||
next_depth = 0
|
||||
local function gen_depth_toggle(opts, prompt_bufnr)
|
||||
|
||||
local status = state.get_status(prompt_bufnr)
|
||||
status._ot_current_depth = opts.max_depth
|
||||
status._ot_next_depth = nil
|
||||
if status._ot_current_depth ~= 0 then
|
||||
status._ot_next_depth = 0
|
||||
end
|
||||
|
||||
local function depth_toggle(prompt_bufnr)
|
||||
return function()
|
||||
local current_picker = action_state.get_current_picker(prompt_bufnr)
|
||||
|
||||
-- TODO: use action_state to store these to allow easy rebinding by users
|
||||
local aux = current_depth
|
||||
current_depth = next_depth
|
||||
next_depth = aux
|
||||
local aux = status._ot_current_depth
|
||||
status._ot_current_depth = status._ot_next_depth
|
||||
status._ot_next_depth = aux
|
||||
|
||||
opts.max_depth = current_depth
|
||||
opts.max_depth = status._ot_current_depth
|
||||
local new_finder = finders.new_table {
|
||||
results = utils.get_entries(opts),
|
||||
entry_maker = opts.entry_maker or utils.make_entry(opts),
|
||||
@ -71,6 +74,7 @@ return function(opts)
|
||||
|
||||
current_picker:refresh(new_finder, opts)
|
||||
end
|
||||
end
|
||||
|
||||
pickers.new(opts, {
|
||||
-- TODO: alter prompt title when depth is 0: Refile under file, Refile
|
||||
@ -82,9 +86,9 @@ return function(opts)
|
||||
},
|
||||
sorter = conf.generic_sorter(opts),
|
||||
previewer = conf.grep_previewer(opts),
|
||||
attach_mappings = function(_, map)
|
||||
attach_mappings = function(prompt_bufnr, map)
|
||||
action_set.select:replace(refile)
|
||||
map("i", "<c-space>", depth_toggle)
|
||||
map("i", "<c-space>", gen_depth_toggle(opts, prompt_bufnr))
|
||||
return true
|
||||
end,
|
||||
}):find()
|
||||
|
Loading…
Reference in New Issue
Block a user