@@ -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 }
0 commit comments