Mercurial > emacs
changeset 46597:ea15c9ca1d86
(last-buffer): Use buffer-list with frame arg.
Create *scratch* if no other choice exists. Fix bugs.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sun, 21 Jul 2002 20:23:32 +0000 |
parents | 5502ee23a19b |
children | 6262acd6c7ac |
files | lisp/bindings.el |
diffstat | 1 files changed, 11 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/bindings.el Sun Jul 21 20:22:11 2002 +0000 +++ b/lisp/bindings.el Sun Jul 21 20:23:32 2002 +0000 @@ -277,24 +277,24 @@ Return the last non-hidden buffer in the buffer list." ;; This logic is more or less copied from bury-buffer, ;; except that we reverse the buffer list. - (let ((fbl (frame-parameter nil 'buffer-list)) - (list (buffer-list)) + (let ((list (nreverse (buffer-list (selected-frame)))) (pred (frame-parameter nil 'buffer-predicate)) found notsogood) - ;; Merge the frame buffer list with the whole buffer list, - ;; and reverse it. - (dolist (buffer fbl) - (setq list (delq buffer list))) - (setq list (nreverse (append fbl list))) - (while (not found) + (while (and list (not found)) (unless (or (eq (aref (buffer-name (car list)) 0) ? ) ;; If the selected frame has a buffer_predicate, ;; disregard buffers that don't fit the predicate. (and pred (not (funcall pred (car list))))) (if (get-buffer-window (car list) 'visible) - (unless notsogood (setq notsogood (car list))) - (setq found (car list))))) - (or found notsogood))) + (or notsogood (eq (car list) (current-buffer))) + (setq found (car list)))) + (pop list)) + (or found notsogood + (get-buffer "*scratch*") + (progn + (set-buffer-major-mode + (get-buffer-create "*scratch*")) + (get-buffer "*scratch*"))))) (defun unbury-buffer () "\ Switch to the last buffer in the buffer list."