diff --git a/core/core-ui.el b/core/core-ui.el index 556eb19d6..be85bc411 100644 --- a/core/core-ui.el +++ b/core/core-ui.el @@ -49,7 +49,7 @@ (add-hook! isearch-mode-end (setq echo-keystrokes 0.02)) ;; A minor mode for toggling the mode-line -(defvar doom--hidden-modeline-format nil +(defvar doom--modeline-format nil "The modeline format to use when `doom-hide-modeline-mode' is active. Don't set this directly. Bind it in `let' instead.") (defvar-local doom--old-modeline-format nil @@ -61,14 +61,25 @@ disabled.") :global nil (if doom-hide-modeline-mode (setq doom--old-modeline-format mode-line-format - mode-line-format doom--hidden-modeline-format) + mode-line-format doom--modeline-format) (setq mode-line-format doom--old-modeline-format - doom--mode-line nil)) + doom--old-modeline-format nil)) (force-mode-line-update)) ;; Ensure major-mode or theme changes don't overwrite these variables (put 'doom--old-modeline-format 'permanent-local t) (put 'doom-hide-modeline-mode 'permanent-local t) +(defun doom|hide-modeline-mode-reset () + "Sometimes, a major-mode is activated after `doom-hide-modeline-mode' is +activated, thus disabling it (because changing major modes invokes +`kill-all-local-variables' and specifically seems to kill `mode-line-format's +local value, whether or not it's permanent-local. Therefore, we cycle +`doom-hide-modeline-mode' to fix this." + (when doom-hide-modeline-mode + (doom-hide-modeline-mode -1) + (doom-hide-modeline-mode +1))) +(add-hook 'after-change-major-mode-hook 'doom|hide-modeline-mode-reset) + ;; undo/redo changes to Emacs' window layout (defvar winner-dont-bind-my-keys t) ; I'll bind keys myself (require 'winner) diff --git a/modules/app/twitter/config.el b/modules/app/twitter/config.el index 554005838..29184a889 100644 --- a/modules/app/twitter/config.el +++ b/modules/app/twitter/config.el @@ -16,9 +16,8 @@ twittering-initial-timeline-spec-string '(":home" ":mentions" ":direct_messages")) - (set! :popup "*twittering-edit*" :size 12 :select t :modeline nil) + (set! :popup "*twittering-edit*" :size 12 :select t) - (add-hook 'twittering-edit-mode-hook #'doom-hide-modeline-mode) (after! doom-themes (add-hook 'twittering-mode-hook #'doom-buffer-mode)) diff --git a/modules/feature/eval/config.el b/modules/feature/eval/config.el index 8728af1e6..08dc42af7 100644 --- a/modules/feature/eval/config.el +++ b/modules/feature/eval/config.el @@ -90,7 +90,7 @@ invokes the repl. Takes the same arguements as `rtog/add-repl'." (add-hook 'quickrun/mode-hook #'linum-mode) :config - (set! :popup "*quickrun*" :size 10) + (set! :popup "*quickrun*" :size 10 :noesc t :autokill t :autoclose t) ;; don't auto-focus quickrun windows. Shackle handles that for us. (setq quickrun-focus-p nil) diff --git a/modules/lang/processing/config.el b/modules/lang/processing/config.el index 45e2b65fd..c05d50493 100644 --- a/modules/lang/processing/config.el +++ b/modules/lang/processing/config.el @@ -3,8 +3,6 @@ (def-package! processing-mode :commands (processing-mode processing-find-sketch) :mode "\\.pde$" - :init - (add-hook 'processing-compilation-mode-hook #'doom-hide-modeline-mode) :config (set! :build 'build-sketch 'processing-mode #'processing-sketch-build) (set! :popup "*processing-compilation*" :size 10 :noselect t) diff --git a/modules/tools/eshell/config.el b/modules/tools/eshell/config.el index 4bb04b171..35ee8bfaf 100644 --- a/modules/tools/eshell/config.el +++ b/modules/tools/eshell/config.el @@ -65,8 +65,6 @@ redefines its keys every time `eshell-mode' is enabled." (add-to-list '+eshell-buffers (current-buffer))) (add-hook 'eshell-mode-hook #'+eshell|init) - (add-hook 'eshell-mode-hook #'doom-hide-modeline-mode) - (add-hook! eshell-mode (add-hook 'evil-insert-state-exit-hook #'hl-line-mode nil t) (add-hook 'evil-insert-state-entry-hook (lambda () (hl-line-mode -1)) nil t)) diff --git a/modules/tools/term/config.el b/modules/tools/term/config.el index 168098207..23781599e 100644 --- a/modules/tools/term/config.el +++ b/modules/tools/term/config.el @@ -4,6 +4,4 @@ :commands (multi-term multi-term-next multi-term-prev) :config (setq multi-term-program (getenv "SHELL") - multi-term-switch-after-close nil) - - (add-hook 'term-mode-hook #'doom-hide-modeline-mode)) + multi-term-switch-after-close nil))