ui/modeline: refactor focus/unfocus logic
And improves integration with helm
This commit is contained in:
parent
eaaf6751d3
commit
2a8b3e674a
1 changed files with 20 additions and 13 deletions
|
@ -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))
|
||||||
|
|
||||||
|
|
||||||
;;
|
;;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue