(Fset_buffer_major_mode): Use initial-major-mode for

*scratch*.
This commit is contained in:
Gerd Moellmann 2001-10-16 09:21:56 +00:00
parent f3fbd15535
commit 71a0f2c6e4

View 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;