From: Richard M. Stallman Date: Sun, 21 Jul 2002 20:23:32 +0000 (+0000) Subject: (last-buffer): Use buffer-list with frame arg. X-Git-Tag: ttn-vms-21-2-B4~13937 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=196a1cba666ecaad74e49d143489e3048605ab53;p=emacs.git (last-buffer): Use buffer-list with frame arg. Create *scratch* if no other choice exists. Fix bugs. --- diff --git a/lisp/bindings.el b/lisp/bindings.el index 10f84c94bac..139232ea0ec 100644 --- a/lisp/bindings.el +++ b/lisp/bindings.el @@ -277,24 +277,24 @@ Keymap for what is displayed by `mode-line-buffer-identification'.") 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."