From: <ht...@in...> - 2008-01-29 23:24:29
|
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...@in... URL: http://www.ltg.ed.ac.uk/~ht/ [mail really from me _always_ has this .sig -- mail without it is forged spam] |