From 23fda88b2fe1b3b181a1922ec208a8df5a43cc50 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 12 Mar 2018 13:07:17 -0400 Subject: [PATCH] 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. --- core/core-packages.el | 38 +++++++++++++++------------------- core/core.el | 2 +- modules/config/private/init.el | 4 +++- 3 files changed, 21 insertions(+), 23 deletions(-) diff --git a/core/core-packages.el b/core/core-packages.el index 7670544ec..4a5b9f7a8 100644 --- a/core/core-packages.el +++ b/core/core-packages.el @@ -364,27 +364,23 @@ added, if the file exists." MODULES is an malformed plist of modules to load." (let (load-forms module file-name-handler-alist) - (let ((modules-dir - (expand-file-name "modules/" (file-name-directory (or load-file-name byte-compile-current-file))))) - (cl-pushnew modules-dir doom-modules-dirs :test #'string=) - (dolist (m modules) - (cond ((keywordp m) (setq module m)) - ((not module) (error "No namespace specified in `doom!' for %s" m)) - ((let ((submodule (if (listp m) (car m) m)) - (flags (if (listp m) (cdr m)))) - (let ((path (doom-module-find-path module submodule))) - (doom-module-set module submodule :flags flags :path path) - (push `(let ((doom--current-module ',(cons module submodule))) - (load! init ,path t)) - load-forms)))))) - `(let (file-name-handler-alist) - (setq doom-modules ',doom-modules - doom-modules-dirs ',doom-modules-dirs) - (let ((doom--initializing t)) - ,@(nreverse load-forms)) - ,(unless doom--initializing - '(unless noninteractive - (doom-initialize-modules))))))) + (dolist (m modules) + (cond ((keywordp m) (setq module m)) + ((not module) (error "No namespace specified in `doom!' for %s" m)) + ((let ((submodule (if (listp m) (car m) m)) + (flags (if (listp m) (cdr m)))) + (let ((path (doom-module-find-path module submodule))) + (doom-module-set module submodule :flags flags :path path) + (push `(let ((doom--current-module ',(cons module submodule))) + (load! init ,path t)) + load-forms)))))) + `(let (file-name-handler-alist) + (setq doom-modules ',doom-modules) + (let ((doom--initializing t)) + ,@(nreverse load-forms)) + ,(unless doom--initializing + '(unless noninteractive + (doom-initialize-modules)))))) (defmacro def-package! (name &rest plist) "A thin wrapper around `use-package'." diff --git a/core/core.el b/core/core.el index b60dd0a09..7a6e0acb8 100644 --- a/core/core.el +++ b/core/core.el @@ -34,7 +34,7 @@ line or use --debug-init to enable this.") (defvar doom-modules-dir (concat doom-emacs-dir "modules/") "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.") (defvar doom-local-dir (concat doom-emacs-dir ".local/") diff --git a/modules/config/private/init.el b/modules/config/private/init.el index b983f2df6..d6f40753d 100644 --- a/modules/config/private/init.el +++ b/modules/config/private/init.el @@ -10,7 +10,9 @@ Doom Emacs.") ;; Ensure `doom//reload-autoloads', `doom//byte-compile' and ;; `doom-initialize-packages' will treat `+private-config-path' as the root of ;; 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)