branch: externals/leaf commit bf870b13490cd05200f4677ae751fd88e2d6103e Merge: 256abf5 d3a0f73 Author: Naoya Yamashita <con...@gmail.com> Commit: GitHub <nore...@github.com>
Merge pull request #495 from conao3/feature#494 feature#494 --- leaf-tests.el | 3 ++- leaf.el | 14 +++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/leaf-tests.el b/leaf-tests.el index 3a8e607..bf87adf 100644 --- a/leaf-tests.el +++ b/leaf-tests.el @@ -156,6 +156,7 @@ Example: (setq leaf-expand-leaf-defun nil) (setq leaf-expand-leaf-defvar nil) (setq leaf-expand-leaf-path nil) +(setq leaf-expand-leaf-defer-let nil) (cort-deftest-with-macroexpand leaf/none '(((leaf leaf) @@ -2341,7 +2342,7 @@ Example: (leaf-init))) ((leaf-handler-leaf-path leaf) - (let ((file (or load-file-name buffer-file-name byte-compile-current-file))) + (let ((file (leaf-this-file))) (unless (boundp 'leaf--paths) (defvar leaf--paths nil)) (when file (add-to-list 'leaf--paths (cons 'leaf file))))))) diff --git a/leaf.el b/leaf.el index 40ba1f8..9bec14d 100644 --- a/leaf.el +++ b/leaf.el @@ -5,7 +5,7 @@ ;; Author: Naoya Yamashita <con...@gmail.com> ;; Maintainer: Naoya Yamashita <con...@gmail.com> ;; Keywords: lisp settings -;; Version: 4.4.7 +;; Version: 4.4.8 ;; URL: https://github.com/conao3/leaf.el ;; Package-Requires: ((emacs "24.1")) @@ -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)