[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/ellama 38c6d5e4da 03/11: Add save and load session
|
From: |
ELPA Syncer |
|
Subject: |
[elpa] externals/ellama 38c6d5e4da 03/11: Add save and load session |
|
Date: |
Thu, 18 Jan 2024 15:57:52 -0500 (EST) |
branch: externals/ellama
commit 38c6d5e4da937f2b129b844aacfa5fed49d9978c
Author: Sergey Kostyaev <sskostyaev@gmail.com>
Commit: Sergey Kostyaev <sskostyaev@gmail.com>
Add save and load session
---
ellama.el | 47 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 47 insertions(+)
diff --git a/ellama.el b/ellama.el
index 315fc24ab5..2a0f207669 100644
--- a/ellama.el
+++ b/ellama.el
@@ -377,6 +377,53 @@ PROMPT is a variable contains last prompt in this session."
(advice-add #'kill-buffer :before #'ellama--session-deactivate)
+(defun ellama--get-session-file-name (file-name)
+ "Get ellama session file name for FILE-NAME."
+ (let* ((base-name (file-name-nondirectory file-name))
+ (dir (file-name-directory file-name))
+ (session-file-name
+ (file-name-concat
+ dir
+ (concat "." base-name ".session.el"))))
+ session-file-name))
+
+(defun ellama--save-session (&rest _)
+ "Save current ellama session."
+ (when ellama--current-session
+ (let* ((session ellama--current-session)
+ (file-name (ellama-session-file session))
+ (session-file-name (ellama--get-session-file-name file-name)))
+ (with-current-buffer (find-file-noselect session-file-name)
+ (delete-region (point-min) (point-max))
+ (insert (concat "(setq ellama--current-session " (prin1-to-string
session)")"))
+ (save-buffer)
+ (kill-buffer)))))
+
+(advice-add #'save-buffer :before #'ellama--save-session)
+
+(defun ellama-load-session ()
+ "Load ellama session from file."
+ (interactive)
+ (when-let* ((file-name (file-name-concat
+ ellama-sessions-directory
+ (completing-read
+ "Select session to load: "
+ (directory-files
+ ellama-sessions-directory nil "^[^\.].*"))))
+ (session-file-name (ellama--get-session-file-name file-name))
+ (session-file-exists (file-exists-p session-file-name))
+ (buffer (find-file-noselect file-name))
+ (session-buffer (find-file-noselect session-file-name)))
+ (with-current-buffer session-buffer
+ (goto-char (point-min)))
+ (with-current-buffer buffer
+ (eval (read session-buffer))
+ (setq ellama--current-session-id (ellama-session-id
ellama--current-session))
+ (puthash (ellama-session-id ellama--current-session)
+ buffer ellama--active-sessions))
+ (kill-buffer session-buffer)
+ (display-buffer buffer)))
+
(defun ellama-stream (prompt &rest args)
"Query ellama for PROMPT.
ARGS contains keys for fine control.
- [elpa] externals/ellama updated (35a398b63e -> b301ed87f5), ELPA Syncer, 2024/01/18
- [elpa] externals/ellama 839814129c 01/11: Begin session implementation, ELPA Syncer, 2024/01/18
- [elpa] externals/ellama 39b0a6cc92 10/11: Update documentation, ELPA Syncer, 2024/01/18
- [elpa] externals/ellama 150e0664e8 08/11: Add rename session, ELPA Syncer, 2024/01/18
- [elpa] externals/ellama 38c6d5e4da 03/11: Add save and load session,
ELPA Syncer <=
- [elpa] externals/ellama 078ae47dd5 05/11: Add directory selection for load session if needed, ELPA Syncer, 2024/01/18
- [elpa] externals/ellama b301ed87f5 11/11: Merge pull request #49 from s-kostyaev/session-management, ELPA Syncer, 2024/01/18
- [elpa] externals/ellama 6bc04eff78 02/11: Deactivate session on session buffer kill, ELPA Syncer, 2024/01/18
- [elpa] externals/ellama c23a04d287 09/11: Remove unused custom variable ellama-buffer-mode, ELPA Syncer, 2024/01/18
- [elpa] externals/ellama 7f309375d0 07/11: Add switch between active sessions, ELPA Syncer, 2024/01/18
- [elpa] externals/ellama 1a2c428506 06/11: Add session remove, ELPA Syncer, 2024/01/18
- [elpa] externals/ellama c783125b53 04/11: Add provider selection in new session if needed, ELPA Syncer, 2024/01/18