Improve hooks for active windows.

This commit is contained in:
Vincent Zhang 2021-10-19 00:11:19 +08:00
parent aed094c437
commit 5d55484576

View file

@ -848,34 +848,17 @@ used as an advice to window creation functions."
(defun doom-modeline-set-selected-window (&rest _) (defun doom-modeline-set-selected-window (&rest _)
"Set `doom-modeline-current-window' appropriately." "Set `doom-modeline-current-window' appropriately."
(when-let ((win (doom-modeline--get-current-window))) (let ((win (doom-modeline--get-current-window)))
(unless (or (minibuffer-window-active-p win) (setq doom-modeline-current-window
(and (bound-and-true-p lv-wnd) (eq lv-wnd win))) (if (minibuffer-window-active-p win)
(setq doom-modeline-current-window win)))) (minibuffer-selected-window)
win))))
(defun doom-modeline-unset-selected-window () (defun doom-modeline-unset-selected-window ()
"Unset `doom-modeline-current-window' appropriately." "Unset `doom-modeline-current-window' appropriately."
(setq doom-modeline-current-window nil)) (setq doom-modeline-current-window nil))
(add-hook 'after-make-frame-functions #'doom-modeline-set-selected-window) (add-hook 'pre-redisplay-functions #'doom-modeline-set-selected-window)
(add-hook 'buffer-list-update-hook #'doom-modeline-set-selected-window)
(add-hook 'window-configuration-change-hook #'doom-modeline-set-selected-window)
(add-hook 'window-selection-change-functions #'doom-modeline-set-selected-window)
(add-hook 'exwm-workspace-switch-hook #'doom-modeline-set-selected-window)
(with-no-warnings
(if (boundp 'after-focus-change-function)
(progn
(defun doom-modeline-refresh-frame ()
(setq doom-modeline-current-window nil)
(cl-loop for frame in (frame-list)
if (eq (frame-focus-state frame) t)
return (setq doom-modeline-current-window
(doom-modeline--get-current-window frame)))
(force-mode-line-update))
(add-function :after after-focus-change-function #'doom-modeline-refresh-frame))
(progn
(add-hook 'focus-in-hook #'doom-modeline-set-selected-window)
(add-hook 'focus-out-hook #'doom-modeline-unset-selected-window))))
;; Ensure modeline is inactive when Emacs is unfocused (and active otherwise) ;; Ensure modeline is inactive when Emacs is unfocused (and active otherwise)
(defvar doom-modeline-remap-face-cookie nil) (defvar doom-modeline-remap-face-cookie nil)