 current file is in, or d) the module associated with the current major mode (see
 `doom--help-major-mode-module-alist')."
   (interactive
-   (let* ((module-string
-           (completing-read "Describe module: "
-                            (doom--help-modules-list)
-                            nil t nil nil
-                            (doom--help-current-module-str)))
-          (key (doom-module-from-path
-                (or (car (get-text-property 0 'location module-string))
-                    (user-error "Did not select a valid module")))))
-     (list (car key)
-           (cdr key))))
+   (mapcar #'intern
+           (split-string
+            (completing-read "Describe module: "
+                             (doom--help-modules-list) nil t nil nil
+                             (doom--help-current-module-str))
+            " " t)))
   (cl-check-type category symbol)
   (cl-check-type module symbol)
-  (let ((path (doom-module-locate-path category module)))
+  (cl-destructuring-bind (module-string path)
+      (or (assoc (format "%s %s" category module) (doom--help-modules-list))
+          (user-error "'%s %s' is not a valid module" category module))
     (unless (file-readable-p path)
-      (error "'%s %s' isn't a valid module; it doesn't exist" category module))
-    (if-let (readme-path (doom-module-locate-path category module "README.org"))
-        (find-file readme-path)
-      (if (y-or-n-p (format "The '%s %s' module has no README file. Explore its directory?"
-                            category module))
+      (error "Can't find or read %S module at %S" module-string path))
+    (if (not (file-directory-p path))
+        (find-file path)
+      (if (y-or-n-p (format "The %S module has no README file. Explore its directory?"
+                            module-string))
           (doom-project-browse path)
         (user-error "Aborted module lookup")))))
 

             (let ((sexp (sexp-at-point)))
               (when (memq (car-safe sexp) '(featurep! require!))
                 (format "%s %s" (nth 1 sexp) (nth 2 sexp)))))))
        ((and buffer-file-name
              (when-let (mod (doom-module-from-path buffer-file-name))
                (unless (memq (car mod) '(:core :private))
                  (format "%s %s" (car mod) (cdr mod))))))
        ((when-let (mod (cdr (assq major-mode doom--help-major-mode-module-alist)))
           (format "%s %s"
                   (symbol-name (car mod))

(defun doom--help-modules-list ()
  (cl-loop for path in (cdr (doom-module-load-path 'all))
           for (cat . mod) = (doom-module-from-path path)
           for path = (or (doom-module-locate-path cat mod "README.org")
                          (doom-module-locate-path cat mod))
           for format = (format "%s %s" cat mod)
           if (doom-module-p cat mod)
           collect (list format path)
           else if (and cat mod)
           collect (list (propertize format 'face 'font-lock-comment-face)
                         path)))

(defun doom--help-current-module-str ()
  (cond ((and buffer-file-name
