Introduce if! & when! macros
The condition argument is evaluated at compile/expansion time, and its body expanded directly.
This commit is contained in:
parent
d12752324a
commit
936124e546
2 changed files with 19 additions and 2 deletions
|
@ -240,6 +240,23 @@ writes to `standard-output'."
|
||||||
(save-silently t))
|
(save-silently t))
|
||||||
(prog1 ,@forms (message ""))))))
|
(prog1 ,@forms (message ""))))))
|
||||||
|
|
||||||
|
(defmacro if! (cond then &rest body)
|
||||||
|
"Expands to THEN if COND is non-nil, to BODY otherwise.
|
||||||
|
COND is checked at compile/expansion time, allowing BODY to be omitted
|
||||||
|
entirely when the elisp is byte-compiled. Use this for forms that contain
|
||||||
|
expensive macros that could safely be removed at compile time."
|
||||||
|
(declare (indent 2))
|
||||||
|
(if (eval cond)
|
||||||
|
then
|
||||||
|
(macroexp-progn body)))
|
||||||
|
|
||||||
|
(defmacro when! (cond &rest body)
|
||||||
|
"Expands to BODY if CONDITION is non-nil at compile/expansion time.
|
||||||
|
See `if!' for details on this macro's purpose."
|
||||||
|
(declare (indent 1))
|
||||||
|
(when (eval cond)
|
||||||
|
(macroexp-progn body)))
|
||||||
|
|
||||||
|
|
||||||
;;; Mutation
|
;;; Mutation
|
||||||
(defmacro appendq! (sym &rest lists)
|
(defmacro appendq! (sym &rest lists)
|
||||||
|
|
|
@ -302,7 +302,7 @@ windows, switch to `doom-fallback-buffer'. Otherwise, delegate to original
|
||||||
(add-to-list 'default-frame-alist '(tool-bar-lines . 0))
|
(add-to-list 'default-frame-alist '(tool-bar-lines . 0))
|
||||||
(add-to-list 'default-frame-alist '(vertical-scroll-bars)))
|
(add-to-list 'default-frame-alist '(vertical-scroll-bars)))
|
||||||
|
|
||||||
(when IS-MAC
|
(when! IS-MAC
|
||||||
;; Curse Lion and its sudden but inevitable fullscreen mode!
|
;; Curse Lion and its sudden but inevitable fullscreen mode!
|
||||||
;; NOTE Meaningless to railwaycat's emacs-mac build
|
;; NOTE Meaningless to railwaycat's emacs-mac build
|
||||||
(setq ns-use-native-fullscreen nil)
|
(setq ns-use-native-fullscreen nil)
|
||||||
|
@ -610,7 +610,7 @@ behavior). Do not set this directly, this is let-bound in `doom-init-theme-h'.")
|
||||||
(run-hooks 'doom-load-theme-hook))
|
(run-hooks 'doom-load-theme-hook))
|
||||||
result)))
|
result)))
|
||||||
|
|
||||||
(unless EMACS27+
|
(when! (not EMACS27+)
|
||||||
;; DEPRECATED Not needed in Emacs 27
|
;; DEPRECATED Not needed in Emacs 27
|
||||||
(defadvice! doom--prefer-compiled-theme-a (orig-fn &rest args)
|
(defadvice! doom--prefer-compiled-theme-a (orig-fn &rest args)
|
||||||
"Have `load-theme' prioritize the byte-compiled theme.
|
"Have `load-theme' prioritize the byte-compiled theme.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue