Subject: Re: bug#37396: 26.3; execute-kbd-macro changes current buffer inside with-temp-buffer and similar forms

From: Lars Ingebrigtsen <[email-masked]>
Date: Sat, 30 Jan 2021 08:35:17 +0100

martin rudalics <[email-masked]> writes:

> '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))))

So this seems to work as designed, so I'm closing this bug report.  If
there's something to be done here, please respond to the debbugs address
and we'll reopen.

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