]> git.eshelyaron.com Git - emacs.git/commitdiff
(Fset_buffer_major_mode): Use initial-major-mode for
authorGerd Moellmann <gerd@gnu.org>
Thu, 1 Nov 2001 10:21:46 +0000 (10:21 +0000)
committerGerd Moellmann <gerd@gnu.org>
Thu, 1 Nov 2001 10:21:46 +0000 (10:21 +0000)
*scratch*.

src/ChangeLog
src/buffer.c

index 747e6a601c4670e760591aa798bc23794d01a098..fbe4f018fa590e9ff09194013941792ac55e1bd7 100644 (file)
@@ -1,5 +1,8 @@
 2001-11-01  Gerd Moellmann  <gerd@gnu.org>
 
+       * buffer.c (Fset_buffer_major_mode): Use initial-major-mode for
+       *scratch*.
+
        * xfaces.c (Finternal_set_lisp_face_attribute_from_resource): 
        Handle :box so that it is possible to specify sexprs.
 
index a20b2250209ee01d35bd2c6a13d01c79728f4ac0..902d818f23031b09eaa631b77e3f66542e8b1f22 100644 (file)
@@ -1444,7 +1444,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'.\n\
+  "Set an appropriate major mode for BUFFER.\n\
+For the *scratch* buffer use `initial-major-mode', otherwise choose a\n\
+mode according to `default-major-mode'.\n\
 Use this function before selecting the buffer, since it may need to inspect\n\
 the current buffer's major mode.")
   (buffer)
@@ -1453,10 +1455,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;