From 45a66cda606085f67db977034d9f3d666bdd1934 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 10 Sep 2022 18:59:02 +0200 Subject: [PATCH] fix: ensure module state is in scope for modulep! Otherwise, doom-module-from-path (and modulep!) would fail to detect the module they're in, or at least, modulep! would incorrectly return nil, even for enabled modules. This issue is what would've caused the package list or the doctor to include/consider packages in disabled modules or behind disabled flags. --- lisp/cli/doctor.el | 4 +++- lisp/doom-packages.el | 13 ++++++++----- lisp/lib/files.el | 4 +++- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/lisp/cli/doctor.el b/lisp/cli/doctor.el index 9c5a99c12..79a7d178c 100644 --- a/lisp/cli/doctor.el +++ b/lisp/cli/doctor.el @@ -247,7 +247,9 @@ in." (let (doom-doctor--errors doom-doctor--warnings) (condition-case-unless-debug ex - (let ((doctor-file (doom-module-path (car key) (cdr key) "doctor.el")) + (let ((doom--current-module key) + (doom--current-flags (plist-get plist :flags)) + (doctor-file (doom-module-path (car key) (cdr key) "doctor.el")) (packages-file (doom-module-path (car key) (cdr key) "packages.el"))) (cl-loop with doom-output-indent = 6 for name in (let (doom-packages diff --git a/lisp/doom-packages.el b/lisp/doom-packages.el index f55e2c50a..a030b5629 100644 --- a/lisp/doom-packages.el +++ b/lisp/doom-packages.el @@ -463,9 +463,11 @@ ones." (let (doom-packages) (doom--read-packages private-packages nil 'noerror)) (cl-loop for key being the hash-keys of doom-modules - for path = (doom-module-path (car key) (cdr key) packages-file) + for plist = (get (car key) (cdr key)) + for doom--current-flags = (plist-get plist :flags) for doom--current-module = key - do (doom--read-packages path nil 'noerror))) + for file = (doom-path (plist-get plist :path) packages-file) + do (doom--read-packages file nil 'noerror))) (doom--read-packages private-packages all-p 'noerror))) (cl-remove-if-not (if core-only-p @@ -555,13 +557,14 @@ elsewhere." `(let* ((name ',name) (plist (cdr (assq name doom-packages)))) ;; Record what module this declaration was found in - (let ((module-list (plist-get plist :modules)) - (module ',(doom-module-from-path))) + (let* ((dir (dir!)) + (module-list (plist-get plist :modules)) + (module (doom-module-from-path dir))) (unless (member module module-list) (cl-callf plist-put plist :modules (append module-list (list module) - (when (file-in-directory-p ,(dir!) doom-user-dir) + (when (file-in-directory-p dir doom-user-dir) '((:user . modules))) nil)))) ;; Merge given plist with pre-existing one diff --git a/lisp/lib/files.el b/lisp/lib/files.el index 770d555e8..c77689f87 100644 --- a/lisp/lib/files.el +++ b/lisp/lib/files.el @@ -156,7 +156,9 @@ return NULL-VALUE." (insert-file-contents file nil 0 256) (if (re-search-forward (format "^;;;###%s " (regexp-quote (or cookie "if"))) nil t) - (let ((load-file-name file)) + (let* ((load-file-name file) + (doom--current-module (doom-module-from-path file)) + (doom--current-flags (doom-module-get (car doom--current-module) (cdr doom--current-module) :flags))) (eval (sexp-at-point) t)) null-value)))