From b082ba64600a4b64a0d948958fcd1281ca8eb18b Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 12 Mar 2018 13:31:55 -0400 Subject: [PATCH] ui/doom-modeline: deactivate mode-line when frame loses focus #458 --- modules/ui/doom-modeline/config.el | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/modules/ui/doom-modeline/config.el b/modules/ui/doom-modeline/config.el index e5f352e26..01e244082 100644 --- a/modules/ui/doom-modeline/config.el +++ b/modules/ui/doom-modeline/config.el @@ -32,12 +32,17 @@ "Sets `+doom-modeline-current-window' appropriately" (when-let* ((win (frame-selected-window))) (unless (minibuffer-window-active-p win) - (setq +doom-modeline-current-window win)))) + (setq +doom-modeline-current-window win) + (force-mode-line-update)))) + +(defun +doom-modeline|unset-selected-window () + (setq +doom-modeline-current-window nil) + (force-mode-line-update)) (add-hook 'window-configuration-change-hook #'+doom-modeline|set-selected-window) (add-hook 'focus-in-hook #'+doom-modeline|set-selected-window) -(advice-add #'handle-switch-frame :after #'+doom-modeline|set-selected-window) -(advice-add #'select-window :after #'+doom-modeline|set-selected-window) +(add-hook 'focus-out-hook #'+doom-modeline|unset-selected-window) +(add-hook 'doom-after-switch-window-hook #'+doom-modeline|set-selected-window) ;; @@ -649,5 +654,19 @@ Returns \"\" to not break --no-window-system." (add-hook 'image-mode-hook #'+doom-modeline|set-media-modeline) (add-hook 'circe-mode-hook #'+doom-modeline|set-special-modeline) +;; TODO Refactor me +(defvar +doom-modeline-remap-face-cookie nil) +(defun +doom-modeline|focus () + (require 'face-remap) + (when +doom-modeline-remap-face-cookie + (face-remap-remove-relative +doom-modeline-remap-face-cookie))) + +(defun +doom-modeline|unfocus () + (require 'face-remap) + (setq +doom-modeline-remap-face-cookie (face-remap-add-relative 'mode-line 'mode-line-inactive))) + +(add-hook 'focus-in-hook #'+doom-modeline|focus) +(add-hook 'focus-out-hook #'+doom-modeline|unfocus) + ;; -(add-hook 'doom-big-font-mode-hook #'+doom-modeline|resize-for-big-font) +;; (add-hook 'doom-big-font-mode-hook #'+doom-modeline|resize-for-big-font)