From 5549e141a73359fc952ec2a5c2f6edfb90547d9e Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 4 Feb 2017 21:09:33 -0500 Subject: [PATCH] doom-def-setting => def-setting! --- core/core-popups.el | 62 +++++++++++++++++----------------- core/core-set.el | 19 +++++------ modules/feature/evil/config.el | 8 ++--- 3 files changed, 44 insertions(+), 45 deletions(-) diff --git a/core/core-popups.el b/core/core-popups.el index a9ee4a2fe..f5ca06921 100644 --- a/core/core-popups.el +++ b/core/core-popups.el @@ -36,25 +36,24 @@ map) "Active keymap in popup windows.") +(def-setting! :popup (&rest rule) + "Prepend a new popup rule to `shackle-rules'." + (let ((pattern (car rule)) + (plist (cdr rule))) + ;; Align popups by default (error if this doesn't happen) + (unless (plist-member plist :align) + (plist-put plist :align t)) + ;; Select popups by default + (unless (or (plist-member plist :select) + (plist-member plist :noselect)) + (plist-put plist :select t)) + (push (cons pattern plist) shackle-rules))) + ;; ;; Bootstrap ;; -(doom-def-setting :popup - (lambda (&rest rule) - (let ((pattern (car rule)) - (plist (cdr rule))) - ;; Align popups by default (error if this doesn't happen) - (unless (plist-member plist :align) - (plist-put plist :align t)) - ;; Select popups by default - (unless (or (plist-member plist :select) - (plist-member plist :noselect)) - (plist-put plist :select t)) - (push (cons pattern plist) shackle-rules))) - "Prepend a new popup rule to `shackle-rules'.") - (package! shackle :demand t :init (setq shackle-default-alignment 'below @@ -67,24 +66,25 @@ ;; :noesc and :modeline are custom settings and are not part of shackle. See ;; `doom*popup-init' and `doom-popup-buffer' for how they're used. (set! :popup - ("^ ?\\*doom:.+\\*$" :size 40 :modeline t :regexp t) - ("^ ?\\*doom .+\\*$" :size 30 :noselect t :regexp t) + ("^ ?\\*doom:.+\\*$" :size 40 :modeline t :regexp t) + ("^ ?\\*doom .+\\*$" :size 30 :noselect t :regexp t) ("^\\*.+-Profiler-Report .+\\*$" :size 0.3 :regexp t) - ("*esup*" :size 0.4 :noselect t :noesc t) - ("*minor-modes*" :size 0.5 :noselect t) - ("*eval*" :size 16 :noselect t) - ("*Pp Eval Output*" :size 0.3) - ("*Apropos*" :size 0.3) - ("*Backtrace*" :size 25 :noselect t) - ("*Help*" :size 16) - ("*Messages*" :size 10) - ("*Warnings*" :size 10 :noselect t) - ("*command-log*" :size 28 :noselect t :align right) - (compilation-mode :size 15 :noselect t :noesc t) - (ivy-occur-grep-mode :size 25 :noesc t) - (eww-mode :size 30) - (comint-mode :noesc t) - (tabulated-list-mode :noesc t)) + ("*esup*" :size 0.4 :noselect t :noesc t) + ("*minor-modes*" :size 0.5 :noselect t) + ("*eval*" :size 16 :noselect t) + ("*Pp Eval Output*" :size 0.3) + ("*Apropos*" :size 0.3) + ("*Backtrace*" :size 25 :noselect t) + ("*Help*" :size 16) + ("*Messages*" :size 10) + ("*Warnings*" :size 10 :noselect t) + ("*command-log*" :size 28 :noselect t :align right) + ("*Shell Command Output*" :size 20 :noselect t) + (compilation-mode :size 15 :noselect t :noesc t) + (ivy-occur-grep-mode :size 25 :noesc t) + (eww-mode :size 30) + (comint-mode :noesc t) + (tabulated-list-mode :noesc t)) (define-minor-mode doom-popup-mode "Minor mode for pop-up windows." diff --git a/core/core-set.el b/core/core-set.el index 23c8fc3b0..41c87856f 100644 --- a/core/core-set.el +++ b/core/core-set.el @@ -9,20 +9,19 @@ "An alist of settings, mapping setting keywords to setter functions, which can be a lambda or symbol.") -(defun doom-def-setting (keyword setter-fn &optional docstring) +(defmacro def-setting! (keyword arglist &optional docstring &rest forms) "Define a setting macro. Takes the same arguments as `defmacro'. This should return forms, which will be run when `set!' is used to call this setting." - (declare (indent defun)) + (declare (indent defun) (doc-string 3)) (unless (keywordp keyword) (error "Not a valid property name: %s" keyword)) - (unless (or (symbolp setter-fn) - (functionp setter-fn)) - (error "Not a valid setting function for %s" keyword)) - (push (list keyword - :source load-file-name - :docstring docstring - :fn setter-fn) - doom-settings)) + `(push (list ,keyword + :source ,(__FILE__) + :docstring ,docstring + :fn (lambda ,arglist + ,docstring + ,@forms)) + doom-settings)) (defmacro set! (keyword &rest rest) "Set an option defined by `def-setting!'. Skip if doesn't exist." diff --git a/modules/feature/evil/config.el b/modules/feature/evil/config.el index 64b308ac6..2b02eab1f 100644 --- a/modules/feature/evil/config.el +++ b/modules/feature/evil/config.el @@ -9,15 +9,15 @@ (defvar +evil-localleader "\\" "The key, used by the `map!' macro for :localleader bindings.") +(def-setting! :evil-state (mode state) + "Set the initialize STATE of MODE using `evil-set-initial-state'." + (evil-set-initial-state mode state)) + ;; ;; evil-mode ;; -(doom-def-setting :evil-state - 'evil-set-initial-state - "Set the initialize STATE of MODE using `evil-set-initial-state'.") - (use-package! evil :demand t :init (setq evil-want-C-u-scroll t