       (setq doom-init-p t))))
 
 (defun doom-initialize-load-path (&optional force-p)
+  "Populates `load-path', if it hasn't already been. If FORCE-P is non-nil, do
+it anyway."
   (when (or force-p (not doom--package-load-path))
     ;; We could let `package-initialize' fill `load-path', but it does more than
     ;; that alone (like load autoload files). If you want something prematurely

                   (error-message-string ex))))))))

(defmacro featurep! (module &optional submodule flag)
  "A convenience macro wrapper for `doom-module-enabled-p'. It is evaluated at
compile-time/macro-expansion time."
  (unless submodule
    (let* ((path (or load-file-name byte-compile-current-file))
           (module-pair (doom-module-from-path path)))

           if (file-exists-p path)
           collect path))

(defun doom-module-flags (module submodule)
  "Returns a list of flags provided for MODULE SUBMODULE."
  (gethash (cons module submodule) doom-modules))

(defun doom-module-enabled-p (module submodule)
  "Returns t if MODULE SUBMODULE is enabled (ie. present in `doom-modules')."
  (and (hash-table-p doom-modules)
       (doom-module-flags module submodule)
       t))

(defun doom-module-enable (module submodule &optional flags)
  "Adds MODULE and SUBMODULE to `doom-modules', overwriting it if it exists.

MODULE is a keyword, SUBMODULE is a symbol, FLAGS is a list of arbitrary
symbols:

  (doom-module-enable :lang 'haskell '(+intero))

Used by `require!' and `depends-on!'."
  (let ((key (cons module submodule)))
