From: Dave Love Date: Wed, 6 Nov 2002 20:30:45 +0000 (+0000) Subject: (Qset_buffer_major_mode_hook): New. X-Git-Tag: ttn-vms-21-2-B4~12574 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=b8b60362dba5e1a9ba9d6420899841cdfee8f3c5;p=emacs.git (Qset_buffer_major_mode_hook): New. (Fset_buffer_major_mode): Use it. --- diff --git a/src/ChangeLog b/src/ChangeLog index e4a0b96182e..a7387b66c0c 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2002-11-06 Dave Love + + * buffer.c (Qset_buffer_major_mode_hook): New. + (Fset_buffer_major_mode): Use it. + 2002-11-06 Richard M. Stallman * xterm.c (x_term_init): Use turn_on_atimers, not start_polling diff --git a/src/buffer.c b/src/buffer.c index c0d053ee331..37ec0e44e2c 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -178,6 +178,7 @@ Lisp_Object Qpriority, Qwindow, Qevaporate, Qbefore_string, Qafter_string; 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)); @@ -1542,18 +1543,17 @@ the current buffer's major mode. */) 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); } @@ -5128,6 +5128,8 @@ syms_of_buffer () 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)));