| 1 | @c -*-texinfo-*- |
| 2 | @c This is part of the GNU Emacs Lisp Reference Manual. |
| 3 | @c Copyright (C) 1990-1993, 1998, 2001-2012 Free Software Foundation, Inc. |
| 4 | @c See the file elisp.texi for copying conditions. |
| 5 | @node Standard Hooks |
| 6 | @appendix Standard Hooks |
| 7 | @cindex standard hooks |
| 8 | @cindex hook variables, list of |
| 9 | |
| 10 | The following is a list of some hook variables that let you provide |
| 11 | functions to be called from within Emacs on suitable occasions. |
| 12 | |
| 13 | Most of these variables have names ending with @samp{-hook}. They are |
| 14 | @dfn{normal hooks}, run by means of @code{run-hooks}. The value of such |
| 15 | a hook is a list of functions; the functions are called with no |
| 16 | arguments and their values are completely ignored. The recommended way |
| 17 | to put a new function on such a hook is to call @code{add-hook}. |
| 18 | @xref{Hooks}, for more information about using hooks. |
| 19 | |
| 20 | The variables whose names end in @samp{-functions} are usually @dfn{abnormal |
| 21 | hooks} (some old code may also use the deprecated @samp{-hooks} suffix); their |
| 22 | values are lists of functions, but these functions are called in a special way |
| 23 | (they are passed arguments, or their return values are used). The variables |
| 24 | whose names end in @samp{-function} have single functions as their values. |
| 25 | |
| 26 | This is not an exhaustive list, it only covers the more general hooks. |
| 27 | For example, every major mode defines a hook named |
| 28 | @samp{@var{modename}-mode-hook}. The major mode command runs this |
| 29 | normal hook with @code{run-mode-hooks} as the very last thing it does. |
| 30 | @xref{Mode Hooks}. Most minor modes have mode hooks too. |
| 31 | |
| 32 | A special feature allows you to specify expressions to evaluate if and |
| 33 | when a file is loaded (@pxref{Hooks for Loading}). That feature is |
| 34 | not exactly a hook, but does a similar job. |
| 35 | |
| 36 | @c We need to xref to where each hook is documented or else document it here. |
| 37 | @c Add vindex for anything not indexed elsewhere. |
| 38 | @c This list is in alphabetical order, grouped by topic. |
| 39 | @c TODO It should probably be more thoroughly ordered by topic. |
| 40 | |
| 41 | @table @code |
| 42 | @item activate-mark-hook |
| 43 | @itemx deactivate-mark-hook |
| 44 | @xref{The Mark}. |
| 45 | |
| 46 | @item after-change-functions |
| 47 | @itemx before-change-functions |
| 48 | @itemx first-change-hook |
| 49 | @xref{Change Hooks}. |
| 50 | |
| 51 | @item after-change-major-mode-hook |
| 52 | @itemx change-major-mode-after-body-hook |
| 53 | @xref{Mode Hooks}. |
| 54 | |
| 55 | @item after-init-hook |
| 56 | @itemx before-init-hook |
| 57 | @itemx emacs-startup-hook |
| 58 | @xref{Init File}. |
| 59 | |
| 60 | @item after-insert-file-functions |
| 61 | @itemx write-region-annotate-functions |
| 62 | @itemx write-region-post-annotation-function |
| 63 | @xref{Format Conversion}. |
| 64 | |
| 65 | @item after-make-frame-functions |
| 66 | @itemx before-make-frame-hook |
| 67 | @xref{Creating Frames}. |
| 68 | |
| 69 | @c Not general enough? |
| 70 | @ignore |
| 71 | @item after-revert-hook |
| 72 | @itemx before-revert-hook |
| 73 | @itemx buffer-stale-function |
| 74 | @itemx revert-buffer-function |
| 75 | @itemx revert-buffer-insert-file-contents-function |
| 76 | @xref{Reverting}. |
| 77 | @end ignore |
| 78 | |
| 79 | @item after-save-hook |
| 80 | @itemx before-save-hook |
| 81 | @itemx write-contents-functions |
| 82 | @itemx write-file-functions |
| 83 | @xref{Saving Buffers}. |
| 84 | |
| 85 | @item after-setting-font-hook |
| 86 | @vindex after-setting-font-hook |
| 87 | Hook run after a frame's font changes. |
| 88 | |
| 89 | @item auto-save-hook |
| 90 | @xref{Auto-Saving}. |
| 91 | |
| 92 | @item before-hack-local-variables-hook |
| 93 | @itemx hack-local-variables-hook |
| 94 | @xref{File Local Variables}. |
| 95 | |
| 96 | @item buffer-access-fontify-functions |
| 97 | @xref{Lazy Properties}. |
| 98 | |
| 99 | @item buffer-list-update-hook |
| 100 | @vindex buffer-list-update-hook |
| 101 | Hook run when the buffer list changes. |
| 102 | |
| 103 | @item buffer-quit-function |
| 104 | @vindex buffer-quit-function |
| 105 | Function to call to ``quit'' the current buffer. |
| 106 | |
| 107 | @item change-major-mode-hook |
| 108 | @xref{Creating Buffer-Local}. |
| 109 | |
| 110 | @item command-line-functions |
| 111 | @xref{Command-Line Arguments}. |
| 112 | |
| 113 | @item delayed-warnings-hook |
| 114 | @vindex delayed-warnings-hook |
| 115 | The command loop runs this soon after @code{post-command-hook} (q.v.). |
| 116 | |
| 117 | @item delete-frame-functions |
| 118 | @xref{Deleting Frames}. |
| 119 | |
| 120 | @item delete-terminal-functions |
| 121 | @xref{Multiple Terminals}. |
| 122 | |
| 123 | @ignore |
| 124 | @item disabled-command-function |
| 125 | @xref{Disabling Commands}. |
| 126 | @end ignore |
| 127 | |
| 128 | @item display-buffer-function |
| 129 | @itemx pop-up-frame-function |
| 130 | @itemx special-display-function |
| 131 | @itemx split-window-preferred-function |
| 132 | @xref{Choosing Window Options}. |
| 133 | |
| 134 | @item echo-area-clear-hook |
| 135 | @xref{Echo Area Customization}. |
| 136 | |
| 137 | @item find-file-hook |
| 138 | @itemx find-file-not-found-functions |
| 139 | @xref{Visiting Functions}. |
| 140 | |
| 141 | @item font-lock-extend-after-change-region-function |
| 142 | @xref{Region to Refontify}. |
| 143 | |
| 144 | @item font-lock-extend-region-functions |
| 145 | @xref{Multiline Font Lock}. |
| 146 | |
| 147 | @item font-lock-fontify-buffer-function |
| 148 | @itemx font-lock-fontify-region-function |
| 149 | @itemx font-lock-mark-block-function |
| 150 | @itemx font-lock-unfontify-buffer-function |
| 151 | @itemx font-lock-unfontify-region-function |
| 152 | @xref{Other Font Lock Variables}. |
| 153 | |
| 154 | @item fontification-functions |
| 155 | @xref{Auto Faces,, Automatic Face Assignment}. |
| 156 | |
| 157 | @item frame-auto-hide-function |
| 158 | @xref{Quitting Windows}. |
| 159 | |
| 160 | @item kill-buffer-hook |
| 161 | @itemx kill-buffer-query-functions |
| 162 | @xref{Killing Buffers}. |
| 163 | |
| 164 | @item kill-emacs-hook |
| 165 | @itemx kill-emacs-query-functions |
| 166 | @xref{Killing Emacs}. |
| 167 | |
| 168 | @item menu-bar-update-hook |
| 169 | @xref{Menu Bar}. |
| 170 | |
| 171 | @item minibuffer-setup-hook |
| 172 | @itemx minibuffer-exit-hook |
| 173 | @xref{Minibuffer Misc}. |
| 174 | |
| 175 | @item mouse-leave-buffer-hook |
| 176 | @vindex mouse-leave-buffer-hook |
| 177 | Hook run when about to switch windows with a mouse command. |
| 178 | |
| 179 | @item mouse-position-function |
| 180 | @xref{Mouse Position}. |
| 181 | |
| 182 | @item post-command-hook |
| 183 | @itemx pre-command-hook |
| 184 | @xref{Command Overview}. |
| 185 | |
| 186 | @item post-gc-hook |
| 187 | @xref{Garbage Collection}. |
| 188 | |
| 189 | @item post-self-insert-hook |
| 190 | @xref{Keymaps and Minor Modes}. |
| 191 | |
| 192 | @ignore |
| 193 | @item prog-mode-hook |
| 194 | @itemx special-mode-hook |
| 195 | @vindex special-mode-hook |
| 196 | @xref{Basic Major Modes}. |
| 197 | @end ignore |
| 198 | |
| 199 | @item suspend-hook |
| 200 | @itemx suspend-resume-hook |
| 201 | @itemx suspend-tty-functions |
| 202 | @itemx resume-tty-functions |
| 203 | @xref{Suspending Emacs}. |
| 204 | |
| 205 | @item syntax-begin-function |
| 206 | @itemx syntax-propertize-extend-region-functions |
| 207 | @itemx syntax-propertize-function |
| 208 | @itemx font-lock-syntactic-face-function |
| 209 | @xref{Syntactic Font Lock}. @xref{Syntax Properties}. |
| 210 | |
| 211 | @item temp-buffer-setup-hook |
| 212 | @itemx temp-buffer-show-function |
| 213 | @itemx temp-buffer-show-hook |
| 214 | @xref{Temporary Displays}. |
| 215 | |
| 216 | @item term-setup-hook |
| 217 | @xref{Terminal-Specific}. |
| 218 | |
| 219 | @item window-configuration-change-hook |
| 220 | @itemx window-scroll-functions |
| 221 | @itemx window-size-change-functions |
| 222 | @xref{Window Hooks}. |
| 223 | |
| 224 | @item window-setup-hook |
| 225 | @xref{Window Systems}. |
| 226 | |
| 227 | @item window-text-change-functions |
| 228 | @vindex window-text-change-functions |
| 229 | Functions to call in redisplay when text in the window might change. |
| 230 | |
| 231 | @end table |
| 232 | |
| 233 | @ignore |
| 234 | Some -hook, -function, -functions from preloaded Lisp or C files that |
| 235 | I thought did not need to be mentioned here: |
| 236 | |
| 237 | Lisp: |
| 238 | after-load-functions |
| 239 | auto-coding-functions |
| 240 | choose-completion-string-functions |
| 241 | completing-read-function |
| 242 | completion-annotate-function |
| 243 | completion-at-point-functions |
| 244 | completion-in-region-functions |
| 245 | completion-list-insert-choice-function |
| 246 | deactivate-current-input-method-function |
| 247 | describe-current-input-method-function |
| 248 | filter-buffer-substring-functions |
| 249 | font-lock-function |
| 250 | menu-bar-select-buffer-function |
| 251 | read-file-name-function |
| 252 | replace-re-search-function |
| 253 | replace-search-function |
| 254 | yank-undo-function |
| 255 | |
| 256 | C hooks: |
| 257 | kbd-macro-termination-hook |
| 258 | signal-hook-function |
| 259 | |
| 260 | C functions: |
| 261 | redisplay-end-trigger-functions |
| 262 | x-lost-selection-functions |
| 263 | x-sent-selection-functions |
| 264 | |
| 265 | C function: |
| 266 | auto-composition-function |
| 267 | auto-fill-function |
| 268 | command-error-function |
| 269 | compose-chars-after-function |
| 270 | composition-function-table |
| 271 | deferred-action-function |
| 272 | input-method-function |
| 273 | load-read-function |
| 274 | load-source-file-function |
| 275 | macro-declaration-function |
| 276 | read-buffer-function |
| 277 | ring-bell-function |
| 278 | select-safe-coding-system-function |
| 279 | set-auto-coding-function |
| 280 | show-help-function |
| 281 | signal-hook-function |
| 282 | undo-outer-limit-function |
| 283 | |
| 284 | @end ignore |