]> git.eshelyaron.com Git - emacs.git/commitdiff
(last-buffer): Use buffer-list with frame arg.
authorRichard M. Stallman <rms@gnu.org>
Sun, 21 Jul 2002 20:23:32 +0000 (20:23 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sun, 21 Jul 2002 20:23:32 +0000 (20:23 +0000)
Create *scratch* if no other choice exists.  Fix bugs.

lisp/bindings.el

index 10f84c94bac8bc8002567de8127564f64ebd20b3..139232ea0ec5389b04afe38e9d3bd31baeeb8abb 100644 (file)
@@ -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."