# HG changeset patch # User Richard M. Stallman # Date 716287971 0 # Node ID f3a7122a68e18aa5ad07a40aee7b1a98396301b3 # Parent ecaf2b70cd45ce0654002899dafff9b81bca393e (num_nonmacro_input_chars): New variable. (read_char): Use num_nonmacro_input_chars to decide on auto-save & gc. Increment it when appropriate. (record_auto_save): Use num_nonmacro_input_chars. diff -r ecaf2b70cd45 -r f3a7122a68e1 src/keyboard.c --- a/src/keyboard.c Sat Sep 12 08:44:18 1992 +0000 +++ b/src/keyboard.c Sat Sep 12 08:52:51 1992 +0000 @@ -165,12 +165,15 @@ /* Total number of times read_char has returned. */ int num_input_chars; +/* Total number of times read_char has returned, outside of macros. */ +int num_nonmacro_input_chars; + /* Auto-save automatically when this many characters have been typed since the last time. */ static int auto_save_interval; -/* Value of num_input_chars as of last auto save. */ +/* Value of num_nonmacro_input_chars as of last auto save. */ int last_auto_save; @@ -527,7 +530,7 @@ /* When an auto-save happens, record the "time", and don't do again soon. */ record_auto_save () { - last_auto_save = num_input_chars; + last_auto_save = num_nonmacro_input_chars; } Lisp_Object recursive_edit_unwind (), command_loop (); @@ -1158,7 +1161,7 @@ if (commandflag != 0 && auto_save_interval > 0 - && num_input_chars - last_auto_save > max (auto_save_interval, 20) + && num_nonmacro_input_chars - last_auto_save > max (auto_save_interval, 20) && !detect_input_pending ()) { jmp_buf temp; @@ -1193,7 +1196,7 @@ /* Auto save if enough time goes by without input. */ if (commandflag != 0 - && num_input_chars > last_auto_save + && num_nonmacro_input_chars > last_auto_save && XTYPE (Vauto_save_timeout) == Lisp_Int && XINT (Vauto_save_timeout) > 0) { @@ -1286,6 +1289,8 @@ store_kbd_macro_char (c); + num_nonmacro_input_chars++; + from_macro: reread_first: echo_char (c);