From 1ab7301a1d28113a92859bd4523d83e86bf78af4 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Tue, 30 Jan 2018 22:01:19 -0500 Subject: [PATCH] feature/popup: add +popup-enable-*-rules options & delay init Initialization of the popup rules now happens later (on doom-init-ui-hook). The two new options are: + +popup-enable-fallback-rules: the popup module defines two catch-all fallback rules for buffers that match "^ \\*" and "^\\*". By setting this option to nil, you can disable that behavior, in case you want to set them yourself. + +popup-enable-default-rules: setting this to nil disable all default popup rules for various essential Emacs and Doom buffers that should be treated as popups. --- modules/feature/popup/config.el | 54 ++++++++++++++++++++++----------- 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/modules/feature/popup/config.el b/modules/feature/popup/config.el index 2790902cc..14db6c4b9 100644 --- a/modules/feature/popup/config.el +++ b/modules/feature/popup/config.el @@ -81,6 +81,15 @@ a brief description of some native window parameters that Emacs uses: (select . ignore)) "The default window parameters.") +(defvar +popup-enable-fallback-rules t + "If non-nil, feature/popup will declare fallback rules for any special buffer +that falls through all other rules. A special buffer starts with optional +whitespace and an asterix.") + +(defvar +popup-enable-default-rules t + "If non-nil, feature/popup will declare a set of default rules for various +core Emacs and Doom buffers that should be treated as popups.") + (defvar +popup-ttl 10 "The default time-to-live for transient buffers whose popup buffers have been deleted.") @@ -137,32 +146,41 @@ ALIST supports one custom parameter: `size', which will resolve to (list (cons 'window-parameters parameters))) +popup--display-buffer-alist))) (when (bound-and-true-p +popup-mode) - (setq display-buffer-alist +popup--display-buffer-alist)))) + (setq display-buffer-alist +popup--display-buffer-alist)) + nil)) ;; ;; Default popup rules & bootstrap ;; -(eval-when-compile - (set! :popup "^ \\*" '((slot . 1) (vslot . -1) (size . +popup-shrink-to-fit))) - (set! :popup "^\\*" '((slot . 1) (vslot . -1)) '((select . t))) - (set! :popup "^\\*Completions" '((slot . -1) (vslot . -2)) '((transient . 0))) - (set! :popup "^\\*Compilation" nil '((transient . 0) (quit . t))) - (set! :popup "^\\*\\(?:scratch\\|Messages\\)" nil '((transient))) - (set! :popup "^\\*[Hh]elp" - '((slot . 2) (vslot . 2) (size . 0.2)) - '((select . t))) - (set! :popup "^\\*doom \\(?:term\\|eshell\\)" - '((size . 0.25)) - '((quit) (transient . 0))) - (set! :popup "^\\*doom:" - '((size . 0.35) (side . top)) - '((select . t) (modeline . t) (quit) (transient)))) +(defun +popup|init () + (eval-when-compile + (when +popup-enable-fallback-rules + (set! :popup "^ \\*" '((slot . 1) (vslot . -1) (size . +popup-shrink-to-fit))) + (set! :popup "^\\*" '((slot . 1) (vslot . -1)) '((select . t)))) -(setq +popup--display-buffer-alist (eval-when-compile +popup--display-buffer-alist)) -(add-hook 'doom-init-ui-hook #'+popup-mode) + (when +popup-enable-default-rules + (set! :popup "^\\*Completions" '((slot . -1) (vslot . -2)) '((transient . 0))) + (set! :popup "^\\*Compil\\(ation\\|e-Log\\)" nil '((transient . 0) (quit . t))) + (set! :popup "^\\*\\(?:scratch\\|Messages\\)" nil '((transient))) + (set! :popup "^\\*[Hh]elp" + '((slot . 2) (vslot . 2) (size . 0.2)) + '((select . t))) + (set! :popup "^\\*doom \\(?:term\\|eshell\\)" + '((size . 0.25)) + '((quit) (transient . 0))) + (set! :popup "^\\*doom:" + '((size . 0.35) (side . top)) + '((select . t) (modeline . t) (quit) (transient))) + (set! :popup "^\\*\\(?:\\(?:Pp E\\|doom e\\)val\\)" + '((size . +popup-shrink-to-fit)) '((transient . 0) (select . ignore)))) + nil) + (setq +popup--display-buffer-alist (eval-when-compile +popup--display-buffer-alist)) + (+popup-mode +1)) + +(add-hook 'doom-init-ui-hook #'+popup|init) (add-hook! '+popup-buffer-mode-hook #'(+popup|adjust-fringes +popup|set-modeline))