# HG changeset patch # User Gerd Moellmann # Date 1003224116 0 # Node ID a72c97b251deeb9028b4d43c3531b21ad604b56b # Parent 579177964efaf32f78daeb0b0a90c02c4d7dec3a (Fset_buffer_major_mode): Use initial-major-mode for *scratch*. diff -r 579177964efa -r a72c97b251de src/buffer.c --- 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;