branch: externals/leaf commit b4b21de5f2aa2b468c478363f5dd4ee26943cb79 Author: Naoya Yamashita <con...@gmail.com> Commit: Naoya Yamashita <con...@gmail.com>
add :leaf-defer-let system keyword and move :leaf-defer `let` hack --- leaf.el | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/leaf.el b/leaf.el index 40ba1f8..2e9ce09 100644 --- a/leaf.el +++ b/leaf.el @@ -153,8 +153,12 @@ Same as `list' but this macro does not evaluate any arguments." (mapc (lambda (elm) (leaf-register-autoload (car elm) (cdr elm))) leaf--value) `(,@(mapcar (lambda (elm) `(,(car elm) 1)) leaf--value) ,@leaf--body)) + :leaf-defer-let (if (and leaf--body (eval (car leaf--value)) + (let ((defer--value (plist-get leaf--raw :leaf-defer))) (eval (car defer--value))) + (leaf-list-memq leaf-defer-keywords (leaf-plist-keys leaf--raw))) + `((let ((leaf--load-file-name ,load-file-name)) ,(print leaf-expand-minimally) ,@leaf--body)) `(,@leaf--body)) :leaf-defer (if (and leaf--body (eval (car leaf--value)) (leaf-list-memq leaf-defer-keywords (leaf-plist-keys leaf--raw))) - `((eval-after-load ',leaf--name '(let ((leaf--load-file-name ,load-file-name)) ,@leaf--body))) `(,@leaf--body)) + `((eval-after-load ',leaf--name '(progn ,@leaf--body))) `(,@leaf--body)) :setq `(,@(mapcar (lambda (elm) `(setq ,(car elm) ,(cdr elm))) leaf--value) ,@leaf--body) :setq-default `(,@(mapcar (lambda (elm) `(setq-default ,(car elm) ,(cdr elm))) leaf--value) ,@leaf--body) @@ -374,8 +378,8 @@ Sort by `leaf-sort-leaf--values-plist' in this order.") :group 'leaf) (defvar leaf-system-defaults (list - :leaf-autoload t :leaf-defer t :leaf-protect t - :leaf-defun t :leaf-defvar t :leaf-path t) + :leaf-autoload t :leaf-defer-let t :leaf-defer t + :leaf-protect t :leaf-defun t :leaf-defvar t :leaf-path t) "The value for all `leaf' blocks for leaf system.") (defcustom leaf-defer-keywords (list @@ -399,7 +403,7 @@ If non-nil, disabled keywords of `leaf-expand-minimally-suppress-keywords'." :type 'boolean :group 'leaf) -(defcustom leaf-expand-minimally-suppress-keywords '(:leaf-protect :leaf-defun :leaf-defvar :leaf-path) +(defcustom leaf-expand-minimally-suppress-keywords '(:leaf-protect :leaf-defun :leaf-defvar :leaf-path :leaf-defer-let) "Suppress keywords when `leaf-expand-minimally' is non-nil." :type 'sexp :group 'leaf)