Detach doom-modules-dirs from doom! macro

Formerly, you were required to have a doom! call (even a blank one) in
~/.doom.d/init.el if you wanted to have private sub-modules in
~/.doom.d/modules/.

No more. It is no longer doom!'s responsibility to affect
`doom-modules-dirs`. This is now done by :config private, while the
Doom modules directory is now the initial entry in doom-modules-dirs.
This commit is contained in:
Henrik Lissner 2018-03-12 13:07:17 -04:00
parent c6931db3f8
commit 23fda88b2f
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
3 changed files with 21 additions and 23 deletions

View file

@ -364,27 +364,23 @@ added, if the file exists."
MODULES is an malformed plist of modules to load." MODULES is an malformed plist of modules to load."
(let (load-forms module file-name-handler-alist) (let (load-forms module file-name-handler-alist)
(let ((modules-dir (dolist (m modules)
(expand-file-name "modules/" (file-name-directory (or load-file-name byte-compile-current-file))))) (cond ((keywordp m) (setq module m))
(cl-pushnew modules-dir doom-modules-dirs :test #'string=) ((not module) (error "No namespace specified in `doom!' for %s" m))
(dolist (m modules) ((let ((submodule (if (listp m) (car m) m))
(cond ((keywordp m) (setq module m)) (flags (if (listp m) (cdr m))))
((not module) (error "No namespace specified in `doom!' for %s" m)) (let ((path (doom-module-find-path module submodule)))
((let ((submodule (if (listp m) (car m) m)) (doom-module-set module submodule :flags flags :path path)
(flags (if (listp m) (cdr m)))) (push `(let ((doom--current-module ',(cons module submodule)))
(let ((path (doom-module-find-path module submodule))) (load! init ,path t))
(doom-module-set module submodule :flags flags :path path) load-forms))))))
(push `(let ((doom--current-module ',(cons module submodule))) `(let (file-name-handler-alist)
(load! init ,path t)) (setq doom-modules ',doom-modules)
load-forms)))))) (let ((doom--initializing t))
`(let (file-name-handler-alist) ,@(nreverse load-forms))
(setq doom-modules ',doom-modules ,(unless doom--initializing
doom-modules-dirs ',doom-modules-dirs) '(unless noninteractive
(let ((doom--initializing t)) (doom-initialize-modules))))))
,@(nreverse load-forms))
,(unless doom--initializing
'(unless noninteractive
(doom-initialize-modules)))))))
(defmacro def-package! (name &rest plist) (defmacro def-package! (name &rest plist)
"A thin wrapper around `use-package'." "A thin wrapper around `use-package'."

View file

@ -34,7 +34,7 @@ line or use --debug-init to enable this.")
(defvar doom-modules-dir (concat doom-emacs-dir "modules/") (defvar doom-modules-dir (concat doom-emacs-dir "modules/")
"The main directory where Doom modules are stored.") "The main directory where Doom modules are stored.")
(defvar doom-modules-dirs nil (defvar doom-modules-dirs (list doom-modules-dir)
"A list of module root directories. Order determines priority.") "A list of module root directories. Order determines priority.")
(defvar doom-local-dir (concat doom-emacs-dir ".local/") (defvar doom-local-dir (concat doom-emacs-dir ".local/")

View file

@ -10,7 +10,9 @@ Doom Emacs.")
;; Ensure `doom//reload-autoloads', `doom//byte-compile' and ;; Ensure `doom//reload-autoloads', `doom//byte-compile' and
;; `doom-initialize-packages' will treat `+private-config-path' as the root of ;; `doom-initialize-packages' will treat `+private-config-path' as the root of
;; this module. ;; this module.
(add-to-list 'doom-psuedo-module-dirs +private-config-path) (cl-pushnew +private-config-path doom-psuedo-module-dirs)
(cl-pushnew (expand-file-name "modules/" +private-config-path)
doom-modules-dirs :test #'string=)
;; ;;
(load (expand-file-name "init.el" +private-config-path) (load (expand-file-name "init.el" +private-config-path)