summary refs log tree commit diff stats
path: root/tag-emacs
diff options
context:
space:
mode:
authorAlan Pearce2017-02-06 08:50:15 +0100
committerAlan Pearce2017-02-06 08:50:15 +0100
commit57d40296cdb4ad759b857b0ea4c396d2ade94b80 (patch)
treec2034f6764184543641d92295566f7b44e1c8482 /tag-emacs
parenta0219037c6eff35b09b0ec4352efff3606b5d140 (diff)
downloaddotfiles-57d40296cdb4ad759b857b0ea4c396d2ade94b80.tar.lz
dotfiles-57d40296cdb4ad759b857b0ea4c396d2ade94b80.tar.zst
dotfiles-57d40296cdb4ad759b857b0ea4c396d2ade94b80.zip
Emacs: Improve hide/show mode line functions
Diffstat (limited to 'tag-emacs')
-rw-r--r--tag-emacs/emacs.d/init.org41
1 files changed, 25 insertions, 16 deletions
diff --git a/tag-emacs/emacs.d/init.org b/tag-emacs/emacs.d/init.org
index cb47fe6..ad025d5 100644
--- a/tag-emacs/emacs.d/init.org
+++ b/tag-emacs/emacs.d/init.org
@@ -141,26 +141,25 @@ Let’s try a basic theme.
 (use-package basic-theme
   :config (progn
             (load-theme 'basic t)
+
+            (set-face-background 'mode-line "#a1b56c")
+
+            (defvar mode-line-default-format mode-line-format)
+            (defcustom mode-line-default-hidden t
+              "Whether to hide the mode line by default")
+
             (defun show-mode-line ()
               (interactive)
-              (let ((faces-to-toggle '(mode-line mode-line-inactive)))
-                (mapcar (lambda (face)
-                          (set-face-background face "#a1b56c")
-                          (set-face-attribute face nil :height (face-attribute 'default :height)))
-                        faces-to-toggle)))
+              (setq mode-line-format mode-line-default-format)
+              (when (called-interactively-p)
+                (setq-default mode-line-format mode-line-default-format)
+                (setq mode-line-default-hidden nil)))
             (defun hide-mode-line ()
               (interactive)
-              (let ((faces-to-toggle '(mode-line mode-line-inactive)))
-                (mapcar (lambda (face)
-                          (set-face-background face "#e8e8e8")
-                          (set-face-attribute face nil :height 20))
-                        faces-to-toggle)))
-            (defun mode-line-visual-toggle ()
-              (interactive)
-              (cond ((string= "#a1b56c" (face-attribute 'mode-line :background))
-                     (hide-mode-line))
-                    (t
-                     (show-mode-line))))
+              (setq mode-line-format nil)
+              (when (called-interactively-p)
+                (setq-default mode-line-format nil)
+                (setq mode-line-default-hidden t)))
 
             (setq-default cursor-type 'bar)
             (setq-default cursor-in-non-selected-windows nil)
@@ -176,6 +175,16 @@ Let’s try a basic theme.
               (show-mode-line))
             (hide-clutter)
 
+            (when mode-line-default-hidden
+              (call-interactively #'hide-mode-line))
+
+            (defun hide-mode-line-if-default-hidden ()
+              (if mode-line-default-hidden
+                  (hide-mode-line)
+                (show-mode-line)))
+
+            (add-hook 'after-change-major-mode-hook #'hide-mode-line-if-default-hidden)
+
             (add-hook 'minibuffer-setup-hook #'show-mode-line)
             (add-hook 'minibuffer-exit-hook #'hide-mode-line)))
 #+END_SRC