summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Whitton <spwhitton@spwhitton.name>2021-10-18 15:56:18 -0700
committerSean Whitton <spwhitton@spwhitton.name>2021-10-18 15:56:59 -0700
commit42556aea66d8de0650f9d930ba2744a61e316b0c (patch)
tree6d4242e7b8da93a0e3025cacf00245d8f1f01b2e
parent2359342097bd0074e2f458e8f031d8f918590c06 (diff)
downloaddotfiles-42556aea66d8de0650f9d930ba2744a61e316b0c.tar.gz
advise delete-other-windows to preserve side window state
-rw-r--r--.emacs.d/init-spw.el12
1 files changed, 12 insertions, 0 deletions
diff --git a/.emacs.d/init-spw.el b/.emacs.d/init-spw.el
index 9de0cb82..2a34fee0 100644
--- a/.emacs.d/init-spw.el
+++ b/.emacs.d/init-spw.el
@@ -587,6 +587,18 @@ window first."
;; keyboard macros
(global-set-key "\C-cs" #'spw/window-toggle-side-windows)
+(defun spw/delete-other-windows--toggle-side-windows
+ (&optional window &rest _ignore)
+ "Save any side window state before deleting other windows such that side
+windows can be recovered using `window-toggle-side-windows'.
+
+A limitation is that when `window-toggle-side-windows' is subsequently used
+the non-side windows deleted by `delete-other-windows' will also reappear."
+ (when (window-parameter window 'window-side)
+ (window-toggle-side-windows (window-frame window))))
+(advice-add 'delete-other-windows
+ :before #'spw/delete-other-windows--toggle-side-windows)
+
(setq auth-source-save-behavior nil)
;; Make `read-only-mode' and `view-mode' basically the same thing -- if the