Subject: Re: bug#5803: 23.1.94; Using tq-enqueue in timer messes with keystroke echoing

From: Lars Ingebrigtsen <[email-masked]>
Date: Tue, 08 Dec 2020 19:02:51 +0100

David Engster <[email-masked]> writes:

> When using `tq-enqueue' in a timer, the keystroke echoing in the
> echo area becomes weird or is completely invisible.  You should be able
> to reproduce this as follows:
>
> * emacs -Q
>
> * Evaluate the following:
>
> (setq proc (start-process "shell" (get-buffer-create "*process*") "/bin/sh"))
> (setq mytq (tq-create proc))
> (defun send-test ()
>   (tq-enqueue mytq "echo TEST\n" "TEST[^0]*" nil nil))
> (setq timer (run-with-timer 1 1 'send-test))
>
> * Now hit 'C-x' and wait a second.
>
> * The string "C-x-" should appear in the echo area, but nothing can be
>   seen.

(This bug report unfortunately got no response at the time.)

I can reproduce this in Emacs 28 with this small change:

(setq proc (start-process "shell" (get-buffer-create "*process*") "/bin/sh"))
(setq mytq (tq-create proc))
(defun send-test ()
  (tq-enqueue mytq "echo TEST\n" "TEST[^0]*" nil 'ignore))
(setq timer (run-with-timer 1 1 'send-test))

I'm guessing this somehow interferes with the `echo-timeout' thing?
(Changing it to something shorter than 1 second makes the C-x-
appear...  sometimes.)

Anybody got any insight into what might be happening here?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no