diff options
author | Richard M. Stallman <rms@gnu.org> | 2002-12-23 17:57:12 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 2002-12-23 17:57:12 +0000 |
commit | e3ed3e36ad9df8d85f13c0f282b56e0718365d21 (patch) | |
tree | a2235e4f2fb69014693260c89b00fc0e3b16102a /lisp/window.el | |
parent | 913d548a1f55e18eb188c474fe61bde45fc3c80c (diff) | |
download | emacs-e3ed3e36ad9df8d85f13c0f282b56e0718365d21.tar.gz |
(save-selected-window): Save and restore selected windows of all frames.
Diffstat (limited to 'lisp/window.el')
-rw-r--r-- | lisp/window.el | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/lisp/window.el b/lisp/window.el index 98d5f9963f1..bacd9161ea5 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -31,11 +31,20 @@ (defmacro save-selected-window (&rest body) "Execute BODY, then select the window that was selected before BODY. -However, if that window has become dead, don't get an error, -just refrain from switching to it." - `(let ((save-selected-window-window (selected-window))) +Also restore the selected window of each frame as it was at the start +of this construct. +However, if a window has become dead, don't get an error, +just refrain from reselecting it." + `(let ((save-selected-window-window (selected-window)) + (save-selected-window-alist + (mapcar (lambda (frame) (list frame (frame-selected-window frame))) + (frame-list)))) (unwind-protect (progn ,@body) + (dolist (elt save-selected-window-alist) + (and (frame-live-p (car elt)) + (window-live-p (cadr elt)) + (set-frame-selected-window (car elt) (cadr elt)))) (if (window-live-p save-selected-window-window) (select-window save-selected-window-window))))) |