blob: c518159b91520cd8a9a0ca3db14d3ac2812d005e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
(defvar toggle-window-configuration nil
"Stores the window configuration")
(defun toggle-window ()
(interactive)
(if (count-windows)
(if (one-window-p)
;; reset configuration if single window
(if toggle-window-configuration
(let* ((current-window (selected-window))
(current-buffer (window-buffer current-window)))
(progn
(set-window-configuration toggle-window-configuration)
(set-window-buffer current-window current-buffer)
;; make sure current window keeps state
(window-state-put current-window-state)
(setq toggle-window-configuration nil))
)
(message "No previous window layout to restore."))
;; if multiple windows save configuration
(setq toggle-window-configuration (current-window-configuration))
;; delete current or other window
(if (derived-mode-p 'compilation-mode)
(delete-window)
(delete-other-windows)))))
(provide 'toggle-window)
|