1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 10:30:25 -08:00

Add support for 'inhibit-same-window in 'display-buffer-use-some-frame'

* lisp/window.el (display-buffer-use-some-frame): Add support for
'inhibit-same-window in alist.

* doc/windows.texi (display-buffer-use-some-frame): Doc support for
'inhibit-same-window in alist.
This commit is contained in:
Stephen Leake 2015-08-07 10:03:59 -05:00
parent 701484d524
commit 4daa09e499
2 changed files with 16 additions and 10 deletions

View file

@ -2306,16 +2306,18 @@ This function tries to ``display'' @var{buffer} by trying to find a
frame that meets a predicate (by default any frame other than the
current frame).
If @var{alist} has a non-@code{nil} @code{`inhibit-switch-frame} entry,
avoid raising the frame.
If this function chooses a window on another frame, it makes that frame
visible and, unless @var{alist} contains an @code{inhibit-switch-frame}
entry (@pxref{Choosing Window Options}), raises that frame if necessary.
If @var{alist} has a non-nil @code{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 this function chooses a window on another frame, it makes that frame
visible and, unless @var{alist} contains an @code{inhibit-switch-frame}
entry (@pxref{Choosing Window Options}), raises that frame if necessary.
If @var{alist} has a non-@code{nil} @code{inhibit-same-window} entry,
the selected window is used; thus if the selected frame has a single
window, it is not used.
@end defun
@defun display-buffer-pop-up-window buffer alist

View file

@ -1,4 +1,4 @@
;;; window.el --- GNU Emacs window commands aside from those written in C
e;;; window.el --- GNU Emacs window commands aside from those written in C
;; Copyright (C) 1985, 1989, 1992-1994, 2000-2015 Free Software
;; Foundation, Inc.
@ -6490,7 +6490,7 @@ its documentation for additional customization information."
(defun display-buffer-use-some-frame (buffer alist)
"Display BUFFER in an existing frame that meets a predicate
(by default any frame other than the current frame). If
\(by default any frame other than the current frame). If
successful, return the window used; otherwise return nil.
If ALIST has a non-nil `inhibit-switch-frame' entry, avoid
@ -6499,8 +6499,12 @@ raising the frame.
If ALIST 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."
(let* ((predicate (or (cdr (assoc 'frame-predicate alist))
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 the selected frame)."
(let* ((predicate (or (cdr (assq 'frame-predicate alist))
(lambda (frame)
(and
(not (eq frame (selected-frame)))
@ -6510,7 +6514,7 @@ predicate."
(frame-first-window frame)))))
)))
(frame (car (filtered-frame-list predicate)))
(window (and frame (get-lru-window frame))))
(window (and frame (get-lru-window frame nil (cdr (assq 'inhibit-same-window alist))))))
(when window
(prog1
(window--display-buffer