diff options
author | Stephen Leake <stephen_leake@stephe-leake.org> | 2015-07-29 18:30:36 -0500 |
---|---|---|
committer | Stephen Leake <stephen_leake@stephe-leake.org> | 2015-07-29 18:30:36 -0500 |
commit | 72fea2fac543558cd2c4bd55e6f714f9f43efbc3 (patch) | |
tree | 9527af5fcfb321feec01771a2d9149a88261bffc /lisp/window.el | |
parent | 11d40d38c809df93956b4dbad7a3be0722d066ff (diff) | |
download | emacs-72fea2fac543558cd2c4bd55e6f714f9f43efbc3.tar.gz |
Add display-buffer action display-buffer-use-some-frame
* lisp/window.el (display-buffer-use-some-frame): new
Diffstat (limited to 'lisp/window.el')
-rw-r--r-- | lisp/window.el | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/lisp/window.el b/lisp/window.el index f15dd9b7355..986c55380d0 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -6488,6 +6488,39 @@ its documentation for additional customization information." ;;; `display-buffer' action functions: +(defun display-buffer-use-some-frame (buffer alist) + "Display BUFFER in an existing 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 +raising the frame. + +If ALIST has a non-nil `pop-up-frame-parameters' entry, the +corresponding value is an alist of frame parameters to give the +new frame. + +If ALIST has a non-nil `frame-predicate' entry, the corresponding +value is a function taking one argument (a frame), returning +non-nil if the frame is a candidate." + (let* ((predicate (or (cdr (assoc 'frame-predicate alist)) + (lambda (frame) + (and + (not (eq frame (selected-frame))) + (not (window-dedicated-p + (or + (get-lru-window frame) + (frame-first-window frame))))) + ))) + (frame (car (filtered-frame-list predicate))) + (window (and frame (get-lru-window frame)))) + (when window + (prog1 + (window--display-buffer + buffer window 'frame alist display-buffer-mark-dedicated) + (unless (cdr (assq 'inhibit-switch-frame alist)) + (window--maybe-raise-frame frame)))) + )) + (defun display-buffer-same-window (buffer alist) "Display BUFFER in the selected window. This fails if ALIST has a non-nil `inhibit-same-window' entry, or |