diff lisp/simple.el @ 100803:0186716f4b63

(last-buffer): Don't set major mode of *scratch* if that buffer exists already. Rewrite doc-string.
author Martin Rudalics <rudalics@gmx.at>
date Wed, 31 Dec 2008 15:44:25 +0000
parents 5a144164af93
children 8bebf3521844
line wrap: on
line diff
--- a/lisp/simple.el	Wed Dec 31 14:59:37 2008 +0000
+++ b/lisp/simple.el	Wed Dec 31 15:44:25 2008 +0000
@@ -78,19 +78,22 @@
     (car list)))
 
 (defun last-buffer (&optional buffer visible-ok frame)
-  "Return the last non-hidden displayable buffer in the buffer list.
-If BUFFER is non-nil, last-buffer will ignore that buffer.
+  "Return the last buffer in FRAME's buffer list.
+If BUFFER is the last buffer, return the preceding buffer instead.
 Buffers not visible in windows are preferred to visible buffers,
 unless optional argument VISIBLE-OK is non-nil.
-If the optional third argument FRAME is non-nil, use that frame's
-buffer list instead of the selected frame's buffer list.
-If no other buffer exists, the buffer `*scratch*' is returned."
+Optional third argument FRAME nil or omitted means use the
+selected frame's buffer list.
+If no such buffer exists, return the buffer `*scratch*', creating
+it if necessary."
   (setq frame (or frame (selected-frame)))
   (or (get-next-valid-buffer (nreverse (buffer-list frame))
  			     buffer visible-ok frame)
-      (progn
-	(set-buffer-major-mode (get-buffer-create "*scratch*"))
-	(get-buffer "*scratch*"))))
+      (get-buffer "*scratch*")
+      (let ((scratch (get-buffer-create "*scratch*")))
+	(set-buffer-major-mode scratch)
+	scratch)))
+
 (defun next-buffer ()
   "Switch to the next buffer in cyclic order."
   (interactive)