Skip to content

Commit

Permalink
Allow using expanded macro without loading feature
Browse files Browse the repository at this point in the history
In the macro `use-package-with-elapased-timer' use `bound-and-true-p'
go get the values of the customizable options `use-package-verbose'
and `use-package-minimum-reported-time'.  This way the library only
has to be required at compile time, provided these options are not
actually customized.  If the user has changed the values, then she
also has to load the library at runtime or the macros fall back to
the default of doing their job silently.  See jwiegley/use-package#149.
  • Loading branch information
tarsius committed Jan 18, 2015
1 parent 01623fc commit 35b5a51
Showing 1 changed file with 21 additions and 4 deletions.
25 changes: 21 additions & 4 deletions lisp/use-package/use-package.el
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,27 @@
:group 'startup)

(defcustom use-package-verbose nil
"Whether to report about loading and configuration details."
"Whether to report about loading and configuration details.
If you customize this, then you should require the `use-package'
feature in files that use one of the macros `use-package' or
`use-package-with-elapsed-timer', even if these files only
contain compiled expansions of the macros. If you don't do so,
then the expanded macros do their job silently."
:type 'boolean
:group 'use-package)

(defcustom use-package-minimum-reported-time 0.01
"Minimal load time that will be reported"
"Minimal load time that will be reported.
Note that `use-package-verbose' has to be set to t, for anything
to be reported at all.
If you customize this, then you should require the `use-package'
feature in files that use one of the macros `use-package' or
`use-package-with-elapsed-timer', even if these files only
contain compiled expansions of the macros. If you don't do so,
then the expanded macros do their job silently."
:type 'number
:group 'use-package)

Expand All @@ -65,13 +80,15 @@
(defmacro use-package-with-elapsed-timer (text &rest body)
(declare (indent 1))
(let ((nowvar (make-symbol "now")))
`(if use-package-verbose
`(if (bound-and-true-p use-package-verbose)
(let ((,nowvar (current-time)))
(message "%s..." ,text)
(prog1 (progn ,@body)
(let ((elapsed
(float-time (time-subtract (current-time) ,nowvar))))
(if (> elapsed ,use-package-minimum-reported-time)
(if (> elapsed
(or (bound-and-true-p use-package-minimum-reported-time)
"0.01"))
(message "%s...done (%.3fs)" ,text elapsed)
(message "%s...done" ,text)))))
,@body)))
Expand Down

0 comments on commit 35b5a51

Please sign in to comment.