Mercurial > emacs
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;