Skip to content

Commit 06c85d9

Browse files
committed
Add eca-chat-rename
1 parent c03a208 commit 06c85d9

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

eca-chat.el

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,7 @@ Must be a positive integer."
330330
(defvar-local eca-chat--history-index -1)
331331
(defvar-local eca-chat--id nil)
332332
(defvar-local eca-chat--title nil)
333+
(defvar-local eca-chat--custom-title nil)
333334
(defvar-local eca-chat--last-request-id 0)
334335
(defvar-local eca-chat--context-completion-cache (make-hash-table :test 'equal))
335336
(defvar-local eca-chat--command-completion-cache (make-hash-table :test 'equal))
@@ -378,6 +379,7 @@ Must be a positive integer."
378379
(define-key map (kbd "C-c C-S-a") #'eca-chat-tool-call-accept-next)
379380
(define-key map (kbd "C-c C-s") #'eca-chat-tool-call-accept-all-and-remember)
380381
(define-key map (kbd "C-c C-r") #'eca-chat-tool-call-reject-next)
382+
(define-key map (kbd "C-c C-S-r") #'eca-chat-rename)
381383
(define-key map (kbd "C-c .") #'eca-transient-menu)
382384
(define-key map (kbd "C-c C-,") #'eca-mcp-details)
383385
(define-key map (kbd "C-c C-<up>") #'eca-chat-go-to-prev-user-message)
@@ -854,8 +856,11 @@ Otherwise show plain integer."
854856
(concat
855857
(when eca-chat--closed
856858
(propertize "*Closed session*" 'font-lock-face 'eca-chat-system-messages-face))
857-
(when eca-chat--title
858-
(propertize eca-chat--title 'font-lock-face 'eca-chat-title-face))
859+
(cond
860+
(eca-chat--custom-title
861+
(propertize eca-chat--custom-title 'font-lock-face 'eca-chat-title-face))
862+
(eca-chat--title
863+
(propertize eca-chat--title 'font-lock-face 'eca-chat-title-face)))
859864
fill-space
860865
usage-str)))
861866

@@ -1926,6 +1931,7 @@ string."
19261931
(setq-local eca-chat--session-cost nil)
19271932
(setq-local eca-chat--empty t)
19281933
(setq-local eca-chat--title nil)
1934+
(setq-local eca-chat--custom-title nil)
19291935
;; Reset per-buffer tool prepare counters to avoid leaking across sessions
19301936
(setq-local eca-chat--tool-call-prepare-counters (make-hash-table :test 'equal))
19311937
(setq-local eca-chat--tool-call-prepare-content-cache (make-hash-table :test 'equal))
@@ -2065,14 +2071,18 @@ if ARG is current prefix, ask for file, otherwise add current file."
20652071
(defun eca-chat-select ()
20662072
"Select a chat."
20672073
(interactive)
2068-
(let ((session (eca-session)))
2074+
(let ((session (eca-session))
2075+
(get-title-fn (lambda ()
2076+
(or eca-chat--custom-title
2077+
eca-chat--title
2078+
eca-chat--id))))
20692079
(eca-assert-session-running session)
20702080
(let ((items (append
20712081
(sort
20722082
(-keep (lambda (buffer)
20732083
(when (buffer-live-p buffer)
20742084
(with-current-buffer buffer
2075-
(when-let ((item (or eca-chat--title eca-chat--id)))
2085+
(when-let ((item (funcall get-title-fn)))
20762086
(propertize item
20772087
'face (when eca-chat--chat-loading 'warning))))))
20782088
(eca-vals (eca--session-chats session)))
@@ -2089,13 +2099,21 @@ if ARG is current prefix, ask for file, otherwise add current file."
20892099
(if-let (buffer (-first (lambda (buffer)
20902100
(when (buffer-live-p buffer)
20912101
(with-current-buffer buffer
2092-
(string= chosen-title (or eca-chat--title eca-chat--id)))))
2102+
(string= chosen-title (funcall get-title-fn)))))
20932103
(eca-vals (eca--session-chats session))))
20942104
(progn
20952105
(setf (eca--session-last-chat-buffer session) buffer)
20962106
(eca-chat-open session))
20972107
(eca-chat-new))))))
20982108

2109+
;;;###autoload
2110+
(defun eca-chat-rename (new-name)
2111+
"Rename last visited chat to a custom NEW-NAME."
2112+
(interactive "sInform the new chat title: ")
2113+
(eca-assert-session-running (eca-session))
2114+
(with-current-buffer (eca-chat--get-last-buffer (eca-session))
2115+
(setq eca-chat--custom-title new-name)))
2116+
20992117
;;;###autoload
21002118
(defun eca-chat-new ()
21012119
"Start a new ECA chat for same session."

eca-util.el

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ Inheirits BASE-MAP."
192192
("f" "New" eca-chat-select)
193193
("c" "Clear" eca-chat-clear)
194194
("r" "Reset" eca-chat-reset)
195+
("R" "Rename" eca-chat-rename)
195196
("t" "Talk" eca-chat-talk)
196197
("m" "Select model" eca-chat-select-model)
197198
("b" "Change behavior" eca-chat-select-behavior)

0 commit comments

Comments
 (0)