Function: display-buffer-use-some-frame

display-buffer-use-some-frame is a byte-compiled function defined in window.el.gz.

Signature

(display-buffer-use-some-frame BUFFER ALIST)

Documentation

Display BUFFER in an existing frame that meets a predicate.

The default predicate is to use any frame other than the selected frame. If successful, return the window used; otherwise return nil.

ALIST is an association list of action symbols and values. See Info node (elisp) Buffer Display Action Alists for details of such alists.

If ALIST has a non-nil inhibit-switch-frame entry, avoid raising the frame. If it has a non-nil frame-predicate entry, its value is a function taking one argument (a frame), returning non-nil if the frame is a candidate; this function replaces the default predicate. If ALIST has a non-nil inhibit-same-window entry, avoid using the currently selected window (only useful with a frame-predicate that allows using the selected frame).

This is an action function for buffer display, see Info node (elisp) Buffer Display Action Functions. It should be called only by display-buffer or a function directly or indirectly called by the latter.

View in manual

Probably introduced at or before Emacs version 25.1.

Source Code

;; Defined in /usr/src/emacs/lisp/window.el.gz
;;; `display-buffer' action functions:

(defun display-buffer-use-some-frame (buffer alist)
  "Display BUFFER in an existing frame that meets a predicate.
The default predicate is to use any frame other than the selected
frame.  If successful, return the window used; otherwise return
nil.

ALIST is an association list of action symbols and values.  See
Info node `(elisp) Buffer Display Action Alists' for details of
such alists.

If ALIST has a non-nil `inhibit-switch-frame' entry, avoid
raising the frame.  If it has a non-nil `frame-predicate' entry,
its value is a function taking one argument (a frame), returning
non-nil if the frame is a candidate; this function replaces the
default predicate.  If ALIST has a non-nil `inhibit-same-window'
entry, avoid using the currently selected window (only useful
with a frame-predicate that allows using the selected frame).

This is an action function for buffer display, see Info
node `(elisp) Buffer Display Action Functions'.  It should be
called only by `display-buffer' or a function directly or
indirectly called by the latter."
  (let* ((predicate
          (or (cdr (assq 'frame-predicate alist))
              (lambda (frame)
                (and (not (eq frame (selected-frame)))
                     (get-lru-window frame)))))
         (frame (car (filtered-frame-list predicate)))
         (window
          (and frame
               (get-lru-window
                frame nil (cdr (assq 'inhibit-same-window alist))))))
    (when window
      (prog1
          (window--display-buffer buffer window 'reuse alist)
        (unless (cdr (assq 'inhibit-switch-frame alist))
          (window--maybe-raise-frame frame))))))