[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#21867: 25.0.50; lossage's log doesn't treat characters read by read-
From: |
Lars Ingebrigtsen |
Subject: |
bug#21867: 25.0.50; lossage's log doesn't treat characters read by read-char as separate commands |
Date: |
Sat, 03 Aug 2019 14:13:49 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) |
Stefan Monnier <monnier@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
- bug#21867: 25.0.50; lossage's log doesn't treat characters read by read-char as separate commands, (continued)
- bug#21867: 25.0.50; lossage's log doesn't treat characters read by read-char as separate commands, Eli Zaretskii, 2019/08/01
- bug#21867: 25.0.50; lossage's log doesn't treat characters read by read-char as separate commands, Lars Ingebrigtsen, 2019/08/01
- bug#21867: 25.0.50; lossage's log doesn't treat characters read by read-char as separate commands, Eli Zaretskii, 2019/08/01
- bug#21867: 25.0.50; lossage's log doesn't treat characters read by read-char as separate commands, Lars Ingebrigtsen, 2019/08/01
- bug#21867: 25.0.50; lossage's log doesn't treat characters read by read-char as separate commands, Eli Zaretskii, 2019/08/01
- bug#21867: 25.0.50; lossage's log doesn't treat characters read by read-char as separate commands, Lars Ingebrigtsen, 2019/08/01
- bug#21867: 25.0.50; lossage's log doesn't treat characters read by read-char as separate commands, Eli Zaretskii, 2019/08/02
- bug#21867: 25.0.50; lossage's log doesn't treat characters read by read-char as separate commands, Lars Ingebrigtsen, 2019/08/02
- bug#21867: 25.0.50; lossage's log doesn't treat characters read by read-char as separate commands, Eli Zaretskii, 2019/08/02
- bug#21867: 25.0.50; lossage's log doesn't treat characters read by read-char as separate commands, Stefan Monnier, 2019/08/02
- bug#21867: 25.0.50; lossage's log doesn't treat characters read by read-char as separate commands,
Lars Ingebrigtsen <=
- bug#21867: 25.0.50; lossage's log doesn't treat characters read by read-char as separate commands, Stefan Monnier, 2019/08/03
- bug#21867: 25.0.50; lossage's log doesn't treat characters read by read-char as separate commands, Lars Ingebrigtsen, 2019/08/03
- bug#21867: 25.0.50; lossage's log doesn't treat characters read by read-char as separate commands, Juri Linkov, 2019/08/03
- bug#21867: 25.0.50; lossage's log doesn't treat characters read by read-char as separate commands, Lars Ingebrigtsen, 2019/08/04
- bug#21867: 25.0.50; lossage's log doesn't treat characters read by read-char as separate commands, Juri Linkov, 2019/08/04
- bug#21867: 25.0.50; lossage's log doesn't treat characters read by read-char as separate commands, Stefan Monnier, 2019/08/04
- bug#21867: 25.0.50; lossage's log doesn't treat characters read by read-char as separate commands, Juri Linkov, 2019/08/04
- bug#21867: 25.0.50; lossage's log doesn't treat characters read by read-char as separate commands, Stefan Monnier, 2019/08/05
- bug#21867: 25.0.50; lossage's log doesn't treat characters read by read-char as separate commands, Lars Ingebrigtsen, 2019/08/07
- bug#21867: 25.0.50; lossage's log doesn't treat characters read by read-char as separate commands, Lars Ingebrigtsen, 2019/08/22