[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#31692: Emacs sometimes drops key events
From: |
Stefan Monnier |
Subject: |
bug#31692: Emacs sometimes drops key events |
Date: |
Thu, 07 Jun 2018 11:30:58 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) |
> @@ -3511,9 +3511,25 @@
> (let ((catch-sym (make-symbol "input")))
> `(with-local-quit
> (catch ',catch-sym
> - (let ((throw-on-input ',catch-sym))
> - (or (input-pending-p)
> - (progn ,@body)))))))
> + (let ((throw-on-input ',catch-sym)
> + val)
> + (setq val
> + (or (input-pending-p)
> + (progn ,@body)))
> + (cond
> + ;; If quit-flag is equal to throw-on-input, it means BODY
> + ;; didn't test quit-flag, and therefore ran to completion
> + ;; even though input arrived before it finished. In that
> + ;; case, we must throw manually, because otherwise
> + ;; quit-flag will remain set, and we get Quit to
> + ;; top-level, which has undesirable consequences, such as
> + ;; discarding input etc.
> + ((eq quit-flag throw-on-input)
> + (throw 'throw-on-input t))
> + ;; This is in case the user actually quits while BODY runs.
> + (quit-flag
> + nil)
> + (t val)))))))
I don't understand the (throw 'throw-on-input t)
(throw throw-on-input t) would make more sense, but in any case we're
just about to exit that `catch` so throwing won't have any real effect.
I think instead of (throw 'throw-on-input t) what is needed here is
(setq quit-flag nil)
which will also make the body return nil (rather than t like (throw
throw-on-input t) would), which I believe is also the right thing.
Stefan
- bug#31692: Emacs sometimes drops key events, (continued)
- bug#31692: Emacs sometimes drops key events, Eli Zaretskii, 2018/06/05
- bug#31692: Emacs sometimes drops key events, Michael Heerdegen, 2018/06/05
- bug#31692: Emacs sometimes drops key events, Eli Zaretskii, 2018/06/05
- bug#31692: Emacs sometimes drops key events, Michael Heerdegen, 2018/06/05
- bug#31692: Emacs sometimes drops key events, Eli Zaretskii, 2018/06/06
- bug#31692: Emacs sometimes drops key events, Michael Heerdegen, 2018/06/06
- bug#31692: Emacs sometimes drops key events, Eli Zaretskii, 2018/06/07
- bug#31692: Emacs sometimes drops key events, Eli Zaretskii, 2018/06/06
- bug#31692: Emacs sometimes drops key events, Michael Heerdegen, 2018/06/06
- bug#31692: Emacs sometimes drops key events, Eli Zaretskii, 2018/06/07
- bug#31692: Emacs sometimes drops key events,
Stefan Monnier <=
- bug#31692: Emacs sometimes drops key events, Eli Zaretskii, 2018/06/07
- bug#31692: Emacs sometimes drops key events, Stefan Monnier, 2018/06/07
- bug#31692: Emacs sometimes drops key events, Michael Heerdegen, 2018/06/08
- bug#31692: Emacs sometimes drops key events, Michael Heerdegen, 2018/06/11
- bug#31692: Emacs sometimes drops key events, Eli Zaretskii, 2018/06/11
- bug#31692: Emacs sometimes drops key events, Eli Zaretskii, 2018/06/16
- bug#31692: Emacs sometimes drops key events, Eli Zaretskii, 2018/06/16
- bug#31692: Emacs sometimes drops key events, Michael Heerdegen, 2018/06/17
- bug#31692: Emacs sometimes drops key events, Michael Heerdegen, 2018/06/04
- bug#31692: Emacs sometimes drops key events, Eli Zaretskii, 2018/06/05