GNU bug report logs - #69093
window-state-put doesn't update current buffer

Previous Next

Package: emacs;

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


Message #50 received at 69093 <at> debbugs.gnu.org (full text, mbox):

From: martin rudalics <rudalics <at> gmx.at>
To: Juri Linkov <juri <at> linkov.net>
Cc: 69093 <at> debbugs.gnu.org
Subject: Re: bug#69093: window-state-put doesn't update current buffer
Date: Sun, 25 Feb 2024 10:17:24 +0100
[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.