core: add package breakdown in summary message
e: elpa r: recipe l: local b: built-in
This commit is contained in:
parent
50515a826a
commit
22c2763569
|
@ -113,7 +113,7 @@ LAYER has to be installed for this method to work properly."
|
|||
:initform elpa
|
||||
:type (satisfies (lambda (x)
|
||||
(or (stringp x)
|
||||
(member x '(built-in local site elpa))
|
||||
(memq x '(built-in local site elpa))
|
||||
(and (listp x) (eq 'recipe (car x))))))
|
||||
:documentation "Location of the package.")
|
||||
(toggle :initarg :toggle
|
||||
|
@ -969,9 +969,24 @@ path."
|
|||
(let ((file (concat (oref layer :dir) file)))
|
||||
(if (file-exists-p file) (load file)))))
|
||||
|
||||
(defun configuration-layer/configured-packages-count ()
|
||||
"Return the number of configured packages."
|
||||
(length configuration-layer--packages))
|
||||
(defun configuration-layer/configured-packages-stats (packages)
|
||||
"Return a statistics alist regarding the number of configured PACKAGES."
|
||||
`((total ,(length packages))
|
||||
(elpa ,(length (configuration-layer/filter-objects
|
||||
packages (lambda (x)
|
||||
(eq 'elpa (oref x :location))))))
|
||||
(recipe ,(length (configuration-layer/filter-objects
|
||||
packages
|
||||
(lambda (x)
|
||||
(let ((location (oref x :location)))
|
||||
(and (listp location)
|
||||
(eq 'recipe (car location))))))))
|
||||
(local ,(length (configuration-layer/filter-objects
|
||||
packages (lambda (x)
|
||||
(memq (oref x :location) '(local site))))))
|
||||
(built-in ,(length (configuration-layer/filter-objects
|
||||
packages (lambda (x)
|
||||
(eq 'built-in (oref x :location))))))))
|
||||
|
||||
(defun configuration-layer//install-package (pkg)
|
||||
"Unconditionally install the package PKG."
|
||||
|
@ -1160,7 +1175,7 @@ path."
|
|||
(defun configuration-layer//configure-packages (packages)
|
||||
"Configure all passed PACKAGES honoring the steps order."
|
||||
(setq spacemacs-loading-dots-chunk-threshold
|
||||
(/ (configuration-layer/configured-packages-count)
|
||||
(/ (length configuration-layer--packages)
|
||||
spacemacs-loading-dots-chunk-count))
|
||||
(spacemacs-buffer/message "+ Configuring bootstrap packages...")
|
||||
(configuration-layer//configure-packages-2
|
||||
|
@ -1677,6 +1692,20 @@ to select one."
|
|||
(configuration-layer//insert-lazy-install-form
|
||||
layer-name (car x) (cdr x))))))
|
||||
|
||||
(defun configuration-layer/display-summary (start-time)
|
||||
"Display a summary of loading time."
|
||||
(let ((elapsed (float-time (time-subtract (current-time) emacs-start-time)))
|
||||
(stats (configuration-layer/configured-packages-stats
|
||||
configuration-layer--packages)))
|
||||
(spacemacs-buffer/append
|
||||
(format "\n%s packages loaded in %.3fs (e:%s r:%s l:%s b:%s)\n"
|
||||
(cadr (assq 'total stats))
|
||||
elapsed
|
||||
(cadr (assq 'elpa stats))
|
||||
(cadr (assq 'recipe stats))
|
||||
(cadr (assq 'local stats))
|
||||
(cadr (assq 'built-in stats))))))
|
||||
|
||||
(defun configuration-layer/load-or-install-protected-package
|
||||
(pkg &optional log file-to-load)
|
||||
"Load PKG package, and protect it against being deleted as an orphan.
|
||||
|
|
|
@ -172,14 +172,7 @@ defer call using `spacemacs-post-user-config-hook'."
|
|||
(when (fboundp dotspacemacs-scratch-mode)
|
||||
(with-current-buffer "*scratch*"
|
||||
(funcall dotspacemacs-scratch-mode)))
|
||||
;; from jwiegley
|
||||
;; https://github.com/jwiegley/dot-emacs/blob/master/init.el
|
||||
(let ((elapsed (float-time
|
||||
(time-subtract (current-time) emacs-start-time))))
|
||||
(spacemacs-buffer/append
|
||||
(format "\n[%s packages loaded in %.3fs]\n"
|
||||
(configuration-layer/configured-packages-count)
|
||||
elapsed)))
|
||||
(configuration-layer/display-summary emacs-start-time)
|
||||
(spacemacs/check-for-new-version spacemacs-version-check-interval))))
|
||||
|
||||
(defun spacemacs//describe-system-info-string ()
|
||||
|
|
|
@ -1237,3 +1237,40 @@
|
|||
(concat "(configuration-layer/lazy-install 'layer "
|
||||
":extensions '(\"\\\\(\\\\.ext\\\\'\\\\)\" mode))\n")
|
||||
(configuration-layer//insert-lazy-install-form 'layer 'mode "\\(\\.ext\\'\\)")))))
|
||||
|
||||
;; ---------------------------------------------------------------------------
|
||||
;; configuration-layer/configured-packages-stats
|
||||
;; ---------------------------------------------------------------------------
|
||||
|
||||
(ert-deftest test-configured-packages-stats--correct-counts ()
|
||||
(let ((packages
|
||||
(list (cfgl-package "pkg1" :name 'pkg1 :location 'built-in)
|
||||
(cfgl-package "pkg2" :name 'pkg2 :location 'built-in)
|
||||
(cfgl-package "pkg3" :name 'pkg3 :location 'elpa)
|
||||
(cfgl-package "pkg4" :name 'pkg4 :location 'elpa)
|
||||
(cfgl-package "pkg5" :name 'pkg5 :location 'elpa)
|
||||
(cfgl-package "pkg6" :name 'pkg6 :location 'local)
|
||||
(cfgl-package "pkg7" :name 'pkg7 :location '(recipe :foo bar))
|
||||
(cfgl-package "pkg8" :name 'pkg8 :location '(recipe :foo bar)))))
|
||||
(should (equal '((total 8)
|
||||
(elpa 3)
|
||||
(recipe 2)
|
||||
(local 1)
|
||||
(built-in 2))
|
||||
(configuration-layer/configured-packages-stats packages)))))
|
||||
|
||||
(ert-deftest test-configured-packages-stats--sum-is-correct ()
|
||||
(let* ((packages
|
||||
(list (cfgl-package "pkg1" :name 'pkg1 :location 'built-in)
|
||||
(cfgl-package "pkg2" :name 'pkg2 :location 'built-in)
|
||||
(cfgl-package "pkg3" :name 'pkg3 :location 'elpa)
|
||||
(cfgl-package "pkg4" :name 'pkg4 :location 'elpa)
|
||||
(cfgl-package "pkg5" :name 'pkg5 :location 'elpa)
|
||||
(cfgl-package "pkg6" :name 'pkg6 :location 'local)
|
||||
(cfgl-package "pkg7" :name 'pkg7 :location '(recipe :foo bar))
|
||||
(cfgl-package "pkg8" :name 'pkg8 :location '(recipe :foo bar))))
|
||||
(stats (configuration-layer/configured-packages-stats packages)))
|
||||
(should (equal 8 (+ (cadr (assq 'elpa stats))
|
||||
(cadr (assq 'recipe stats))
|
||||
(cadr (assq 'local stats))
|
||||
(cadr (assq 'built-in stats)))))))
|
||||
|
|
Loading…
Reference in a new issue