]> git.eshelyaron.com Git - emacs.git/commitdiff
Add a ":first" keyword for those occasions that it's necessary
authorPhillip Lord <phillip.lord@russet.org.uk>
Tue, 13 Aug 2013 10:40:54 +0000 (11:40 +0100)
committerPhillip Lord <phillip.lord@russet.org.uk>
Tue, 13 Aug 2013 10:40:54 +0000 (11:40 +0100)
lisp/use-package/use-package.el

index 4778c399dea8c43948811bfbd7bd5b0d3ee12d71..7fd276efae720a0e27116ede885f95a70763c99c 100644 (file)
 ;; value of `use-package-verbose'. Other good candidates for `:idle' are
 ;; `yasnippet', `auto-complete' and `autopair'.
 ;;
+;; Finally, you may wish to use `:first'. This form runs before everything
+;; else whenever the `use-package' form evals; the package in question will
+;; never have been required. This can be useful, if you wish for instance, to
+;; pull files from a git repository, or mount a file system.
+;;
 ;; The `:bind' keyword takes either a cons or a list of conses:
 ;;
 ;;   (use-package hi-lock
@@ -401,6 +406,9 @@ For full documentation. please see commentary.
 :bind Perform key bindings, and define autoload for bound
       commands.
 :commands Define autoloads for given commands.
+:first Code to run when `use-package' form evals and before
+       anything else. Unlike :init this form runs before the
+       package is required or autoloads added.
 :mode Form to be added to `auto-mode-alist'.
 :interpreter Form to be added to `interpreter-mode-alist'.
 :defer Defer loading of package -- automatic
@@ -414,6 +422,7 @@ For full documentation. please see commentary.
 :idle adds a form to run on an idle timer"
   (let* ((commands (plist-get args :commands))
          (pre-init-body (plist-get args :pre-init))
+         (first-body (plist-get args :first))
          (init-body (plist-get args :init))
          (config-body (plist-get args :config))
          (diminish-var (plist-get args :diminish))
@@ -441,6 +450,7 @@ For full documentation. please see commentary.
 
     ;; force this immediately -- one off cost
     (unless (plist-get args :disabled)
+
       (let* ((ensure (plist-get args :ensure))
              (package-name
               (or (and (eq ensure t)
@@ -517,6 +527,7 @@ For full documentation. please see commentary.
                  (plist-get args :interpreter)))
 
       `(progn
+         ,first-body
          ,@(mapcar
             #'(lambda (path)
                 `(add-to-list 'load-path