]> git.eshelyaron.com Git - emacs.git/commitdiff
(Fset_buffer_major_mode): Use initial-major-mode for
authorGerd Moellmann <gerd@gnu.org>
Tue, 16 Oct 2001 09:21:56 +0000 (09:21 +0000)
committerGerd Moellmann <gerd@gnu.org>
Tue, 16 Oct 2001 09:21:56 +0000 (09:21 +0000)
*scratch*.

src/buffer.c

index 5fd52c8cbaa8bc14f9f497671c6442f04644efb9..2bb785bda998208c8b44fcda9fef1d6a858a2a60 100644 (file)
@@ -1449,7 +1449,9 @@ record_buffer (buf)
 }
 
 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 @@ the current buffer's major mode.  */
   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;