core-packages: refactor + improve docstrings

This commit is contained in:
Henrik Lissner 2017-02-20 09:47:27 -05:00
parent 2581639307
commit acea60e554

View file

@ -43,17 +43,16 @@
;; See core/autoload/packages.el for more functions. ;; See core/autoload/packages.el for more functions.
(defvar doom-init-p nil (defvar doom-init-p nil
"Non-nil if doom's package system has been initialized or not. It may not be "Non-nil if doom's package system has been initialized (by `doom-initialize').
if you have byte-compiled your configuration (as intended). Running This will be nil if you have byte-compiled your configuration (as intended).")
`doom-initialize' sets this.")
(defvar doom-modules nil (defvar doom-modules nil
"A hash table of enabled modules.") "A hash table of enabled modules. Set by `doom-initialize-modules'.")
(defvar doom-packages nil (defvar doom-packages nil
"A list of enabled packages. Each element is a sublist, whose CAR is the "A list of enabled packages. Each element is a sublist, whose CAR is the
package's name as a symbol, and whose CDR is the plist supplied to its package's name as a symbol, and whose CDR is the plist supplied to its
`@package' declaration.") `@package' declaration. Set by `doom-initialize-packages'.")
(defvar doom-protected-packages (defvar doom-protected-packages
'(persistent-soft quelpa use-package) '(persistent-soft quelpa use-package)
@ -109,30 +108,30 @@ to speed up startup."
package-activated-list nil) package-activated-list nil)
;; Ensure cache folder exists ;; Ensure cache folder exists
(mapc (lambda (dir) (dolist (dir (list doom-cache-dir package-user-dir))
(unless (file-directory-p dir) (unless (file-directory-p dir)
(make-directory dir t))) (make-directory dir t)))
(list doom-cache-dir package-user-dir))
(package-initialize t) (package-initialize t)
;; Sure, `package-initialize' could fill `load-path', but package activation ;; Sure, we could let `package-initialize' fill `load-path', but package
;; costs precious milliseconds, and my premature optimization quota isn't ;; activation costs precious milliseconds and does other stuff I don't
;; filled yet. UNACCEPTAABBLLLE! ;; really care about (like load autoload files). My premature optimization
;; quota isn't filled yet.
;; ;;
;; Also, in some edge cases involving package initialization during a ;; Also, in some edge cases involving package initialization during a
;; non-interactive session, `package-initialize' fails to fill `load-path'. ;; non-interactive session, `package-initialize' fails to fill `load-path'.
(setq load-path (append load-path (directory-files package-user-dir t "^[a-zA-Z0-9]" t))) ;; If we want something done right, do it ourselves!
(nconc load-path (directory-files package-user-dir t "^[a-zA-Z0-9]" t))
;; Ensure core packages are installed ;; Ensure core packages are installed
(let ((core-packages (cl-remove-if 'package-installed-p doom-protected-packages))) (when-let (core-packages (cl-remove-if 'package-installed-p doom-protected-packages))
(when core-packages (package-refresh-contents)
(package-refresh-contents) (dolist (pkg core-packages)
(dolist (pkg core-packages) (let ((inhibit-message t))
(let ((inhibit-message t)) (package-install pkg))
(package-install pkg)) (if (package-installed-p pkg)
(if (package-installed-p pkg) (message "Installed %s" pkg)
(message "Installed %s" pkg) (error "Couldn't install %s" pkg))))
(error "Couldn't install %s" pkg)))))
(require 'quelpa) (require 'quelpa)
(require 'use-package) (require 'use-package)
@ -143,7 +142,7 @@ to speed up startup."
(setq doom-init-p t))) (setq doom-init-p t)))
(defun doom-initialize-autoloads (&optional force-p) (defun doom-initialize-autoloads (&optional force-p)
"Ensures that `doom-autoload-file' exists and is loaded. If it doesn't, run "Ensures that `doom-autoload-file' exists and is loaded. Otherwise run
`doom/reload-autoloads' to generate it." `doom/reload-autoloads' to generate it."
(unless (ignore-errors (require 'autoloads doom-autoload-file t)) (unless (ignore-errors (require 'autoloads doom-autoload-file t))
(unless noninteractive (unless noninteractive
@ -152,9 +151,10 @@ to speed up startup."
(error "Autoloads file couldn't be generated"))))) (error "Autoloads file couldn't be generated")))))
(defun doom-initialize-packages (&optional force-p load-p) (defun doom-initialize-packages (&optional force-p load-p)
"Loads the packages.el files across DOOM Emacs in order to fill `doom-modules' "Crawls across your emacs.d in order to fill `doom-modules' (from init.el) and
and `doom-packages', if they aren't set already. If FORCE-P is non-nil, do it `doom-packages' (from packages.el files), if they aren't set already. If FORCE-P
even if they are." is non-nil, do it even if they are. Also aggressively loads all core autoload
files."
(doom-initialize force-p) (doom-initialize force-p)
(let ((noninteractive t) (let ((noninteractive t)
(load-fn (load-fn
@ -222,11 +222,10 @@ even if they are."
(defun doom--module-pairs () (defun doom--module-pairs ()
"Returns `doom-modules' as a list of (MODULE . SUBMODULE) cons cells. The list "Returns `doom-modules' as a list of (MODULE . SUBMODULE) cons cells. The list
is sorted by order of insertion." is sorted by order of insertion."
(let (pairs) (let ((pairs '(nil)))
(maphash (lambda (key value) (maphash (lambda (key value) (nconc pairs (list (cons (car key) (cdr key)))))
(setq pairs (append pairs (list (cons (car key) (cdr key))))))
doom-modules) doom-modules)
pairs)) (cdr pairs)))
(defun doom--module-paths (&optional append-file) (defun doom--module-paths (&optional append-file)
"Returns a list of absolute file paths to modules, with APPEND-FILE added, if "Returns a list of absolute file paths to modules, with APPEND-FILE added, if