# HG changeset patch # User Richard M. Stallman # Date 1027283012 0 # Node ID ea15c9ca1d86489d4242493bcb4f25d7ddef1d8b # Parent 5502ee23a19b8daa7c506a817368a0d1525201af (last-buffer): Use buffer-list with frame arg. Create *scratch* if no other choice exists. Fix bugs. diff -r 5502ee23a19b -r ea15c9ca1d86 lisp/bindings.el --- 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."