changeset 39974:a72c97b251de

(Fset_buffer_major_mode): Use initial-major-mode for *scratch*.
author Gerd Moellmann <gerd@gnu.org>
date Tue, 16 Oct 2001 09:21:56 +0000
parents 579177964efa
children d8c67e075687
files src/buffer.c
diffstat 1 files changed, 14 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/buffer.c	Tue Oct 16 09:09:51 2001 +0000
+++ b/src/buffer.c	Tue Oct 16 09:21:56 2001 +0000
@@ -1449,7 +1449,9 @@
 }
 
 DEFUN ("set-buffer-major-mode", Fset_buffer_major_mode, Sset_buffer_major_mode, 1, 1, 0,
-       /* Set an appropriate major mode for BUFFER, according to `default-major-mode'.
+       /* Set an appropriate major mode for BUFFER.
+For the *scratch* buffer, use `initial-major-mode', otherwise chose a mode
+according to `default-major-mode'.
 Use this function before selecting the buffer, since it may need to inspect
 the current buffer's major mode.  */
        (buffer))
@@ -1458,10 +1460,17 @@
   int count;
   Lisp_Object function;
 
-  function = buffer_defaults.major_mode;
-  if (NILP (function) && NILP (Fget (current_buffer->major_mode, Qmode_class)))
-    function = current_buffer->major_mode;
-
+  if (STRINGP (XBUFFER (buffer)->name)
+      && strcmp (XSTRING (XBUFFER (buffer)->name)->data, "*scratch*") == 0)
+    function = find_symbol_value (intern ("initial-major-mode"));
+  else
+    {
+      function = buffer_defaults.major_mode;
+      if (NILP (function)
+	  && NILP (Fget (current_buffer->major_mode, Qmode_class)))
+	function = current_buffer->major_mode;
+    }
+  
   if (NILP (function) || EQ (function, Qfundamental_mode))
     return Qnil;