From e50e0b65b06298a7b937a3d42550a4bc27d13ce7 Mon Sep 17 00:00:00 2001 From: Jurek Olden <45802959+oldenj@users.noreply.github.com> Date: Tue, 4 Jun 2024 00:29:47 +1000 Subject: [PATCH] fix: properly start a session from Telescope (#134) Properly starts sessions loaded from another directory using Telescope. Crucially, this version compares the working directory of the session, not the working directory at the time of the session load, to the lists of allowed and ignored directories. Co-authored-by: Oli --- lua/persisted/init.lua | 20 ++++++++++++++----- .../_extensions/persisted/actions.lua | 4 ++-- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/lua/persisted/init.lua b/lua/persisted/init.lua index 96d6b11..2df64e9 100644 --- a/lua/persisted/init.lua +++ b/lua/persisted/init.lua @@ -203,14 +203,23 @@ end function M.load(opt, dir) opt = opt or {} dir = dir or session_dir() - local branch = get_branchname() - local session = opt.session or (opt.last and get_last() or get_current(dir)) - - local session_exists = vim.fn.filereadable(session) ~= 0 + local branch + local session + if opt.session then + session = opt.session + local session_data = utils.make_session_data(session) + branch = session_data and session_data.branch or "" + if not branch then + vim.notify(string.format("[Persisted.nvim]: Invalid session file %s", session), vim.log.levels.WARN) + end + else + branch = get_branchname() + session = opt.last and get_last() or get_current(dir) + end if session then - if session_exists then + if vim.fn.filereadable(session) ~= 0 then vim.g.persisting_session = not config.options.follow_cwd and session or nil utils.load_session(session, config.options.silent) elseif type(config.options.on_autoload_no_session) == "function" then @@ -218,6 +227,7 @@ function M.load(opt, dir) end end + dir = session_dir() if config.options.autosave and (allow_dir(dir) and not ignore_dir(dir)) and not ignore_branch(branch) then M.start() end diff --git a/lua/telescope/_extensions/persisted/actions.lua b/lua/telescope/_extensions/persisted/actions.lua index 3fc72ce..dff5687 100644 --- a/lua/telescope/_extensions/persisted/actions.lua +++ b/lua/telescope/_extensions/persisted/actions.lua @@ -1,7 +1,7 @@ local actions_state = require("telescope.actions.state") local transform_mod = require("telescope.actions.mt").transform_mod -local utils = require("persisted.utils") +local persisted = require("persisted") local M = {} ---Get the selected session from Telescope @@ -18,7 +18,7 @@ M.load_session = function(session, config) vim.api.nvim_exec_autocmds("User", { pattern = "PersistedTelescopeLoadPre", data = session }) vim.schedule(function() - utils.load_session(session.file_path, config.silent) + persisted.load({ session = session.file_path }) end) vim.api.nvim_exec_autocmds("User", { pattern = "PersistedTelescopeLoadPost", data = session })