[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lispref/modes.texi
From: |
Richard M . Stallman |
Subject: |
[Emacs-diffs] Changes to emacs/lispref/modes.texi |
Date: |
Sun, 29 May 2005 04:28:51 -0400 |
Index: emacs/lispref/modes.texi
diff -c emacs/lispref/modes.texi:1.109 emacs/lispref/modes.texi:1.110
*** emacs/lispref/modes.texi:1.109 Mon May 23 12:01:08 2005
--- emacs/lispref/modes.texi Sun May 29 08:28:51 2005
***************
*** 1117,1123 ****
@node Mode Hooks
@subsection Mode Hooks
! The two last things a major mode function does is to run its mode
hook and finally the mode independent normal hook
@code{after-change-major-mode-hook}. If the major mode is a derived
mode, that is if it calls another major mode (the parent mode) in its
--- 1117,1123 ----
@node Mode Hooks
@subsection Mode Hooks
! The two last things a major mode function should do is run its mode
hook and finally the mode independent normal hook
@code{after-change-major-mode-hook}. If the major mode is a derived
mode, that is if it calls another major mode (the parent mode) in its
***************
*** 1125,1169 ****
mode's hook. Neither the parent's mode hook nor
@code{after-change-major-mode-hook} are run at the end of the actual
call to the parent mode. This applies recursively if the parent mode
! has itself a parent. That is, the mode hooks of all major modes called
! directly or indirectly by the major mode function are all run in
! sequence at the end, just before @code{after-change-major-mode-hook}.
!
! If you are customizing a major mode, rather than defining one, the
! above is all you need to know about the hooks run at the end of a
! major mode. This also applies if you use @code{define-derived-mode}
! to define a major mode, because that macro will automatically
! implement the above for you.
!
! Programmers wishing to define a major mode without using
! @code{define-derived-mode}, should make sure that their major mode
! follows the above conventions. @xref{Major Mode Conventions}, for how
! this should be accomplished. Below, we give some implementation
! details.
@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 if run inside a
! @code{delay-mode-hooks} form, this function does not run any hooks.
! Instead, it arranges for @var{hookvars} to be run at a later call to
! the function. Otherwise, @code{run-mode-hooks} runs any delayed hooks
! in order, then @var{hookvars} and finally
@code{after-change-major-mode-hook}.
@end defun
@defmac delay-mode-hooks body...
This macro executes @var{body} like @code{progn}, but all calls to
@code{run-mode-hooks} inside @var{body} delay running their hooks.
They will be run by the first call to @code{run-mode-hooks} after exit
! from @code{delay-mode-hooks}.
@end defmac
@defvar after-change-major-mode-hook
Every major mode function should run this normal hook at its very end.
It normally does not need to do so explicitly. Indeed, a major mode
function should normally run its mode hook with @code{run-mode-hooks}
! as the very last thing it does and @code{run-mode-hooks} runs
! @code{after-change-major-mode-hook} at its very end.
@end defvar
@node Minor Modes
--- 1125,1177 ----
mode's hook. Neither the parent's mode hook nor
@code{after-change-major-mode-hook} are run at the end of the actual
call to the parent mode. This applies recursively if the parent mode
! has itself a parent. That is, the mode hooks of all major modes
! called directly or indirectly by the major mode function are all run
! in sequence at the end, just before
! @code{after-change-major-mode-hook}.
!
! These conventions are new in Emacs 22, and some major modes
! implemented by users do not follow them yet. So if you put a function
! onto @code{after-change-major-mode-hook}, keep in mind that some modes
! will fail to run it. If user complains about that, you can respond,
! ``That major mode fails to follow Emacs conventions, and that's why it
! fails to work. Please fix the major mode.'' In most cases, that is
! good enough, so go ahead and use @code{after-change-major-mode-hook}.
! However, if a certain feature needs to be completely reliable,
! it should not use @code{after-change-major-mode-hook} as of yet.
!
! When you defined a major mode using @code{define-derived-mode}, it
! automatically makes sure these conventions are followed. If you
! define a major mode ``from scratch'', not using
! @code{define-derived-mode}, make sure the major mode command follows
! these and other conventions. @xref{Major Mode Conventions}. You use
! these functions to do it properly.
@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{after-change-major-mode-hook}.
+
+ When the call to this function is dynamically inside a
+ @code{delay-mode-hooks} form, this function does not run any hooks.
+ Instead, it arranges for the next call to @code{run-mode-hooks} to run
+ @var{hookvars}.
@end defun
@defmac delay-mode-hooks body...
This macro executes @var{body} like @code{progn}, but all calls to
@code{run-mode-hooks} inside @var{body} delay running their hooks.
They will be run by the first call to @code{run-mode-hooks} after exit
! from @code{delay-mode-hooks}. This is the proper way for a major mode
! command to invoke its parent mode.
@end defmac
@defvar after-change-major-mode-hook
Every major mode function should run this normal hook at its very end.
It normally does not need to do so explicitly. Indeed, a major mode
function should normally run its mode hook with @code{run-mode-hooks}
! as the very last thing it does, and the last thing
! @code{run-mode-hooks} does is run @code{after-change-major-mode-hook}.
@end defvar
@node Minor Modes
- [Emacs-diffs] Changes to emacs/lispref/modes.texi, (continued)
- [Emacs-diffs] Changes to emacs/lispref/modes.texi, Lute Kamstra, 2005/05/12
- [Emacs-diffs] Changes to emacs/lispref/modes.texi, Richard M . Stallman, 2005/05/14
- [Emacs-diffs] Changes to emacs/lispref/modes.texi, Luc Teirlinck, 2005/05/14
- [Emacs-diffs] Changes to emacs/lispref/modes.texi, Luc Teirlinck, 2005/05/14
- [Emacs-diffs] Changes to emacs/lispref/modes.texi, Luc Teirlinck, 2005/05/15
- [Emacs-diffs] Changes to emacs/lispref/modes.texi, Lute Kamstra, 2005/05/17
- [Emacs-diffs] Changes to emacs/lispref/modes.texi, Luc Teirlinck, 2005/05/18
- [Emacs-diffs] Changes to emacs/lispref/modes.texi, Luc Teirlinck, 2005/05/19
- [Emacs-diffs] Changes to emacs/lispref/modes.texi, Luc Teirlinck, 2005/05/21
- [Emacs-diffs] Changes to emacs/lispref/modes.texi, Lute Kamstra, 2005/05/23
- [Emacs-diffs] Changes to emacs/lispref/modes.texi,
Richard M . Stallman <=
- [Emacs-diffs] Changes to emacs/lispref/modes.texi, Luc Teirlinck, 2005/05/29
- [Emacs-diffs] Changes to emacs/lispref/modes.texi, Luc Teirlinck, 2005/05/29