1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-28 07:45:00 +00:00
emacs/doc/lispref/hooks.texi
2024-01-02 09:47:10 +08:00

304 lines
8.3 KiB
Plaintext

@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
@c Copyright (C) 1990--1993, 1998, 2001--2024 Free Software Foundation,
@c Inc.
@c See the file elisp.texi for copying conditions.
@node Standard Hooks
@appendix Standard Hooks
@cindex standard hooks
@cindex hook variables, list of
The following is a list of some hook variables that let you provide
functions to be called from within Emacs on suitable occasions.
Most of these variables have names ending with @samp{-hook}. They are
@dfn{normal hooks}, run by means of @code{run-hooks}. The value of such
a hook is a list of functions; the functions are called with no
arguments and their values are completely ignored. The recommended way
to put a new function on such a hook is to call @code{add-hook}.
@xref{Hooks}, for more information about using hooks.
The variables whose names end in @samp{-functions} are usually
@dfn{abnormal hooks} (some old code may also use the deprecated
@samp{-hooks} suffix). Their values are lists of functions, but these
functions are called in a special way: they are either passed
arguments, or their return values are used in some way. The variables
whose names end in @samp{-function} have single functions as their
values.
This is not an exhaustive list, it only covers the more general hooks.
For example, every major mode defines a hook named
@samp{@var{modename}-mode-hook}. The major mode command runs this
normal hook with @code{run-mode-hooks} as the very last thing it does.
@xref{Mode Hooks}. Most minor modes have mode hooks too.
A special feature allows you to specify expressions to evaluate if and
when a file is loaded (@pxref{Hooks for Loading}). That feature is
not exactly a hook, but does a similar job.
@c We need to xref to where each hook is documented or else document it here.
@c Add vindex for anything not indexed elsewhere.
@c This list is in alphabetical order, grouped by topic.
@c TODO It should probably be more thoroughly ordered by topic.
@table @code
@item activate-mark-hook
@itemx deactivate-mark-hook
@xref{The Mark}.
@item after-change-functions
@itemx before-change-functions
@itemx first-change-hook
@xref{Change Hooks}.
@item after-change-major-mode-hook
@itemx change-major-mode-after-body-hook
@xref{Mode Hooks}.
@item after-init-hook
@itemx before-init-hook
@itemx emacs-startup-hook
@itemx window-setup-hook
@xref{Init File}.
@item after-insert-file-functions
@itemx write-region-annotate-functions
@itemx write-region-post-annotation-function
@xref{Format Conversion}.
@item after-make-frame-functions
@itemx before-make-frame-hook
@itemx server-after-make-frame-hook
@xref{Creating Frames}.
@c Not general enough?
@ignore
@item after-revert-hook
@itemx before-revert-hook
@itemx buffer-stale-function
@itemx revert-buffer-function
@itemx revert-buffer-insert-file-contents-function
@xref{Reverting}.
@end ignore
@item after-save-hook
@itemx before-save-hook
@itemx write-contents-functions
@itemx write-file-functions
@xref{Saving Buffers}.
@item after-setting-font-hook
@vindex after-setting-font-hook
Hook run after a frame's font changes.
@item auto-save-hook
@xref{Auto-Saving}.
@item before-hack-local-variables-hook
@itemx hack-local-variables-hook
@xref{File Local Variables}.
@item buffer-access-fontify-functions
@xref{Lazy Properties}.
@item buffer-list-update-hook
@vindex buffer-list-update-hook
Hook run when the buffer list changes (@pxref{Buffer List}).
@item buffer-quit-function
@vindex buffer-quit-function
Function to call to quit the current buffer.
@item change-major-mode-hook
@xref{Creating Buffer-Local}.
@item comint-password-function
This abnormal hook permits a derived mode to supply a password for the
underlying command interpreter without prompting the user.
@item command-line-functions
@xref{Command-Line Arguments}.
@item delayed-warnings-hook
@vindex delayed-warnings-hook
The command loop runs this soon after @code{post-command-hook} (q.v.).
@item focus-in-hook
@vindex focus-in-hook
@itemx focus-out-hook
@vindex focus-out-hook
@xref{Input Focus}.
@item delete-frame-functions
@itemx after-delete-frame-functions
@xref{Deleting Frames}.
@item delete-terminal-functions
@xref{Multiple Terminals}.
@item pop-up-frame-function
@itemx split-window-preferred-function
@xref{Choosing Window Options}.
@item echo-area-clear-hook
@xref{Echo Area Customization}.
@item find-file-hook
@itemx find-file-not-found-functions
@xref{Visiting Functions}.
@item font-lock-extend-after-change-region-function
@xref{Region to Refontify}.
@item font-lock-extend-region-functions
@xref{Multiline Font Lock}.
@item font-lock-fontify-buffer-function
@itemx font-lock-fontify-region-function
@itemx font-lock-mark-block-function
@itemx font-lock-unfontify-buffer-function
@itemx font-lock-unfontify-region-function
@xref{Other Font Lock Variables}.
@item fontification-functions
@xref{Auto Faces,, Automatic Face Assignment}.
@item frame-auto-hide-function
@xref{Quitting Windows}.
@item quit-window-hook
@xref{Quitting Windows}.
@item kill-buffer-hook
@itemx kill-buffer-query-functions
@xref{Killing Buffers}.
@item kill-emacs-hook
@itemx kill-emacs-query-functions
@xref{Killing Emacs}.
@item menu-bar-update-hook
@xref{Menu Bar}.
@item minibuffer-setup-hook
@itemx minibuffer-exit-hook
@xref{Minibuffer Misc}.
@item mouse-leave-buffer-hook
@vindex mouse-leave-buffer-hook
Hook run when the user mouse-clicks in a window.
@item mouse-position-function
@xref{Mouse Position}.
@item prefix-command-echo-keystrokes-functions
@vindex prefix-command-echo-keystrokes-functions
An abnormal hook run by prefix commands (such as @kbd{C-u}) which
should return a string describing the current prefix state. For
example, @kbd{C-u} produces @samp{C-u-} and @samp{C-u 1 2 3-}. Each
hook function is called with no arguments and should return a string
describing the current prefix state, or @code{nil} if there's no
prefix state. @xref{Prefix Command Arguments}.
@item prefix-command-preserve-state-hook
@vindex prefix-command-preserve-state-hook
Hook run when a prefix command needs to preserve the prefix by passing
the current prefix command state to the next command. For example,
@kbd{C-u} needs to pass the state to the next command when the user
types @kbd{C-u -} or follows @kbd{C-u} with a digit.
@item pre-redisplay-functions
Hook run in each window just before redisplaying it. @xref{Forcing
Redisplay}.
@item post-command-hook
@itemx pre-command-hook
@xref{Command Overview}.
@item post-gc-hook
@xref{Garbage Collection}.
@item post-self-insert-hook
@xref{Keymaps and Minor Modes}.
@ignore
@item prog-mode-hook
@itemx special-mode-hook
@vindex special-mode-hook
@xref{Basic Major Modes}.
@end ignore
@item suspend-hook
@itemx suspend-resume-hook
@itemx suspend-tty-functions
@itemx resume-tty-functions
@xref{Suspending Emacs}.
@item syntax-begin-function
@itemx syntax-propertize-extend-region-functions
@itemx syntax-propertize-function
@itemx font-lock-syntactic-face-function
@xref{Syntactic Font Lock}. @xref{Syntax Properties}.
@item temp-buffer-setup-hook
@itemx temp-buffer-show-function
@itemx temp-buffer-show-hook
@xref{Temporary Displays}.
@item tty-setup-hook
@xref{Terminal-Specific}.
@item window-configuration-change-hook
@itemx window-scroll-functions
@itemx window-size-change-functions
@xref{Window Hooks}.
@end table
@ignore
Some -hook, -function, -functions from preloaded Lisp or C files that
I thought did not need to be mentioned here:
Lisp:
after-load-functions
after-set-visited-file-name-hook
auto-coding-functions
choose-completion-string-functions
completing-read-function
completion-at-point-functions
completion-list-insert-choice-function
deactivate-current-input-method-function
describe-current-input-method-function
font-lock-function
menu-bar-select-buffer-function
read-file-name-function
replace-re-search-function
replace-search-function
yank-undo-function
C hooks:
kbd-macro-termination-hook
signal-hook-function
C functions:
x-lost-selection-functions
x-sent-selection-functions
C function:
auto-composition-function
auto-fill-function
command-error-function
compose-chars-after-function
composition-function-table
input-method-function
load-read-function
load-source-file-function
read-buffer-function
ring-bell-function
select-safe-coding-system-function
set-auto-coding-function
show-help-function
signal-hook-function
undo-outer-limit-function
@end ignore