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
#'(org-crypt-use-before-save-magic
+org|setup-ui
+org|setup-popups-rules
+org|setup-agenda
+org|setup-keybinds
+org|setup-hacks))
@ -130,6 +131,22 @@ unfold to point on startup."
org-agenda-start-on-weekday nil
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 ()
"Configures the UI for `org-mode'."
(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
returns a boolean."
`(progn
(+popup-define ,condition ,alist ,parameters)
(push (+popup--rule (list ,condition ,alist ,parameters))
+popup--display-buffer-alist)
(when (bound-and-true-p +popup-mode)
(setq 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)) '((select . t))))"
`(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)
(setq display-buffer-alist +popup--display-buffer-alist))
+popup--display-buffer-alist))
;;;###autoload
(defsubst +popup-define (condition &optional alist parameters)
(defsubst +popup--rule (args)
(declare (indent 1))
(push (if (eq alist :ignore)
(cl-destructuring-bind (condition &optional alist parameters) args
(if (eq alist :ignore)
(list condition nil)
`(,condition
(+popup-buffer)
`(,condition (+popup-buffer)
,@alist
(window-parameters ,@parameters)))
+popup--display-buffer-alist))
(window-parameters ,@parameters)))))
;;

View file

@ -103,60 +103,44 @@ deleted.")
;;
(when (featurep! +all)
(+popup-define "^ \\*" '((slot . 1) (vslot . -1) (size . +popup-shrink-to-fit)))
(+popup-define "^\\*" '((slot . 1) (vslot . -1)) '((select . t))))
(set! :popups
'("^ \\*" ((slot . 1) (vslot . -1) (size . +popup-shrink-to-fit)))
'("^\\*" ((slot . 1) (vslot . -1)) ((select . t)))))
(when (featurep! +defaults)
(+popup-define "^\\*Completions"
'((slot . -1) (vslot . -2))
'((transient . 0)))
(+popup-define "^\\*Compil\\(?:ation\\|e-Log\\)"
'((size . 0.3))
'((transient . 0) (quit . t)))
(+popup-define "^\\*\\(?:scratch\\|Messages\\)"
(set! :popups
'("^\\*Completions"
((slot . -1) (vslot . -2))
((transient . 0)))
'("^\\*Compil\\(?:ation\\|e-Log\\)"
((size . 0.3))
((transient . 0) (quit . t)))
'("^\\*\\(?:scratch\\|Messages\\)"
nil
'((autosave . t) (transient)))
(+popup-define "^\\*doom \\(?:term\\|eshell\\)"
'((size . 0.25) (vslot . -10))
'((select . t) (quit) (transient . 0)))
(+popup-define "^\\*doom:"
'((size . 0.35) (side . bottom))
'((autosave . t) (select . t) (modeline . t) (quit) (transient . t)))
(+popup-define "^\\*\\(?:\\(?:Pp E\\|doom e\\)val\\)"
'((size . +popup-shrink-to-fit))
'((transient . 0) (select . ignore)))
(+popup-define "^\\*Customize"
'((slot . 2) (side . right))
'((modeline . nil) (select . t) (quit . t)))
(+popup-define "^ \\*undo-tree\\*"
'((slot . 2) (side . left) (size . 20))
'((modeline . nil) (select . t) (quit . t)))
((autosave . t) (transient)))
'("^\\*doom \\(?:term\\|eshell\\)"
((size . 0.25) (vslot . -10))
((select . t) (quit) (transient . 0)))
'("^\\*doom:"
((size . 0.35) (side . bottom))
((autosave . t) (select . t) (modeline . t) (quit) (transient . t)))
'("^\\*\\(?:\\(?:Pp E\\|doom e\\)val\\)"
((size . +popup-shrink-to-fit))
((transient . 0) (select . ignore)))
'("^\\*Customize"
((slot . 2) (side . right))
((modeline . nil) (select . t) (quit . t)))
'("^ \\*undo-tree\\*"
((slot . 2) (side . left) (size . 20))
((modeline . nil) (select . t) (quit . t)))
;; `help-mode', `helpful-mode'
(+popup-define "^\\*[Hh]elp"
'((slot . 2) (vslot . 2) (size . 0.25))
'((select . t)))
'("^\\*[Hh]elp"
((slot . 2) (vslot . 2) (size . 0.25))
((select . t)))
;; `Info-mode'
(+popup-define "^\\*info\\*$"
'((slot . 2) (vslot . 2) (size . 0.35))
'((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)))))
'("^\\*info\\*$"
((slot . 2) (vslot . 2) (size . 0.35))
((select . t)))))
(add-hook 'doom-init-ui-hook #'+popup-mode)
(add-hook! '+popup-buffer-mode-hook