emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

emacs-27 f84aed5 2/2: Clarify documentation on inhibit-modification-hook


From: Št?pán N?mec
Subject: emacs-27 f84aed5 2/2: Clarify documentation on inhibit-modification-hooks intended usage
Date: Mon, 13 Apr 2020 06:20:34 -0400 (EDT)

branch: emacs-27
commit f84aed5fd233d59196d942acfb67bb4051c69cf1
Author: Štěpán Němec <address@hidden>
Commit: Štěpán Němec <address@hidden>

    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'.
---
 doc/lispref/text.texi | 7 +++++++
 src/insdel.c          | 8 +++++++-
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi
index f027cdf..ffdf952 100644
--- a/doc/lispref/text.texi
+++ b/doc/lispref/text.texi
@@ -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
diff --git a/src/insdel.c b/src/insdel.c
index 21acf0e..dfa1cc3 100644
--- a/src/insdel.c
+++ b/src/insdel.c
@@ -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");
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]