GNU bug report logs -
#21867
25.0.50; lossage's log doesn't treat characters read by read-char as separate commands
Previous Next
Full log
View this message in rfc822 format
Stefan Monnier <monnier <at> iro.umontreal.ca> writes:
> So I think maybe a better way to look at it is to add marker
> pseudo-events like `end-of-command` (e.g. after running
> post-command-hook), so we can discover that `a` was processed as part of
> the execution of the command bound to `C-x C-e` rather than as part of
> the sequence of events that triggered view-lossage.
Makes sense. With the following patch I get:
24 5 (nil . eval-last-sexp) 97 end-of-command
in recent_keys. `view-lossage' could use this to output this as
C-x C-e a ;; eval-last-sexp
It does make the recent_keys list even more... uhm... eccentric, I
guess. And during typical text entry, there'll be slightly more memory
usage:
72 (nil . self-insert-command) end-of-command
101 (nil . self-insert-command) end-of-command
If this approach makes sense, I can fix up view-lossage to interpret the
new structure.
diff --git a/src/keyboard.c b/src/keyboard.c
index db5ca4e547..1a4a7d2711 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -307,6 +307,7 @@ #define GROW_RAW_KEYBUF \
static void echo_now (void);
static ptrdiff_t echo_length (void);
+static void record_char (Lisp_Object c);
/* Incremented whenever a timer is run. */
unsigned timers_run;
@@ -1424,6 +1425,8 @@ command_loop_1 (void)
Fcons (Qnil, cmd));
if (++recent_keys_index >= NUM_RECENT_KEYS)
recent_keys_index = 0;
+ /* Mark this as a complete command in recent_keys. */
+ record_char (Qend_of_command);
}
Vthis_command = cmd;
Vreal_this_command = cmd;
@@ -1474,6 +1477,9 @@ command_loop_1 (void)
safe_run_hooks (Qpost_command_hook);
+ /* Mark this as a complete command in recent_keys. */
+ record_char (Qend_of_command);
+
/* If displaying a message, resize the echo area window to fit
that message's size exactly. Do this only if the echo area
window is the minibuffer window of the selected frame. See
@@ -2091,7 +2097,6 @@ show_help_echo (Lisp_Object help, Lisp_Object window, Lisp_Object object,
static Lisp_Object kbd_buffer_get_event (KBOARD **kbp, bool *used_mouse_menu,
struct timespec *end_time);
-static void record_char (Lisp_Object c);
static Lisp_Object help_form_saved_window_configs;
static void
@@ -11069,6 +11074,8 @@ syms_of_keyboard (void)
DEFSYM (Qundefined, "undefined");
+ DEFSYM (Qend_of_command, "end-of-command");
+
/* Hooks to run before and after each command. */
DEFSYM (Qpre_command_hook, "pre-command-hook");
DEFSYM (Qpost_command_hook, "post-command-hook");
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
This bug report was last modified 5 years and 297 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.