Skip to content

Commit 8e3ba9e

Browse files
authored
feat: add rename session (#68) (#69)
* feat: add rename session (#68) add remarks * update doc * chore: add linted files
1 parent 49bc69d commit 8e3ba9e

File tree

3 files changed

+34
-7
lines changed

3 files changed

+34
-7
lines changed

doc/possession.txt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,10 @@ Exposed interfaces
5858
-------------------------------------------------------------------------------------
5959
function description interaction
6060
--------------------- --------------------------------- -----------------------------
61-
possession.list() list all the existing sessions <CR> load selected
62-
with fzf-lua; preview shows files session<Ctrl-x> delete
63-
in session selection session
61+
possession.list() list all the existing sessions <CR> load selected session
62+
with fzf-lua; preview shows files <Ctrl-x> delete selected session
63+
in session <Ctrl-r> rename selected session
64+
6465

6566
possession.new() prompt for name to create new session folder must alredy
6667
session exist, return a message error

lua/nvim-possession/init.lua

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,31 @@ M.setup = function(user_opts)
117117
end
118118
end
119119

120+
---rename selected session
121+
---@param selected string
122+
M.rename_selected = function(selected)
123+
local session_path = user_config.sessions.sessions_path
124+
local old_name = selected[1]
125+
local old_file_path = session_path .. old_name
126+
127+
local new_name = vim.fn.input("Enter new name for the session: ", old_name)
128+
129+
if new_name and new_name ~= "" then
130+
local new_file_path = session_path .. new_name
131+
132+
os.rename(old_file_path, new_file_path)
133+
134+
vim.notify(
135+
"Session renamed from " .. old_name .. " to " .. new_name,
136+
vim.log.levels.INFO,
137+
{ title = notification_title }
138+
)
139+
else
140+
vim.notify("New name cannot be empty", vim.log.levels.WARN, { title = notification_title })
141+
end
142+
end
143+
fzf.config.set_action_helpstr(M.rename_selected, "rename-session")
144+
120145
---list all existing sessions and their files
121146
---@param cwd boolean|nil
122147
M.list = function(cwd)
@@ -151,6 +176,7 @@ M.setup = function(user_opts)
151176
actions = {
152177
["enter"] = M.load,
153178
["ctrl-x"] = { M.delete_selected, fzf.actions.resume, header = "delete session" },
179+
["ctrl-r"] = { M.rename_selected, fzf.actions.resume, header = "rename session" },
154180
["ctrl-n"] = { fn = M.new, header = "new session" },
155181
},
156182
}

lua/nvim-possession/utils.lua

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,11 +111,11 @@ end
111111
---2) save and close all modifiable buffers
112112
---@param config table
113113
M.autoswitch = function(config)
114-
if vim.api.nvim_buf_get_name(0) ~= "" then
115-
vim.cmd.write()
116-
end
114+
if vim.api.nvim_buf_get_name(0) ~= "" then
115+
vim.cmd.write()
116+
end
117117
M.autosave(config)
118-
vim.cmd([[silent! bufdo if expand('%') !=# '' | edit | endif]])
118+
vim.cmd([[silent! bufdo if expand('%') !=# '' | edit | endif]])
119119
local buf_list = vim.tbl_filter(function(buf)
120120
return vim.api.nvim_buf_is_valid(buf)
121121
and vim.bo[buf].buflisted

0 commit comments

Comments
 (0)