branch: externals/ellama
commit 88400ce33685971c00ef7d509b247d9a3a1ebefe
Author: Sergey Kostyaev <sskosty...@gmail.com>
Commit: Sergey Kostyaev <sskosty...@gmail.com>

    Rename session functionality improvements
    
    Refactored `ellama-session-rename` function to improve variable handling 
and add
    auto-save feature. Ensured proper renaming of buffers, files, and session 
data,
    with checks for existence before performing file operations. Added 
condition to
    save buffer if `ellama-session-auto-save` is enabled.
---
 ellama.el | 53 +++++++++++++++++++++++++++++------------------------
 1 file changed, 29 insertions(+), 24 deletions(-)

diff --git a/ellama.el b/ellama.el
index 4b5dedd5eb..2250673ce8 100644
--- a/ellama.el
+++ b/ellama.el
@@ -1001,35 +1001,40 @@ If EPHEMERAL non nil new session will not be associated 
with any file."
 (defun ellama-session-rename ()
   "Rename current ellama session."
   (interactive)
-  (when-let* ((id (if ellama--current-session
-                     (ellama-session-id ellama--current-session)
-                   ellama--current-session-id))
-             (buffer (ellama-get-session-buffer id))
-             (session (with-current-buffer buffer
-                        ellama--current-session))
-             (file-name (buffer-file-name buffer))
-             (file-ext (file-name-extension file-name))
-             (dir (file-name-directory file-name))
-             (session-file-name (ellama--get-session-file-name file-name))
-             (new-id (read-string
-                      "New session name: "
-                      id))
-             (new-file-name (file-name-concat
-                             dir
-                             (concat new-id "." file-ext)))
-             (new-session-file-name
-              (ellama--get-session-file-name new-file-name)))
-    (with-current-buffer buffer
-      (set-visited-file-name new-file-name))
-    (when (file-exists-p file-name)
+  (let* ((id (if ellama--current-session
+                (ellama-session-id ellama--current-session)
+              ellama--current-session-id))
+        (buffer (when id (ellama-get-session-buffer id)))
+        (session (when buffer (with-current-buffer buffer
+                                ellama--current-session)))
+        (file-name (when buffer (buffer-file-name buffer)))
+        (file-ext (when file-name (file-name-extension file-name)))
+        (dir (when file-name (file-name-directory file-name)))
+        (session-file-name (when file-name (ellama--get-session-file-name 
file-name)))
+        (new-id (read-string
+                 "New session name: "
+                 id))
+        (new-file-name (when dir (file-name-concat
+                                  dir
+                                  (concat new-id "." file-ext))))
+        (new-session-file-name
+         (when new-file-name (ellama--get-session-file-name new-file-name))))
+    (when new-file-name (with-current-buffer buffer
+                         (set-visited-file-name new-file-name)))
+    (when buffer (with-current-buffer buffer
+                  (rename-buffer (or new-file-name new-id))))
+    (when (and file-name (file-exists-p file-name))
       (rename-file file-name new-file-name))
-    (when (file-exists-p session-file-name)
+    (when (and session-file-name (file-exists-p session-file-name))
       (rename-file session-file-name new-session-file-name))
-    (setf (ellama-session-id session) new-id)
+    (when session (setf (ellama-session-id session) new-id))
     (when (equal ellama--current-session-id id)
       (setq ellama--current-session-id new-id))
     (remhash id ellama--active-sessions)
-    (puthash new-id buffer ellama--active-sessions)))
+    (puthash new-id buffer ellama--active-sessions)
+    (when (and buffer ellama-session-auto-save)
+      (with-current-buffer buffer
+       (save-buffer)))))
 
 (defvar ellama--context-buffer " *ellama-context*")
 

Reply via email to