From: Eli Zaretskii Date: Fri, 28 Aug 2015 13:25:25 +0000 (+0300) Subject: Fix a bug in recording a macro while flyspell-mode is active X-Git-Tag: emacs-25.0.90~1232 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=fdd095d2fd79f73ec96b9d318248e6ad70931b4a;p=emacs.git 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) --- 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))