changeset 72299:e97bfa736263

* buffer.c (Vchange_major_mode_hook, Qchange_major_mode_hook): New vars. (Fkill_all_local_variables): Use it. (syms_of_buffer): Defvar it.
author Chong Yidong <cyd@stupidchicken.com>
date Sun, 06 Aug 2006 14:22:24 +0000
parents def249a807ea
children 0b8053e535c7
files src/ChangeLog src/buffer.c
diffstat 2 files changed, 17 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Sun Aug 06 11:56:03 2006 +0000
+++ b/src/ChangeLog	Sun Aug 06 14:22:24 2006 +0000
@@ -1,3 +1,9 @@
+2006-08-06  Chong Yidong  <cyd@stupidchicken.com>
+
+	* buffer.c (Vchange_major_mode_hook, Qchange_major_mode_hook): New vars.
+	(Fkill_all_local_variables): Use it.
+	(syms_of_buffer): Defvar it.
+
 2006-08-05  Eli Zaretskii  <eliz@gnu.org>
 
 	* w32.c (w32_valid_pointer_p): New function.
--- a/src/buffer.c	Sun Aug 06 11:56:03 2006 +0000
+++ b/src/buffer.c	Sun Aug 06 14:22:24 2006 +0000
@@ -146,6 +146,9 @@
 Lisp_Object Vkill_buffer_query_functions;
 Lisp_Object Qkill_buffer_query_functions;
 
+/* Hook run before changing a major mode.  */
+Lisp_Object Vchange_major_mode_hook, Qchange_major_mode_hook;
+
 /* List of functions to call before changing an unmodified buffer.  */
 Lisp_Object Vfirst_change_hook;
 
@@ -2386,7 +2389,7 @@
   Lisp_Object oalist;
 
   if (!NILP (Vrun_hooks))
-    call1 (Vrun_hooks, intern ("change-major-mode-hook"));
+    call1 (Vrun_hooks, Qchange_major_mode_hook);
   oalist = current_buffer->local_var_alist;
 
   /* Make sure none of the bindings in oalist
@@ -5998,6 +6001,13 @@
 	       doc: /* List of functions called with no args to query before killing a buffer.  */);
   Vkill_buffer_query_functions = Qnil;
 
+  DEFVAR_LISP ("change-major-mode-hook", &Vchange_major_mode_hook,
+	       doc: /* Normal hook run before changing the major mode of a buffer.
+The function `kill-all-local-variables' runs this before doing anything else.  */);
+  Vchange_major_mode_hook = Qnil;
+  Qchange_major_mode_hook = intern ("change-major-mode-hook");
+  staticpro (&Qchange_major_mode_hook);
+
   defsubr (&Sbuffer_live_p);
   defsubr (&Sbuffer_list);
   defsubr (&Sget_buffer);