[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#16793: window-state-put needs a live window
From: |
Juanma Barranquero |
Subject: |
bug#16793: window-state-put needs a live window |
Date: |
Tue, 18 Feb 2014 17:20:04 +0100 |
Package: emacs
Version: 24.3.50
X-Debbugs-Cc: rudalics@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.
- bug#16793: window-state-put needs a live window,
Juanma Barranquero <=
bug#16793: window-state-put needs a live window, Juanma Barranquero, 2014/02/18