Function: eca-chat-go-to-next-attention
eca-chat-go-to-next-attention is an interactive and natively compiled
function defined in eca-chat.el.
Signature
(eca-chat-go-to-next-attention)
Documentation
Go to the next chat needing attention, cycling across projects.
A chat needs attention when it is waiting on you: a tool call pending approval or an unanswered question. Exhausts the current project's chats first, then moves on to the next project (ECA session), eventually visiting them all and wrapping around.
Key Bindings
This command is not in any keymaps.
Source Code
;; Defined in /nix/store/jklqzw6pzz6j4jrbv8wy0iwgi7jlrbld-emacs-packages-deps/share/emacs/site-lisp/elpa/eca-20260928.1827/eca-chat.el
;;;###autoload
(defun eca-chat-go-to-next-attention ()
"Go to the next chat needing attention, cycling across projects.
A chat needs attention when it is waiting on you: a tool call
pending approval or an unanswered question. Exhausts the current
project's chats first, then moves on to the next project (ECA
session), eventually visiting them all and wrapping around."
(interactive)
(let ((sessions (sort (copy-sequence (eca-vals eca--sessions))
(lambda (a b)
(< (eca--session-id a) (eca--session-id b))))))
(eca-assert-session-running (car sessions))
(let* ((entries (cl-loop
for session in sessions
append (cl-loop
for buffer in (eca-chat--session-chats-oldest-first
session)
collect (cons session buffer))))
;; Anchor at the current chat; when not in a chat, anchor just
;; before the current session's entries so they are searched
;; first.
(pos (or (cl-position (current-buffer) entries :key #'cdr)
(when-let* ((session (eca-session))
(idx (cl-position session entries
:key #'car)))
(1- idx))))
(target (seq-find (lambda (entry)
(eca-chat--needs-attention-p (cdr entry)))
(eca-chat--rotate-after entries pos))))
(if target
(eca-chat--switch-to-buffer (cdr target) (car target))
(eca-info "No chat needs attention in any project")))))