emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/ellama 150e0664e8 08/11: Add rename session


From: ELPA Syncer
Subject: [elpa] externals/ellama 150e0664e8 08/11: Add rename session
Date: Thu, 18 Jan 2024 15:57:53 -0500 (EST)

branch: externals/ellama
commit 150e0664e8ba936f747712104a89707557cff929
Author: Sergey Kostyaev <sskostyaev@gmail.com>
Commit: Sergey Kostyaev <sskostyaev@gmail.com>

    Add rename session
---
 ellama.el | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/ellama.el b/ellama.el
index 9afb2f3d35..85bf0bde9e 100644
--- a/ellama.el
+++ b/ellama.el
@@ -454,6 +454,39 @@ PROMPT is a variable contains last prompt in this session."
     (setq ellama--current-session-id id)
     (display-buffer buffer)))
 
+(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)
+      (rename-file file-name new-file-name))
+    (when (file-exists-p session-file-name)
+      (rename-file session-file-name new-session-file-name))
+    (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)))
+
 (defun ellama-stream (prompt &rest args)
   "Query ellama for PROMPT.
 ARGS contains keys for fine control.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]