> After `(setq display-buffer-reuse-frames t)', `C-h f'(or `C-h v' and the > alike) to view help, `C-x o' to jump to the help window, `q' to quit view > mode, then I find `View-quit' does not restore window and buffer to > previous > state as usual, instead Emacs pops one of other buffers.
Thank you for reporting this. The behavior you experience is due to the following changes: 2000-08-08 Gerd Moellmann <[EMAIL PROTECTED]> * help.el (print-help-return-message): When display-buffer-reuse-frames is set, let the help window been quit, instead of deleting it, which might delete a reused frame. and 2006-04-18 Richard Stallman <[EMAIL PROTECTED]> * help-mode.el (help-mode): Set view-exit-action to delete window. and 2006-05-01 Richard Stallman <[EMAIL PROTECTED]> * help-mode.el (help-mode): view-exit-action calls delete-window only when it is safe and possible. Now with `display-buffer-reuse-frames' non-nil `print-help-return-message' (called by C-h f ...) adds (W1 W2 . 'quit-window) to `view-return-to-alist'. With `display-buffer-reuse-frames' nil it would add (W1 W2 . t) instead, where in both cases W1 is the help window, W2 the original window, and t means delete W1 when done, 'quit-window call that function. When you type "q" in window W1 the (contrived code of) `quit-window' invoked by `view-mode-exit' will do (switch-to-buffer (other-buffer)))) switching in W1 to some buffer not shown in W2. On the other hand invoking `help-mode' after (C-h f ...) has done (setq view-exit-action (lambda (buffer) (or (window-minibuffer-p (selected-window)) (one-window-p t) (delete-window)))) locally in *Help*. After invoking `quit-window' as described above `view-mode-exit' does (if (window-live-p old-window) ; still existing window (select-window old-window)) where old-window is W2. Since W2 is still live it gets selected. Finally, `view-mode-exit' calls `view-exit-action' with BUFFER the still existing *Help* buffer and W2 selected. `view-exit-action' does not pay attention to BUFFER and deletes the selected window W2. You are left with W1 showing a completely unrelated buffer. Reverting the changes above would give the correct behavior in _this_ case. Keeping Gerd's change means that you would have to live with a frame with W2 showing the original buffer and W1 the one selected by `quit-window'. Richard's change could then be modified by doing (setq view-exit-action (lambda (buffer) (or (window-minibuffer-p (selected-window)) (one-window-p t) (not (eq (window-buffer) buffer)) (delete-window)))) though I think that `view-exit-action' should _not_ fiddle with windows. Comments welcome. _______________________________________________ emacs-pretest-bug mailing list emacs-pretest-bug@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-pretest-bug