(defun switch-to-buffer (bufname &optional norecord)
"Select buffer BUFNAME in the current window.
-BUFNAME may be a buffer or a buffer name and is created if did not exist.
-Optional second arg NORECORD non-nil means
-do not put this buffer at the front of the list of recently selected ones.
+BUFNAME may be a buffer or a buffer name and is created if it did not exist.
+Optional second arg NORECORD non-nil means do not put this buffer at the
+front of the list of recently selected ones.
WARNING: This is NOT the way to work on another buffer temporarily
within a Lisp program! Use `set-buffer' instead. That avoids messing with
(set-buffer-major-mode buf))))
(push-window-configuration)
(set-buffer buf)
- (or norecord (record-buffer buf))
- (set-window-buffer (if (eq (selected-window) (minibuffer-window))
- (next-window (minibuffer-window))
- (selected-window))
- buf)
+ (set-window-buffer (last-nonminibuf-window) buf norecord)
buf))
(defun pop-to-buffer (bufname &optional not-this-window-p on-frame)
another window even if BUFNAME is already visible in the selected window.
If optional third arg is non-nil, it is the frame to pop to this
buffer on.
-If `focus-follows-mouse' is non-nil, keyboard focus is left unchanged."
+If `focus-follows-mouse' is non-nil, keyboard focus is left unchanged.
+
+Buffers with names that are members of the `same-window-buffer-names'
+list, or that match an element of the `same-window-regexps' list are
+treated specially by this function--they are always selected in the
+same window rather than in a different one."
;; #ifdef I18N3
;; #### Doc string should indicate that the buffer name will get
;; translated.