Function: edebug-pop-to-buffer
edebug-pop-to-buffer is a byte-compiled function defined in
edebug.el.gz.
Signature
(edebug-pop-to-buffer BUFFER &optional WINDOW)
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/edebug.el.gz
(defun edebug-pop-to-buffer (buffer &optional window)
;; Like pop-to-buffer, but select window where BUFFER was last shown.
;; Select WINDOW if it is provided and still exists. Otherwise,
;; if buffer is currently shown in several windows, choose one.
;; Otherwise, find a new window, possibly splitting one.
;; FIXME: We should probably just be using `pop-to-buffer'.
(setq window
(cond
((and (window-live-p window)
(eq (window-buffer window) buffer))
window)
((eq (window-buffer) buffer)
;; Selected window already displays BUFFER.
(selected-window))
((get-buffer-window buffer 0))
((one-window-p 'nomini)
;; When there's one window only, split it.
(split-window (minibuffer-selected-window)))
((let ((trace-window (get-buffer-window edebug-trace-buffer)))
(catch 'found
(dolist (elt (window-list nil 'nomini))
(unless (or (eq elt (selected-window)) (eq elt trace-window)
(window-dedicated-p elt))
;; Found a non-dedicated window not showing
;; `edebug-trace-buffer', use it.
(throw 'found elt))))))
;; All windows are dedicated or show `edebug-trace-buffer', split
;; selected one.
(t (split-window (minibuffer-selected-window)))))
(set-window-buffer window buffer)
(select-window window)
(unless (memq (framep (selected-frame)) '(nil t pc))
(x-focus-frame (selected-frame)))
(set-window-hscroll window 0)) ;; should this be??