@@ -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