refactor: telescope extension

main
olimorris 2022-07-13 09:27:14 +01:00
parent 459adba9dd
commit 2b7ab49f36
2 changed files with 30 additions and 24 deletions

View File

@ -1,6 +1,7 @@
local actions_state = require("telescope.actions.state") local actions_state = require("telescope.actions.state")
local transform_mod = require("telescope.actions.mt").transform_mod local transform_mod = require("telescope.actions.mt").transform_mod
local utils = require("persisted.utils")
local M = {} local M = {}
---Get the selected session from Telescope ---Get the selected session from Telescope
@ -9,6 +10,14 @@ local get_selected_session = function()
return actions_state.get_selected_entry() return actions_state.get_selected_entry()
end end
M.load_session = function(session, config)
utils.load_session(
session.file_path,
config.telescope.before_source and config.telescope.before_source(session) or _,
config.telescope.after_source and config.telescope.after_source(session) or _
)
end
---Delete the selected session from disk ---Delete the selected session from disk
--@return string --@return string
M.delete_session = function() M.delete_session = function()

View File

@ -10,33 +10,30 @@ local function search_sessions(opts)
local utils = require("persisted.utils") local utils = require("persisted.utils")
local config = require("persisted.config").options local config = require("persisted.config").options
pickers.new(opts, { pickers
prompt_title = "Sessions", .new(opts, {
sorter = conf.generic_sorter(opts), prompt_title = "Sessions",
finder = _finders.session_finder(require("persisted").list()), sorter = conf.generic_sorter(opts),
attach_mappings = function(prompt_bufnr, map) finder = _finders.session_finder(require("persisted").list()),
local refresh_sessions = function() attach_mappings = function(prompt_bufnr, map)
local picker = action_state.get_current_picker(prompt_bufnr) local refresh_sessions = function()
picker:refresh(_finders.session_finder(require("persisted").list()), { reset_prompt = true }) local picker = action_state.get_current_picker(prompt_bufnr)
end picker:refresh(_finders.session_finder(require("persisted").list()), { reset_prompt = true })
end
_actions.delete_session:enhance({ post = refresh_sessions }) _actions.delete_session:enhance({ post = refresh_sessions })
map("i", "<c-d>", _actions.delete_session) map("i", "<c-d>", _actions.delete_session)
actions.select_default:replace(function() actions.select_default:replace(function()
local session = action_state.get_selected_entry() local session = action_state.get_selected_entry()
actions.close(prompt_bufnr) actions.close(prompt_bufnr)
_actions.load_session(session, config)
utils.load_session( end)
session.file_path, return true
config.telescope.before_source and config.telescope.before_source(session) or _, end,
config.telescope.after_source and config.telescope.after_source(session) or _ })
) :find()
end)
return true
end,
}):find()
end end
return require("telescope").register_extension({ return require("telescope").register_extension({