]> git.eshelyaron.com Git - emacs.git/commitdiff
Add hook for all events
authorPhillip Lord <phillip.lord@russet.org.uk>
Sat, 5 Jan 2019 19:31:15 +0000 (20:31 +0100)
committerPhillip Lord <phillip.lord@russet.org.uk>
Tue, 22 Jan 2019 21:46:03 +0000 (21:46 +0000)
* lisp/subr.el (input-event-functions): Add input-event-functions
* src/keyboard.c (read_char): Call input-event-functions on all hooks

etc/NEWS
lisp/subr.el
src/keyboard.c

index 21187474a288b327ef86ea4702ccaddda36ba32d..b0bbaeb6b0f8244367f79e480f713b07f6bc7ac9 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1189,11 +1189,13 @@ removed.
 \f
 * Lisp Changes in Emacs 27.1
 
-+++
+
 ** 'self-insert-command' takes the char to insert as (optional) argument.
 
 ** 'lookup-key' can take a list of keymaps as argument.
 
+** New hook `input-event-functions` run whenever a user-input is read.
+
 +++
 ** 'condition-case' now accepts 't' to match any error symbol.
 
index 2f2ea5e6c775fbf57e1d7e09d0c1fe922444d6fa..122a0d8da4cd6d596ad12aad734280dd1bdae062 100644 (file)
@@ -1289,6 +1289,12 @@ See `event-start' for a description of the value returned."
 The return value is a positive integer."
   (if (and (consp event) (integerp (nth 2 event))) (nth 2 event) 1))
 
+(defvar input-event-functions nil
+  ;; BEWARE: If it looks like this is not run anywhere, it's normal:
+  ;; this is run in keyboard.c.
+  "Special hook run each time a user-input event is read.
+Each function is called with one argument: the event.")
+
 (defsubst event-line-count (event)
   "Return the line count of EVENT, a mousewheel event.
 The return value is a positive integer."
index 2d6fa91a16c2bffdf2857d514e67ee89051ab973..838dc242dd95ca1776f73344ac49604906c77083 100644 (file)
@@ -2919,6 +2919,8 @@ read_char (int commandflag, Lisp_Object map,
   if (! NILP (also_record))
     record_char (also_record);
 
+  Frun_hook_with_args (2, ((Lisp_Object []) {Qinput_event_functions, c}));
+
   /* Wipe the echo area.
      But first, if we are about to use an input method,
      save the echo area contents for it to refer to.  */
@@ -11022,6 +11024,8 @@ syms_of_keyboard (void)
 
   DEFSYM (Qundefined, "undefined");
 
+  DEFSYM (Qinput_event_functions, "input-event-functions");
+
   /* Hooks to run before and after each command.  */
   DEFSYM (Qpre_command_hook, "pre-command-hook");
   DEFSYM (Qpost_command_hook, "post-command-hook");