GNU bug report logs - #37396
26.3; execute-kbd-macro changes current buffer inside with-temp-buffer and similar forms

Previous Next

Package: emacs;

Reported by: "Ryan C. Thompson" <rct <at> thompsonclan.org>

Date: Fri, 13 Sep 2019 01:20:02 UTC

Severity: normal

Found in version 26.3

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: martin rudalics <rudalics <at> gmx.at>
To: "Ryan C. Thompson" <rct <at> thompsonclan.org>, 37396 <at> debbugs.gnu.org
Subject: bug#37396: 26.3; execute-kbd-macro changes current buffer inside with-temp-buffer and similar forms
Date: Fri, 13 Sep 2019 09:36:49 +0200
> When inside a form that temporarily changes the current buffer, such
> as "with-temp-buffer", running "execute-kbd-macro" appears to switch
> the current buffer back to whatever buffer was current when the
> current command started executing.

'execute-kbd-macro' calls command_loop_1 which sets the current buffer
to the buffer shown in the selected window.

> For example:
>
> (with-temp-buffer
>    (list
>     ;; Returns the temp buffer
>     (current-buffer)
>     (execute-kbd-macro "hello")
>     ;; Returns the buffer that was current when evaluation began
>     (current-buffer)))

Try with

(with-temp-buffer
  (let ((restore (window-buffer))
	temp)
    (setq temp (current-buffer))
    (set-window-buffer (selected-window) temp)
    (execute-kbd-macro "hello")
    (set-window-buffer (selected-window) restore)
    (list temp (current-buffer))))

martin




This bug report was last modified 4 years and 171 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.