Function: eca-chat--display-buffer

eca-chat--display-buffer is a natively compiled function defined in eca-chat.el.

Signature

(eca-chat--display-buffer BUFFER)

Documentation

Display BUFFER according to customization.

When eca-chat-window-side is nil, display BUFFER in the selected window unless it is already visible on the selected frame. Otherwise, display it on the configured side using either a side window or a regular directional window. If eca-chat-focus-on-open is non-nil, select the resulting window.

Source Code

;; Defined in /nix/store/jklqzw6pzz6j4jrbv8wy0iwgi7jlrbld-emacs-packages-deps/share/emacs/site-lisp/elpa/eca-20260928.1827/eca-chat.el
(defun eca-chat--display-buffer (buffer)
  "Display BUFFER according to customization.
When `eca-chat-window-side' is nil, display BUFFER in the selected
window unless it is already visible on the selected frame.  Otherwise,
display it on the configured side using either a side window or a
regular directional window.  If `eca-chat-focus-on-open' is non-nil,
select the resulting window."
  (let* ((side eca-chat-window-side)
         (size (when side
                 (if (memq side '(left right))
                     `((window-width . ,eca-chat-window-width))
                   `((window-height . ,eca-chat-window-height)))))
         (display-action
          (when side
            (if eca-chat-use-side-window
                `((display-buffer-in-side-window)
                  (side . ,side)
                  (slot . 0)
                  (dedicated . side)
                  ,@size
                  (window-parameters . ((no-delete-other-windows . t))))
              `((display-buffer-in-direction)
                (direction . ,(pcase side
                                ('top 'above)
                                ('bottom 'below)
                                (_ side)))
                ,@size))))
         (window
          (or
           ;; Already visible: keep it where it is.
           (get-buffer-window buffer)
           ;; Side-based modes reuse a visible chat (new-tab behavior).
           (when side
             (when-let* ((win
                          (if (buffer-local-value
                               'eca-chat--id
                               (window-buffer (selected-window)))
                              (selected-window)
                            (get-window-with-predicate
                             (lambda (w)
                               (buffer-local-value
                                'eca-chat--id (window-buffer w)))))))
               (set-window-buffer win buffer)
               win))
           ;; Nothing to reuse: open according to the configured mode.
           (if side
               (display-buffer buffer display-action)
             (eca-chat--display-in-selected-window buffer)))))
    ;; Select the window to give it focus if configured to do so.
    (when (and window eca-chat-focus-on-open)
      (select-window window))
    window))