aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard M. Stallman2002-12-23 17:57:12 +0000
committerRichard M. Stallman2002-12-23 17:57:12 +0000
commit991ce473781bbd487165287265524df80811900f (patch)
tree36b8eefc88362098fe4d1abf54caba343463c8ad
parent7c3da01bf2920b59afbb682b26acdee42e280cf5 (diff)
downloademacs-991ce473781bbd487165287265524df80811900f.tar.gz
emacs-991ce473781bbd487165287265524df80811900f.zip
(save-selected-window): Save and restore selected windows of all frames.
-rw-r--r--lisp/window.el15
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 @@
31 31
32(defmacro save-selected-window (&rest body) 32(defmacro save-selected-window (&rest body)
33 "Execute BODY, then select the window that was selected before BODY. 33 "Execute BODY, then select the window that was selected before BODY.
34However, if that window has become dead, don't get an error, 34Also restore the selected window of each frame as it was at the start
35just refrain from switching to it." 35of this construct.
36 `(let ((save-selected-window-window (selected-window))) 36However, if a window has become dead, don't get an error,
37just refrain from reselecting it."
38 `(let ((save-selected-window-window (selected-window))
39 (save-selected-window-alist
40 (mapcar (lambda (frame) (list frame (frame-selected-window frame)))
41 (frame-list))))
37 (unwind-protect 42 (unwind-protect
38 (progn ,@body) 43 (progn ,@body)
44 (dolist (elt save-selected-window-alist)
45 (and (frame-live-p (car elt))
46 (window-live-p (cadr elt))
47 (set-frame-selected-window (car elt) (cadr elt))))
39 (if (window-live-p save-selected-window-window) 48 (if (window-live-p save-selected-window-window)
40 (select-window save-selected-window-window))))) 49 (select-window save-selected-window-window)))))
41 50