]> git.eshelyaron.com Git - emacs.git/commitdiff
Document change-major-mode-after-body-hook
authorGlenn Morris <rgm@gnu.org>
Thu, 2 Feb 2012 02:57:26 +0000 (21:57 -0500)
committerGlenn Morris <rgm@gnu.org>
Thu, 2 Feb 2012 02:57:26 +0000 (21:57 -0500)
* doc/lispref/hooks.texi (Standard Hooks):
* doc/lispref/modes.texi (Major Mode Conventions, Mode Hooks):
Document change-major-mode-after-body-hook.

* lisp/subr.el (run-mode-hooks): Doc fix.

* etc/NEWS: Markup

doc/lispref/ChangeLog
doc/lispref/hooks.texi
doc/lispref/modes.texi
etc/NEWS
lisp/ChangeLog
lisp/subr.el

index 6a8b7750f0b32c52fb43c4f74b0a9de2df5369ce..1ba070dccc0dc1698a5aad365f37a9da581842ab 100644 (file)
@@ -1,3 +1,9 @@
+2012-02-02  Glenn Morris  <rgm@gnu.org>
+
+       * hooks.texi (Standard Hooks):
+       * modes.texi (Major Mode Conventions, Mode Hooks):
+       Document change-major-mode-after-body-hook.
+
 2012-02-01  Glenn Morris  <rgm@gnu.org>
 
        * modes.texi (Defining Minor Modes):
index 95655324ab46a297606059f526bfa39e1a5302fa..b311da6611090b73f0985a749c7128ab24661970 100644 (file)
@@ -127,6 +127,9 @@ not exactly a hook, but does a similar job.
 @xref{Calendar Customizing,,, emacs}.
 @end ifnottex
 
+@item change-major-mode-after-body-hook
+@xref{Mode Hooks}.
+
 @item change-major-mode-hook
 @xref{Creating Buffer-Local}.
 
index f8a21e003e0f82aa79daa06a64c8124d7131fb9c..e142be44e0d7e77789b3ff8b52d0e4bc0486c02d 100644 (file)
@@ -468,8 +468,9 @@ other packages would interfere with them.
 @cindex major mode hook
 Each major mode should have a normal @dfn{mode hook} named
 @code{@var{modename}-mode-hook}.  The very last thing the major mode command
-should do is to call @code{run-mode-hooks}.  This runs the mode hook,
-and then runs the normal hook @code{after-change-major-mode-hook}.
+should do is to call @code{run-mode-hooks}.  This runs the normal
+hook @code{change-major-mode-after-body-hook}, the mode hook,
+and then the normal hook @code{after-change-major-mode-hook}.
 @xref{Mode Hooks}.
 
 @item
@@ -939,8 +940,9 @@ before it runs the mode hook variable @code{@var{mode}-hook}.
 @node Mode Hooks
 @subsection Mode Hooks
 
-  Every major mode command should finish by running its mode hook and
-the mode-independent normal hook @code{after-change-major-mode-hook}.
+  Every major mode command should finish by running the mode-independent
+normal hook @code{change-major-mode-after-body-hook}, its mode hook,
+and the normal hook @code{after-change-major-mode-hook}.
 It does this by calling @code{run-mode-hooks}.  If the major mode is a
 derived mode, that is if it calls another major mode (the parent mode)
 in its body, it should do this inside @code{delay-mode-hooks} so that
@@ -949,11 +951,12 @@ call to @code{run-mode-hooks} runs the parent's mode hook too.
 @xref{Major Mode Conventions}.
 
   Emacs versions before Emacs 22 did not have @code{delay-mode-hooks}.
-When user-implemented major modes have not been updated to use it,
-they won't entirely follow these conventions: they may run the
-parent's mode hook too early, or fail to run
-@code{after-change-major-mode-hook}.  If you encounter such a major
-mode, please correct it to follow these conventions.
+Versions before 24 did not have @code{change-major-mode-after-body-hook}.
+When user-implemented major modes do not use @code{run-mode-hooks} and
+have not been updated to use these newer features, they won't entirely
+follow these conventions: they may run the parent's mode hook too early,
+or fail to run @code{after-change-major-mode-hook}.  If you encounter
+such a major mode, please correct it to follow these conventions.
 
   When you defined a major mode using @code{define-derived-mode}, it
 automatically makes sure these conventions are followed.  If you
@@ -963,6 +966,7 @@ use the following functions to handle these conventions automatically.
 @defun run-mode-hooks &rest hookvars
 Major modes should run their mode hook using this function.  It is
 similar to @code{run-hooks} (@pxref{Hooks}), but it also runs
+@code{change-major-mode-after-body-hook} and
 @code{after-change-major-mode-hook}.
 
 When this function is called during the execution of a
@@ -982,6 +986,11 @@ The hooks will actually run during the next call to
 construct.
 @end defmac
 
+@defvar change-major-mode-after-body-hook
+This is a normal hook run by @code{run-mode-hooks}.  It is run before
+the mode hooks.
+@end defvar
+
 @defvar after-change-major-mode-hook
 This is a normal hook run by @code{run-mode-hooks}.  It is run at the
 very end of every properly-written major mode command.
index 4aaefe70c4fdb41ed83aaea471cf095d485fab04..0138fa5192ef8dea599a31b049e39413941d4805 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1287,6 +1287,7 @@ should be derived.
 modes, e.g. (add-hook 'prog-mode-hook 'flyspell-prog-mode) to enable
 on-the-fly spell checking for comments and strings.
 
++++
 *** New hook `change-major-mode-after-body-hook', run by
 `run-mode-hooks' just before any other mode hooks.
 
index cc6aecd7a2695e4161d96aeb4f78218d6a81a1ee..4290c5e820df7b9f58c9f9e1bc4e0290e2998b4c 100644 (file)
@@ -1,3 +1,7 @@
+2012-02-02  Glenn Morris  <rgm@gnu.org>
+
+       * subr.el (run-mode-hooks): Doc fix.
+
 2012-02-02  Juri Linkov  <juri@jurta.org>
 
        * image-mode.el (image-toggle-display-image): Remove tautological
index c9e213c86a08ea817f9c5679e0ceb8bff70af6aa..36bca654208daef42717b7867d5d337b5616fc6b 100644 (file)
@@ -1539,10 +1539,12 @@ if it is empty or a duplicate."
 
 (defun run-mode-hooks (&rest hooks)
   "Run mode hooks `delayed-mode-hooks' and HOOKS, or delay HOOKS.
-Execution is delayed if the variable `delay-mode-hooks' is non-nil.
-Otherwise, runs the mode hooks and then `after-change-major-mode-hook'.
-Major mode functions should use this instead of `run-hooks' when running their
-FOO-mode-hook."
+If the variable `delay-mode-hooks' is non-nil, does not run any hooks,
+just adds the HOOKS to the list `delayed-mode-hooks'.
+Otherwise, runs hooks in the sequence: `change-major-mode-after-body-hook',
+`delayed-mode-hooks' (in reverse order), HOOKS, and finally
+`after-change-major-mode-hook'.  Major mode functions should use
+this instead of `run-hooks' when running their FOO-mode-hook."
   (if delay-mode-hooks
       ;; Delaying case.
       (dolist (hook hooks)