+2002-11-06 Dave Love <fx@gnu.org>
+
+ * buffer.c (Qset_buffer_major_mode_hook): New.
+ (Fset_buffer_major_mode): Use it.
+
2002-11-06 Richard M. Stallman <rms@gnu.org>
* xterm.c (x_term_init): Use turn_on_atimers, not start_polling
Lisp_Object Qmodification_hooks;
Lisp_Object Qinsert_in_front_hooks;
Lisp_Object Qinsert_behind_hooks;
+Lisp_Object Qset_buffer_major_mode_hook;
static void alloc_buffer_text P_ ((struct buffer *, size_t));
static void free_buffer_text P_ ((struct buffer *b));
function = current_buffer->major_mode;
}
- if (NILP (function) || EQ (function, Qfundamental_mode))
- return Qnil;
-
count = SPECPDL_INDEX ();
- /* To select a nonfundamental mode,
- select the buffer temporarily and then call the mode function. */
+ /* To select a nonfundamental mode, select the buffer temporarily
+ and then call the mode function. Run the hook anyhow. */
record_unwind_protect (save_excursion_restore, save_excursion_save ());
Fset_buffer (buffer);
- call0 (function);
+ if (NILP (function) || EQ (function, Qfundamental_mode))
+ call0 (function);
+ Frun_hooks (1, &Qset_buffer_major_mode_hook);
return unbind_to (count, Qnil);
}
staticpro (&Qbefore_change_functions);
Qafter_change_functions = intern ("after-change-functions");
staticpro (&Qafter_change_functions);
+ Qset_buffer_major_mode_hook = intern ("set-buffer-major-mode-hook");
+ staticpro (&Qset_buffer_major_mode_hook);
Fput (Qprotected_field, Qerror_conditions,
Fcons (Qprotected_field, Fcons (Qerror, Qnil)));