Commit f84aed5f authored by Štěpán Němec's avatar Štěpán Němec
Browse files

Clarify documentation on inhibit-modification-hooks intended usage

Cf. bug#40332 and the discussion at
https://lists.gnu.org/archive/html/emacs-devel/2020-03/msg00921.html

* doc/lispref/text.texi (Change Hooks):
* src/insdel.c (syms_of_insdel): Clarify the intended usage of
'inhibit-modification-hooks'.
parent 81d07da7
Pipeline #5239 failed with stage
in 90 minutes and 4 seconds
......@@ -5776,4 +5776,11 @@ code that is itself run from a modification hook, then rebind locally
may cause recursive calls to the modification hooks, so be sure to
prepare for that (for example, by binding some variable which tells
your hook to do nothing).
We recommend that you only bind this variable for modifications that
do not result in lasting changes to buffer text contents (for example
face changes or temporary modifications). If you need to delay change
hooks during a series of changes (typically for performance reasons),
use @code{combine-change-calls} or @code{combine-after-change-calls}
instead.
@end defvar
......@@ -2397,7 +2397,13 @@ This affects `before-change-functions' and `after-change-functions',
as well as hooks attached to text properties and overlays.
Setting this variable non-nil also inhibits file locks and checks
whether files are locked by another Emacs session, as well as
handling of the active region per `select-active-regions'. */);
handling of the active region per `select-active-regions'.
To delay change hooks during a series of changes, use
`combine-change-calls' or `combine-after-change-calls' instead of
binding this variable.
See also the info node `(elisp) Change Hooks'. */);
inhibit_modification_hooks = 0;
DEFSYM (Qinhibit_modification_hooks, "inhibit-modification-hooks");
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment