From fdd095d2fd79f73ec96b9d318248e6ad70931b4a Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 28 Aug 2015 16:25:25 +0300 Subject: [PATCH] Fix a bug in recording a macro while flyspell-mode is active * lisp/subr.el (sit-for): Don't call read-event when recording a macro. (Bug#21329) --- lisp/subr.el | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lisp/subr.el b/lisp/subr.el index 53dea3e2997..61b87065c8a 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -2277,7 +2277,18 @@ floating point support." t) ((input-pending-p t) nil) - ((<= seconds 0) + ((or (<= seconds 0) + ;; We are going to call read-event below, which will record + ;; the the next key as part of the macro, even if that key + ;; invokes kmacro-end-macro, so if we are recording a macro, + ;; the macro will recursively call itself. In addition, when + ;; that key is removed from unread-command-events, it will be + ;; recorded the second time, so the macro will have each key + ;; doubled. This used to happen if a macro was defined with + ;; Flyspell mode active (because Flyspell calls sit-for in its + ;; post-command-hook, see bug #21329.) To avoid all that, we + ;; simply disable the wait when we are recording a macro. + defining-kbd-macro) (or nodisp (redisplay))) (t (or nodisp (redisplay)) -- 2.11.4.GIT