diff --git a/modules/feature/popup/autoload.el b/modules/feature/popup/autoload.el index a25587ddb..63aab8c6a 100644 --- a/modules/feature/popup/autoload.el +++ b/modules/feature/popup/autoload.el @@ -180,6 +180,7 @@ Uses `shrink-window-if-larger-than-buffer'." (add-hook 'doom-unreal-buffer-functions #'+popup-buffer-p) (add-hook 'doom-escape-hook #'+popup|close-on-escape t) (add-hook 'doom-cleanup-hook #'+popup|cleanup-rules) + (add-hook 'after-change-major-mode-hook #'+popup|set-modeline-on-enable) (setq +popup--old-display-buffer-alist display-buffer-alist display-buffer-alist +popup--display-buffer-alist window--sides-inhibit-check t) @@ -189,6 +190,7 @@ Uses `shrink-window-if-larger-than-buffer'." (remove-hook 'doom-unreal-buffer-functions #'+popup-buffer-p) (remove-hook 'doom-escape-hook #'+popup|close-on-escape) (remove-hook 'doom-cleanup-hook #'+popup|cleanup-rules) + (remove-hook 'after-change-major-mode-hook #'+popup|set-modeline-on-enable) (setq display-buffer-alist +popup--old-display-buffer-alist window--sides-inhibit-check nil) (+popup|cleanup-rules) @@ -221,7 +223,7 @@ disabled." (set-window-fringes nil f f fringes-outside-margins))) ;;;###autoload -(defun +popup|set-modeline () +(defun +popup|set-modeline-on-enable () "Don't show modeline in popup windows without a `modeline' window-parameter. + If one exists and it's a symbol, use `doom-modeline' to grab the format. @@ -229,17 +231,22 @@ disabled." + If nil (or omitted), then hide the modeline entirely (the default). + If a function, it takes the current buffer as its argument and must return one of the above values." - (if +popup-buffer-mode - (let ((modeline (+popup-parameter-fn 'modeline nil (current-buffer)))) - (cond ((eq modeline 't)) - ((or (eq modeline 'nil) - (not modeline)) - (hide-mode-line-mode +1)) - ((symbolp modeline) - (when-let* ((hide-mode-line-format (doom-modeline modeline))) - (hide-mode-line-mode +1))))) - (when (bound-and-true-p hide-mode-line-mode) - (hide-mode-line-mode -1)))) + (when +popup-buffer-mode + (let ((modeline (+popup-parameter-fn 'modeline nil (current-buffer)))) + (cond ((eq modeline 't)) + ((or (eq modeline 'nil) + (null modeline)) + (hide-mode-line-mode +1)) + ((symbolp modeline) + (when-let* ((hide-mode-line-format (doom-modeline modeline))) + (hide-mode-line-mode +1))))))) + +;;;###autoload +(defun +popup|unset-modeline-on-disable () + "Restore the modeline when `+popup-buffer-mode' is deactivated." + (when (and (not +popup-buffer-mode) + (bound-and-true-p hide-mode-line-mode)) + (hide-mode-line-mode -1))) ;;;###autoload (defun +popup|close-on-escape () diff --git a/modules/feature/popup/config.el b/modules/feature/popup/config.el index 3151d9404..0dd831ea4 100644 --- a/modules/feature/popup/config.el +++ b/modules/feature/popup/config.el @@ -166,7 +166,10 @@ ALIST supports one custom parameter: `size', which will resolve to '((size . +popup-shrink-to-fit)) '((transient . 0) (select . ignore)))) (add-hook 'doom-init-ui-hook #'+popup-mode) -(add-hook! '+popup-buffer-mode-hook #'(+popup|adjust-fringes +popup|set-modeline)) +(add-hook! '+popup-buffer-mode-hook + #'(+popup|adjust-fringes + +popup|set-modeline-on-enable + +popup|unset-modeline-on-disable)) ;;