GNU bug report logs -
#69093
window-state-put doesn't update current buffer
Previous Next
Reported by: Juri Linkov <juri <at> linkov.net>
Date: Tue, 13 Feb 2024 07:46:02 UTC
Severity: normal
Fixed in version 30.0.50
Done: Juri Linkov <juri <at> linkov.net>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
> The problem is that afterwards the same function undoes the setting of
> current buffer. In window--state-put-2, select-window is inside
> with-current-buffer that undoes the current buffer selection:
>
> (with-current-buffer buffer
> ...
> ;; Select window if it's the selected one.
> (when (cdr (assq 'selected state))
> (select-window window))
>
> Also in window-state-put, with-temp-buffer undoes the current buffer:
>
> (with-temp-buffer
> (set-window-buffer window (current-buffer))
> (window--state-put-1 state window nil totals pixelwise)
> (window--state-put-2 ignore pixelwise))
Silly me. So far this apparently never caused any problems because
command_loop_1 makes the buffer of the selected window current. But it
will affect any code running after calling 'window-state-put' up to and
including the next 'post-command-hook'.
The attached patch (including the former changes) should fix it. I left
the old 'select-window' call in just for the case that its effect is
used elsewhere in a function called by 'window--state-put-2' later.
Many thanks for the analysis, martin
[keep-windows.diff (text/x-patch, attachment)]
This bug report was last modified 1 year and 77 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.