changeset 8302:4e5626d0b962

(Vdeferred_action_list, Vdeferred_action_function): New variables. (command_loop_1): Handle them. (syms_of_keyboard): Set up Lisp variables.
author Richard M. Stallman <rms@gnu.org>
date Wed, 20 Jul 1994 20:01:12 +0000
parents c01188c50e70
children 33ef3e3234dd
files src/keyboard.c
diffstat 1 files changed, 24 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/keyboard.c	Wed Jul 20 19:35:41 1994 +0000
+++ b/src/keyboard.c	Wed Jul 20 20:01:12 1994 +0000
@@ -297,6 +297,13 @@
 Lisp_Object Vpre_command_hook, Vpost_command_hook;
 Lisp_Object Qcommand_hook_internal, Vcommand_hook_internal;
 
+/* List of deferred actions to be performed at a later time.
+   The precise format isn't relevant here; we just check whether it is nil.  */
+Lisp_Object Vdeferred_action_list;
+
+/* Function to call to handle deferred actions, when there are any.  */
+Lisp_Object Vdeferred_action_function;
+
 /* File in which we write all commands we read.  */
 FILE *dribble;
 
@@ -957,6 +964,9 @@
   if (!NILP (XSYMBOL (Qpost_command_hook)->value) && !NILP (Vrun_hooks))
     safe_run_hooks (Qpost_command_hook);
 
+  if (!NILP (Vdeferred_action_list))
+    call0 (Vdeferred_action_function);
+
   /* Do this after running Vpost_command_hook, for consistency.  */
   last_command = this_command;
 
@@ -1227,6 +1237,9 @@
       if (!NILP (XSYMBOL (Qpost_command_hook)->value) && !NILP (Vrun_hooks))
 	safe_run_hooks (Qpost_command_hook);
 
+      if (!NILP (Vdeferred_action_list))
+	call0 (Vdeferred_action_function);
+
       /* If there is a prefix argument,
 	 1) We don't want last_command to be ``universal-argument''
 	 (that would be dumb), so don't set last_command,
@@ -6231,6 +6244,17 @@
 numeric keysym code (sans the \"system-specific\" bit 1<<28)\n\
 and SYMBOL is its name.");
   Vsystem_key_alist = Qnil;
+
+  DEFVAR_LISP ("deferred-action-list", &Vdeferred_action_list,
+    "List of deferred actions to be performed at a later time.\n\
+The precise format isn't relevant here; we just check whether it is nil.");
+  Vdeferred_action_list = Qnil;
+
+  DEFVAR_LISP ("deferred-action-function", &Vdeferred_action_function,
+    "Function to call to handle deferred actions, after each command.\n\
+This function is called with no arguments after each command\n\
+whenever `deferred-action-list' is non-nil.");
+  Vdeferred_action_function = Qnil;
 }
 
 keys_of_keyboard ()