window configurations no longer (since 21.5) include windows ! ?

Henry S. Thompson ht at inf.ed.ac.uk
Tue Jan 29 18:24:14 EST 2008


The following code behaves differently in 21.4.21 and 21.5.28:

(let ((w (selected-window)) 
      (c (current-window-configuration))) 
  (split-window)
  (view-buffer-other-window "foo")
  (delete-window w) 
  (set-window-configuration c) 
  (window-live-p w))

Paste the above into *scratch* and execute it -- value is t in 21.4.21
and nil in 21.5.28.  Basically, window identity is not preserved in
configurations, or, therefore, by save-window-excursion.  This
causes no end of trouble for ecb.

The following excerpt from the section 38.1 of the Lispref
documentation ("Basic Concepts of Emacs Windows") suggests this is an
unintended regression:

  Once removed from the frame, the window is effectively deleted and
  should not be used, _even though there may still be references to
  it_ from other Lisp objects.  Restoring a saved window configuration
  is the only way for a window no longer on the screen to come back to
  life.

Can anyone involved in replacing the old C implementation of window
configurations (which did save the window objects themselves, along
with their properties) with the new Lisp implementation (which does
_not_ save the window objects) explain the reasoning behind this
incompatible (and as far as I can tell by searching pretty hard,
undocumented) change?

Thanks,

ht
-- 
 Henry S. Thompson, HCRC Language Technology Group, University of Edinburgh
                     Half-time member of W3C Team
    2 Buccleuch Place, Edinburgh EH8 9LW, SCOTLAND -- (44) 131 650-4440
            Fax: (44) 131 650-4587, e-mail: ht at inf.ed.ac.uk
                   URL: http://www.ltg.ed.ac.uk/~ht/
[mail really from me _always_ has this .sig -- mail without it is forged spam]




More information about the XEmacs-Beta mailing list