diff --git a/lua/telescope/_extensions/actions.lua b/lua/telescope/_extensions/actions.lua index 80070c4..e7ca15f 100644 --- a/lua/telescope/_extensions/actions.lua +++ b/lua/telescope/_extensions/actions.lua @@ -1,6 +1,7 @@ local actions_state = require("telescope.actions.state") local transform_mod = require("telescope.actions.mt").transform_mod +local utils = require("persisted.utils") local M = {} ---Get the selected session from Telescope @@ -9,6 +10,14 @@ local get_selected_session = function() return actions_state.get_selected_entry() 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 --@return string M.delete_session = function() diff --git a/lua/telescope/_extensions/persisted.lua b/lua/telescope/_extensions/persisted.lua index 3b2749e..ae220a8 100644 --- a/lua/telescope/_extensions/persisted.lua +++ b/lua/telescope/_extensions/persisted.lua @@ -10,33 +10,30 @@ local function search_sessions(opts) local utils = require("persisted.utils") local config = require("persisted.config").options - pickers.new(opts, { - prompt_title = "Sessions", - sorter = conf.generic_sorter(opts), - finder = _finders.session_finder(require("persisted").list()), - attach_mappings = function(prompt_bufnr, map) - local refresh_sessions = function() - local picker = action_state.get_current_picker(prompt_bufnr) - picker:refresh(_finders.session_finder(require("persisted").list()), { reset_prompt = true }) - end + pickers + .new(opts, { + prompt_title = "Sessions", + sorter = conf.generic_sorter(opts), + finder = _finders.session_finder(require("persisted").list()), + attach_mappings = function(prompt_bufnr, map) + local refresh_sessions = function() + local picker = action_state.get_current_picker(prompt_bufnr) + 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", "", _actions.delete_session) + map("i", "", _actions.delete_session) - actions.select_default:replace(function() - local session = action_state.get_selected_entry() - actions.close(prompt_bufnr) - - 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) - return true - end, - }):find() + actions.select_default:replace(function() + local session = action_state.get_selected_entry() + actions.close(prompt_bufnr) + _actions.load_session(session, config) + end) + return true + end, + }) + :find() end return require("telescope").register_extension({