GNU bug report logs -
#16793
window-state-put needs a live window
Previous Next
Reported by: Juanma Barranquero <lekktu <at> gmail.com>
Date: Tue, 18 Feb 2014 16:21:02 UTC
Severity: normal
Found in version 24.3.50
Done: Juanma Barranquero <lekktu <at> gmail.com>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
Package: emacs
Version: 24.3.50
X-Debbugs-Cc: rudalics <at> gmx.at
There's a problem when restoring a frameset where "put"ing a window
state into the root window of a frame fails for some windows if the
frame is split (which is common enough).
It's easy to see the problem with
emacs -Q
C-x 2
C-x r f a
C-x r j a
=> "Error (frameset): #<window 6> is not a live window"
or
emacs -Q
;; eval this in *scratch*
(let (ws frw)
(split-window)
(setq frw (frame-root-window))
(setq ws (window-state-get frw))
(window-state-put ws frw))
=> "Lisp error: (error "#<window 6> is not a live window")"
Strictly speaking It's not a bug, because the docstring of
`window-state-put' says "Optional argument WINDOW must specify a live
window". But as the examples above show, it is less than useful to be
able to get the state of a window and not being able to put it again
into the same window.
In framesets, the problem arises because it's often the case that the
preferred frame to restore a window-state is the very same one the
window-state was saved from, particularly for saving/restoring in the
same session (as it happens with frameset-to-register /
jump-to-register). That minimizes flicker and simplifies dealing with
non-reused frames.
Martin suggests that frameset--restore should check that the root
window of the matching frame found is alive, and if not, discard that
frame and create a new one. That's doable, but it seems less than
optimal, from both a coding and UI perspective.
This bug report was last modified 11 years and 94 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.