> 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