ui/modeline: refactor focus/unfocus logic

And improves integration with helm
This commit is contained in:
Henrik Lissner 2018-08-06 21:10:20 +02:00
parent eaaf6751d3
commit 2a8b3e674a
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395

View file

@ -177,22 +177,29 @@ buffers.")
(eq (selected-window) +modeline-current-window)) (eq (selected-window) +modeline-current-window))
;; Ensure modeline is inactive when Emacs is unfocused (and active otherwise) ;; Ensure modeline is inactive when Emacs is unfocused (and active otherwise)
(defvar +modeline-remap-face-cookie nil) (defvar +modeline-remap-face-cookies nil)
(defun +modeline|focus (&rest _) (defun +modeline|focus-all-windows (&rest _)
(when +modeline-remap-face-cookie (dolist (window +modeline-remap-face-cookies)
(require 'face-remap) (with-selected-window (car window)
(face-remap-remove-relative +modeline-remap-face-cookie))) (face-remap-remove-relative (cdr window)))))
(add-hook 'focus-in-hook #'+modeline|focus)
(defun +modeline|unfocus (&rest _) (defun +modeline|unfocus-all-windows (&rest _)
(setq +modeline-remap-face-cookie (face-remap-add-relative 'mode-line 'mode-line-inactive))) (setq +modeline-remap-face-cookies
(add-hook 'focus-out-hook #'+modeline|unfocus) (mapcar (lambda (window)
(with-selected-window window
(cons window
(face-remap-add-relative 'mode-line
'mode-line-inactive))))
(window-list))))
(add-hook 'helm-after-initialize-hook #'+modeline|unfocus) (add-hook 'focus-in-hook #'+modeline|focus-all-windows)
(add-hook 'focus-out-hook #'+modeline|unfocus-all-windows)
(advice-add #'posframe-hide :after #'+modeline|focus) (when (featurep! :completion helm)
(advice-add #'posframe-delete :after #'+modeline|focus) (add-hook 'helm-before-initialize-hook #'+modeline|unfocus-all-windows)
(add-hook 'helm-cleanup-hook #'+modeline|focus-all-windows)
(advice-add #'posframe-hide :after #'+modeline|focus-all-windows)
(advice-add #'posframe-delete :after #'+modeline|focus-all-windows))
;; ;;