diff --git a/doc/tags b/doc/tags new file mode 100644 index 0000000..b151140 --- /dev/null +++ b/doc/tags @@ -0,0 +1,6 @@ +telescope-resession-links telescope-resession.txt /*telescope-resession-links* +telescope-resession-table-of-contents telescope-resession.txt /*telescope-resession-table-of-contents* +telescope-resession-telescope-resession.nvim telescope-resession.txt /*telescope-resession-telescope-resession.nvim* +telescope-resession-telescope-resession.nvim-customization telescope-resession.txt /*telescope-resession-telescope-resession.nvim-customization* +telescope-resession-telescope-resession.nvim-usage telescope-resession.txt /*telescope-resession-telescope-resession.nvim-usage* +telescope-resession.txt telescope-resession.txt /*telescope-resession.txt* diff --git a/lua/telescope/_extensions/resession/.picker.lua.swp b/lua/telescope/_extensions/resession/.picker.lua.swp new file mode 100644 index 0000000..e3f9466 Binary files /dev/null and b/lua/telescope/_extensions/resession/.picker.lua.swp differ diff --git a/lua/telescope/_extensions/resession/picker.lua b/lua/telescope/_extensions/resession/picker.lua index 0e6966e..be289cf 100644 --- a/lua/telescope/_extensions/resession/picker.lua +++ b/lua/telescope/_extensions/resession/picker.lua @@ -7,6 +7,33 @@ local utils = require("telescope._extensions.resession.utils") local M = {} +-- Rename the selected session +--- @param prompt_bufnr number +function M.rename_session(prompt_bufnr) + local opts = require("telescope._extensions.resession.config").opts + local session = action_state.get_selected_entry()[1] + local old_filename = utils.encode_session(session, opts) .. ".json" + old_filename = utils.full_filename(old_filename) + local new_filename = "" + + vim.ui.input({ + prompt = "Rename Session", + default = session, + }, function(input) + if input == "" or input == nil then + return + end + new_filename = utils.encode_session(input, opts) .. ".json" + new_filename = utils.full_filename(new_filename) + vim.notify("old: " .. vim.inspect(old_filename) .. " new: " .. vim.inspect(new_filename)) + local ok, err, _ = vim.uv.fs_rename(old_filename, new_filename) + vim.notify(vim.inspect(err)) + -- Refresh the picker + actions.close(prompt_bufnr) + M.resession_picker() + end) +end + -- Delete the selected session ---@param prompt_bufnr number function M.delete_session(prompt_bufnr) @@ -45,6 +72,8 @@ function M.resession_picker() map("n", "", M.load_session) map("i", "", M.delete_session) map("n", "", M.delete_session) + map("i", "", M.rename_session) + map("n", "", M.rename_session) return true end, diff --git a/lua/telescope/_extensions/resession/utils.lua b/lua/telescope/_extensions/resession/utils.lua index 743f29b..349ecc5 100644 --- a/lua/telescope/_extensions/resession/utils.lua +++ b/lua/telescope/_extensions/resession/utils.lua @@ -4,6 +4,13 @@ M.internal_substitutions = { { find = "/", replace = "_" }, } +--- Convert filename into full path +--- @param filename string The base filename +M.full_filename = function(filename) + local dir = require("resession.util").get_session_dir() + return vim.fs.joinpath(dir, filename) +end + --- Apply a list of substitutions to a path/session string --- @param path string The path/session string to apply the substitutions to --- @param substitutions substitution[]? The list of substitutions to apply