ui/popup: refactor :popup/:popups settings

And move org popup settings to lang/org
This commit is contained in:
Henrik Lissner 2018-05-26 23:26:35 +02:00
parent f3c7dac997
commit fa17de9f19
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
3 changed files with 64 additions and 62 deletions

View file

@ -39,6 +39,7 @@
(add-hook! 'org-load-hook (add-hook! 'org-load-hook
#'(org-crypt-use-before-save-magic #'(org-crypt-use-before-save-magic
+org|setup-ui +org|setup-ui
+org|setup-popups-rules
+org|setup-agenda +org|setup-agenda
+org|setup-keybinds +org|setup-keybinds
+org|setup-hacks)) +org|setup-hacks))
@ -130,6 +131,22 @@ unfold to point on startup."
org-agenda-start-on-weekday nil org-agenda-start-on-weekday nil
org-agenda-start-day "-3d")) org-agenda-start-day "-3d"))
(defun +org|setup-popups-rules ()
"Defines popup rules for org-mode (does nothing if :ui popup is disabled)."
(set! :popups
'("^\\*\\(?:Agenda Com\\|Calendar\\|Org \\(?:Links\\|Export Dispatcher\\|Select\\)\\)"
((slot . -1) (vslot . -1) (size . +popup-shrink-to-fit))
((transient . 0)))
'("^\\*Org Agenda"
((size . 0.35))
((select . t) (transient)))
'("^\\*Org Src"
((size . 0.3))
((quit) (select . t)))
'("^CAPTURE.*\\.org$"
((size . 0.2))
((quit) (select . t)))))
(defun +org|setup-ui () (defun +org|setup-ui ()
"Configures the UI for `org-mode'." "Configures the UI for `org-mode'."
(setq-default (setq-default

View file

@ -27,7 +27,8 @@ will be tested against CONDITION, which is either a) a regexp string (which is
matched against the buffer's name) or b) a function that takes no arguments and matched against the buffer's name) or b) a function that takes no arguments and
returns a boolean." returns a boolean."
`(progn `(progn
(+popup-define ,condition ,alist ,parameters) (push (+popup--rule (list ,condition ,alist ,parameters))
+popup--display-buffer-alist)
(when (bound-and-true-p +popup-mode) (when (bound-and-true-p +popup-mode)
(setq display-buffer-alist +popup--display-buffer-alist)) (setq display-buffer-alist +popup--display-buffer-alist))
+popup--display-buffer-alist)) +popup--display-buffer-alist))
@ -41,21 +42,21 @@ each individual rule.
(\"^ \\*\" '((slot . 1) (vslot . -1) (size . +popup-shrink-to-fit))) (\"^ \\*\" '((slot . 1) (vslot . -1) (size . +popup-shrink-to-fit)))
(\"^\\*\" '((slot . 1) (vslot . -1)) '((select . t))))" (\"^\\*\" '((slot . 1) (vslot . -1)) '((select . t))))"
`(progn `(progn
,@(cl-loop for rule in rules collect `(+popup-define ,@rule)) (dolist (rule (nreverse (list ,@rules)))
(push (+popup--rule rule) +popup--display-buffer-alist))
(when (bound-and-true-p +popup-mode) (when (bound-and-true-p +popup-mode)
(setq display-buffer-alist +popup--display-buffer-alist)) (setq display-buffer-alist +popup--display-buffer-alist))
+popup--display-buffer-alist)) +popup--display-buffer-alist))
;;;###autoload ;;;###autoload
(defsubst +popup-define (condition &optional alist parameters) (defsubst +popup--rule (args)
(declare (indent 1)) (declare (indent 1))
(push (if (eq alist :ignore) (cl-destructuring-bind (condition &optional alist parameters) args
(if (eq alist :ignore)
(list condition nil) (list condition nil)
`(,condition `(,condition (+popup-buffer)
(+popup-buffer)
,@alist ,@alist
(window-parameters ,@parameters))) (window-parameters ,@parameters)))))
+popup--display-buffer-alist))
;; ;;

View file

@ -103,60 +103,44 @@ deleted.")
;; ;;
(when (featurep! +all) (when (featurep! +all)
(+popup-define "^ \\*" '((slot . 1) (vslot . -1) (size . +popup-shrink-to-fit))) (set! :popups
(+popup-define "^\\*" '((slot . 1) (vslot . -1)) '((select . t)))) '("^ \\*" ((slot . 1) (vslot . -1) (size . +popup-shrink-to-fit)))
'("^\\*" ((slot . 1) (vslot . -1)) ((select . t)))))
(when (featurep! +defaults) (when (featurep! +defaults)
(+popup-define "^\\*Completions" (set! :popups
'((slot . -1) (vslot . -2)) '("^\\*Completions"
'((transient . 0))) ((slot . -1) (vslot . -2))
(+popup-define "^\\*Compil\\(?:ation\\|e-Log\\)" ((transient . 0)))
'((size . 0.3)) '("^\\*Compil\\(?:ation\\|e-Log\\)"
'((transient . 0) (quit . t))) ((size . 0.3))
(+popup-define "^\\*\\(?:scratch\\|Messages\\)" ((transient . 0) (quit . t)))
'("^\\*\\(?:scratch\\|Messages\\)"
nil nil
'((autosave . t) (transient))) ((autosave . t) (transient)))
(+popup-define "^\\*doom \\(?:term\\|eshell\\)" '("^\\*doom \\(?:term\\|eshell\\)"
'((size . 0.25) (vslot . -10)) ((size . 0.25) (vslot . -10))
'((select . t) (quit) (transient . 0))) ((select . t) (quit) (transient . 0)))
(+popup-define "^\\*doom:" '("^\\*doom:"
'((size . 0.35) (side . bottom)) ((size . 0.35) (side . bottom))
'((autosave . t) (select . t) (modeline . t) (quit) (transient . t))) ((autosave . t) (select . t) (modeline . t) (quit) (transient . t)))
(+popup-define "^\\*\\(?:\\(?:Pp E\\|doom e\\)val\\)" '("^\\*\\(?:\\(?:Pp E\\|doom e\\)val\\)"
'((size . +popup-shrink-to-fit)) ((size . +popup-shrink-to-fit))
'((transient . 0) (select . ignore))) ((transient . 0) (select . ignore)))
(+popup-define "^\\*Customize" '("^\\*Customize"
'((slot . 2) (side . right)) ((slot . 2) (side . right))
'((modeline . nil) (select . t) (quit . t))) ((modeline . nil) (select . t) (quit . t)))
(+popup-define "^ \\*undo-tree\\*" '("^ \\*undo-tree\\*"
'((slot . 2) (side . left) (size . 20)) ((slot . 2) (side . left) (size . 20))
'((modeline . nil) (select . t) (quit . t))) ((modeline . nil) (select . t) (quit . t)))
;; `help-mode', `helpful-mode' ;; `help-mode', `helpful-mode'
(+popup-define "^\\*[Hh]elp" '("^\\*[Hh]elp"
'((slot . 2) (vslot . 2) (size . 0.25)) ((slot . 2) (vslot . 2) (size . 0.25))
'((select . t))) ((select . t)))
;; `Info-mode' ;; `Info-mode'
(+popup-define "^\\*info\\*$" '("^\\*info\\*$"
'((slot . 2) (vslot . 2) (size . 0.35)) ((slot . 2) (vslot . 2) (size . 0.35))
'((select . t))) ((select . t)))))
;; `org-mode'
;; Use org-load-hook instead of `after!' because the hook runs sooner,
;; allowing users to override these later.
(add-hook! 'org-load-hook
(+popup-define "^\\*\\(?:Agenda Com\\|Calendar\\|Org \\(?:Links\\|Export Dispatcher\\|Select\\)\\)"
'((slot . -1) (vslot . -1) (size . +popup-shrink-to-fit))
'((transient . 0)))
(+popup-define "^\\*Org Agenda"
'((size . 0.35))
'((select . t) (transient)))
(+popup-define "^\\*Org Src"
'((size . 0.3))
'((quit) (select . t)))
(+popup-define "^CAPTURE.*\\.org$"
'((size . 0.2))
'((quit) (select . t)))))
(add-hook 'doom-init-ui-hook #'+popup-mode) (add-hook 'doom-init-ui-hook #'+popup-mode)
(add-hook! '+popup-buffer-mode-hook (add-hook! '+popup-buffer-mode-hook