Skip to content

Commit d7fadb6

Browse files
committed
Fix rollback user messages to keep allowing rollback after first one
1 parent 415dafb commit d7fadb6

File tree

1 file changed

+24
-16
lines changed

1 file changed

+24
-16
lines changed

eca-chat.el

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -639,12 +639,19 @@ Must be a positive integer."
639639
(defun eca-chat--rollback (session content-id)
640640
"Rollback chat messages for SESSION to before CONTENT-ID."
641641
(unless eca-chat--chat-loading
642-
(let ((rollback-messages-str "Rollback only messages")
643-
(rollback-tools-str "Rollback only changes done by tool calls")
644-
(rollback-messages-and-tools-str "Rollback messages and changes done by tool calls"))
645-
(when-let* ((rollback-type (completing-read "Select the rollback type:" (list rollback-messages-and-tools-str
646-
rollback-messages-str
647-
rollback-tools-str) nil t)))
642+
(let ((rollback-messages-and-tools-str "1. Rollback messages and changes done by tool calls")
643+
(rollback-messages-str "2. Rollback only messages")
644+
(rollback-tools-str "3. Rollback only changes done by tool calls"))
645+
(when-let* ((rollback-type (completing-read "Select the rollback type:"
646+
(lambda (s pred action)
647+
(if (eq 'metadata action)
648+
`(metadata (display-sort-function . ,#'identity))
649+
(complete-with-action action
650+
(list rollback-messages-and-tools-str
651+
rollback-messages-str
652+
rollback-tools-str)
653+
s
654+
pred))) nil t)))
648655
(let ((include (cond
649656
((string= rollback-type rollback-messages-str) ["messages"])
650657
((string= rollback-type rollback-tools-str) ["tools"])
@@ -1125,8 +1132,8 @@ Applies LABEL-FACE to label and CONTENT-FACE to content."
11251132
'line-prefix (unless (string-empty-p content)
11261133
open-icon))
11271134
'keymap (let ((km (make-sparse-keymap)))
1128-
(define-key km (kbd "<mouse-1>") (lambda () (eca-chat--expandable-content-toggle id)))
1129-
(define-key km (kbd "<tab>") (lambda () (eca-chat--expandable-content-toggle id)))
1135+
(define-key km (kbd "<mouse-1>") (lambda () (interactive) (eca-chat--expandable-content-toggle id)))
1136+
(define-key km (kbd "<tab>") (lambda () (interactive) (eca-chat--expandable-content-toggle id)))
11301137
km)
11311138
'help-echo "mouse-1 / tab / RET: expand/collapse"))
11321139
(eca-chat--insert "\n")
@@ -1900,14 +1907,15 @@ Append STATUS, TOOL-CALL-NEXT-LINE-SPACING and ROOTS"
19001907
(when-let* ((text (plist-get content :text)))
19011908
(pcase role
19021909
("user"
1903-
(eca-chat--add-expandable-content
1904-
content-id
1905-
(propertize (string-trim-right text) 'font-lock-face 'eca-chat-user-messages-face)
1906-
(eca-buttonize
1907-
eca-chat-mode-map
1908-
(propertize "Rollback chat to before this message" 'font-lock-face 'eca-chat-rollback-face)
1909-
(lambda () (eca-chat--rollback session content-id)))
1910-
'eca-chat-user-messages-face)
1910+
(progn
1911+
(eca-chat--add-expandable-content
1912+
content-id
1913+
(propertize (string-trim text) 'font-lock-face 'eca-chat-user-messages-face)
1914+
(eca-buttonize
1915+
eca-chat-mode-map
1916+
(propertize "Rollback chat to before this message" 'font-lock-face 'eca-chat-rollback-face)
1917+
(lambda () (eca-chat--rollback session content-id)))
1918+
'eca-chat-user-messages-face))
19111919
(eca-chat--mark-header)
19121920
(font-lock-ensure))
19131921
("system"

0 commit comments

Comments
 (0)