Function: claude-code-ide--display-buffer-in-side-window

claude-code-ide--display-buffer-in-side-window is a natively compiled function defined in claude-code-ide.el.

Signature

(claude-code-ide--display-buffer-in-side-window BUFFER)

Documentation

Display BUFFER in a side window according to customization.

The window is displayed on the side specified by claude-code-ide-window-side with dimensions from claude-code-ide-window-width or claude-code-ide-window-height. If claude-code-ide-focus-on-open is non-nil, the window is selected.

Source Code

;; Defined in /nix/store/yjvbhwl7p6zrbw9xlnni7y4hra8sa3pl-emacs-packages-deps/share/emacs/site-lisp/claude-code-ide.el
(defun claude-code-ide--display-buffer-in-side-window (buffer)
  "Display BUFFER in a side window according to customization.
The window is displayed on the side specified by
`claude-code-ide-window-side' with dimensions from
`claude-code-ide-window-width' or `claude-code-ide-window-height'.
If `claude-code-ide-focus-on-open' is non-nil, the window is selected."
  (let ((window
         (if claude-code-ide-use-side-window
             ;; Use side window
             (let* ((side claude-code-ide-window-side)
                    ;; Each instance owns a slot, so several instances can
                    ;; be visible side by side instead of evicting each other
                    (slot (or (when-let* ((session (claude-code-ide--buffer-session buffer)))
                                (claude-code-ide-mcp-session-window-slot session))
                              0))
                    (window-parameters '((no-delete-other-windows . t)))
                    (display-buffer-alist
                     `((,(regexp-quote (buffer-name buffer))
                        (display-buffer-in-side-window)
                        (side . ,side)
                        (slot . ,slot)
                        ,@(when (memq side '(left right))
                            `((window-width
                               . ,(lambda (win)
                                    (let ((delta (- claude-code-ide-window-width
                                                    (window-body-width win))))
                                      (unless (zerop delta)
                                        (window-resize win delta t)))))))
                        ,@(when (memq side '(top bottom))
                            `((window-height . ,claude-code-ide-window-height)))
                        (window-parameters . ,window-parameters)))))
               (display-buffer buffer))
           ;; Use regular buffer
           (display-buffer buffer))))
    ;; Update last accessed buffer whenever we display a Claude buffer
    (setq claude-code-ide--last-accessed-buffer buffer)
    (when-let* ((session (claude-code-ide--buffer-session buffer)))
      (setf (claude-code-ide-mcp-session-last-used session) (float-time)))
    ;; Select the window to give it focus if configured to do so
    (when (and window claude-code-ide-focus-on-open)
      (select-window window))
    ;; For bottom/top windows, explicitly set and preserve the height
    (when (and window
               claude-code-ide-use-side-window
               (memq claude-code-ide-window-side '(top bottom)))
      (set-window-text-height window claude-code-ide-window-height))
    ;; Dedicate every Claude side window so unrelated display-buffer calls
    ;; don't reuse a visible instance's window
    (when (and window claude-code-ide-use-side-window)
      (set-window-dedicated-p window t))
    ;; Sync terminal dimensions with the actual window size
    ;; This is necessary because vterm/eat may have been created with
    ;; different dimensions before being displayed in this window
    (when window
      (claude-code-ide--sync-terminal-dimensions buffer window))
    window))