Function: eca-chat-open
eca-chat-open is a natively compiled function defined in eca-chat.el.
Signature
(eca-chat-open SESSION)
Documentation
Open or create dedicated eca chat window for SESSION.
Source Code
;; Defined in /nix/store/jklqzw6pzz6j4jrbv8wy0iwgi7jlrbld-emacs-packages-deps/share/emacs/site-lisp/elpa/eca-20260928.1827/eca-chat.el
(defun eca-chat-open (session)
"Open or create dedicated eca chat window for SESSION."
(eca-assert-session-running session)
(unless (buffer-live-p (eca-chat--get-last-buffer session))
(eca-chat--create-buffer session))
(eca-chat--with-current-buffer (eca-chat--get-last-buffer session)
(unless (derived-mode-p 'eca-chat-mode)
(let ((eca--chat-init-session session))
(eca-chat-mode))
;; Generate the chat-id eagerly so every chat/* request (including
;; the very first chat/prompt) carries a real id. The server
;; treats a previously-unknown id as a new empty chat.
(setq-local eca-chat--id (eca-uuid))
(eca-chat--initialize-selection-state session)
(eca-chat--track-cursor-position-schedule)
(when eca-chat-auto-add-cursor
(eca-chat--add-context (list :type "cursor")))
(when eca-chat-auto-add-repomap
(eca-chat--add-context (list :type "repoMap"))))
(unless (member (current-buffer) (eca-vals (eca--session-chats session)))
(cl-assert eca-chat--id nil "eca-chat--id must be set before registering buffer")
(setf (eca--session-chats session)
(eca-assoc (eca--session-chats session) eca-chat--id (current-buffer)))
(eca-chat--invalidate-tab-line-cache session)
(eca-chat--notify-status-changed session))
(if (window-live-p (get-buffer-window (buffer-name)))
(eca-chat--select-window)
(eca-chat--pop-window))
(unless (eca--session-last-chat-buffer session)
(setf (eca--session-last-chat-buffer session) (current-buffer))))
(eca-chat--track-cursor))