mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-01 11:14:55 +00:00
(special-display-p): Revert 2009-01-14 change.
This commit is contained in:
parent
4cddb209b4
commit
987220737d
@ -1,3 +1,7 @@
|
||||
2009-01-15 Martin Rudalics <rudalics@gmx.at>
|
||||
|
||||
* window.el (special-display-p): Revert 2009-01-14 change.
|
||||
|
||||
2009-01-15 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* emacs-lisp/authors.el (authors-aliases, authors-fixed-case):
|
||||
|
@ -685,20 +685,22 @@ matching BUFFER-NAME. If `special-display-buffer-names' or
|
||||
`special-display-regexps' contain a list entry whose car equals
|
||||
or matches BUFFER-NAME, the return value is the cdr of that
|
||||
entry."
|
||||
(cond
|
||||
((not (stringp buffer-name)))
|
||||
((member buffer-name special-display-buffer-names) t)
|
||||
((let ((temp (assoc buffer-name special-display-buffer-names)))
|
||||
(cdr temp)))
|
||||
((catch 'found
|
||||
(dolist (regexp special-display-regexps)
|
||||
(cond
|
||||
((stringp regexp)
|
||||
(when (string-match-p regexp buffer-name)
|
||||
(throw 'found t)))
|
||||
((and (consp regexp) (stringp (car regexp))
|
||||
(string-match-p (car regexp) buffer-name))
|
||||
(throw 'found (cdr regexp)))))))))
|
||||
(let (tmp)
|
||||
(cond
|
||||
((not (stringp buffer-name)))
|
||||
((member buffer-name special-display-buffer-names)
|
||||
t)
|
||||
((setq tmp (assoc buffer-name special-display-buffer-names))
|
||||
(cdr tmp))
|
||||
((catch 'found
|
||||
(dolist (regexp special-display-regexps)
|
||||
(cond
|
||||
((stringp regexp)
|
||||
(when (string-match-p regexp buffer-name)
|
||||
(throw 'found t)))
|
||||
((and (consp regexp) (stringp (car regexp))
|
||||
(string-match-p (car regexp) buffer-name))
|
||||
(throw 'found (cdr regexp))))))))))
|
||||
|
||||
(defcustom special-display-function 'special-display-popup-frame
|
||||
"Function to call for displaying special buffers.
|
||||
@ -955,6 +957,59 @@ is higher than WINDOW."
|
||||
(enlarge-window (/ (- (window-height window) (window-height)) 2))
|
||||
(error nil)))))
|
||||
|
||||
(defun display-buffer-specially (buffer locus)
|
||||
(cond
|
||||
((window-minibuffer-p (selected-window))
|
||||
nil)
|
||||
((eq locus 'this)
|
||||
(condition-case nil
|
||||
(switch-to-buffer buffer)
|
||||
(error nil)))
|
||||
((memq locus '(below below-split right right-split))
|
||||
(let ((edges (window-edges)))
|
||||
(cond
|
||||
((and (eq locus 'below)
|
||||
(let* ((other-window (next-window))
|
||||
(other-edges (window-edges other-window)))
|
||||
(and (= (nth 0 edges) (nth 0 other-edges))
|
||||
(< (nth 3 edges) (nth 3 other-edges))
|
||||
other-window))))
|
||||
((and (eq locus 'right)
|
||||
(let* ((other-window (next-window))
|
||||
(other-edges (window-edges other-window)))
|
||||
(and (= (nth 1 edges) (nth 1 other-edges))
|
||||
(< (nth 2 edges) (nth 2 other-edges))
|
||||
other-window))))
|
||||
((and (memq locus '(below below-split))
|
||||
(let ((split-height-threshold 0))
|
||||
(and (window--splittable-p (selected-window))
|
||||
(split-window)))))
|
||||
((and (memq locus '(right right-split))
|
||||
(let ((split-width-threshold 0))
|
||||
(window--splittable-p (selected-window) t)
|
||||
(split-window nil nil t)))))))
|
||||
((memq locus '(bottom bottom-split))
|
||||
(let ((edges (window-edges))
|
||||
(other-edges (window-edges (next-window)))
|
||||
(window (selected-window))
|
||||
window-to-display window-to-split)
|
||||
;; Wrong -- our window must be better than the last we found.
|
||||
(while (or (> (nth 2 other-edges) (nth 2 edges))
|
||||
(> (nth 3 other-edges) (nth 3 edges)))
|
||||
(setq window (next-window window))
|
||||
(when (> (nth 3 other-edges) (nth 3 edges))
|
||||
(setq window-to-display window)
|
||||
(setq window-to-split
|
||||
(and (eq locus 'bottom-split)
|
||||
(let ((split-height-threshold 0))
|
||||
(and (window--splittable-p window)
|
||||
window)))))
|
||||
(setq other-edges (window-edges (next-window window))))
|
||||
(if (eq locus 'bottom)
|
||||
window-to-display
|
||||
(let ((split-height-threshold 0))
|
||||
(split-window window-to-split)))))))
|
||||
|
||||
(defun window--display-buffer-1 (window)
|
||||
"Raise the frame containing WINDOW.
|
||||
Do not raise the selected frame. Return WINDOW."
|
||||
@ -1066,6 +1121,9 @@ consider all visible or iconified frames."
|
||||
(when pars
|
||||
(funcall special-display-function
|
||||
buffer (if (listp pars) pars))))))
|
||||
((not (memq not-this-window '(nil t)))
|
||||
(window--display-buffer-2
|
||||
buffer (display-buffer-specially buffer not-this-window)))
|
||||
((or use-pop-up-frames (not frame-to-use))
|
||||
;; We want or need a new frame.
|
||||
(window--display-buffer-2
|
||||
|
Loading…
Reference in New Issue
Block a user