diff --git a/core/core-modules.el b/core/core-modules.el index 7546f2b2e..1ca47f678 100644 --- a/core/core-modules.el +++ b/core/core-modules.el @@ -298,7 +298,12 @@ This value is cached. If REFRESH-P, then don't use the cached value." (lambda (&rest _) (doom-log "Loading deferred package %s from %s" ',name ',fn) (condition-case e - (require ',name) + ;; If `default-directory' is a directory that doesn't + ;; exist or is unreadable, Emacs throws up file-missing + ;; errors, so we set it to a directory we know exists and + ;; is readable. + (let ((default-directory doom-emacs-dir)) + (require ',name)) ((debug error) (message "Failed to load deferred package %s: %s" ',name e))) (when-let (deferral-list (assq ',name doom--deferred-packages-alist)) diff --git a/core/core.el b/core/core.el index 710df7a87..5f57fb1dd 100644 --- a/core/core.el +++ b/core/core.el @@ -344,7 +344,13 @@ intervals." (when-let (req (if reqs (pop reqs))) (doom-log "Incrementally loading %s" req) (condition-case e - (or (while-no-input (require req nil t) t) + (or (while-no-input + ;; If `default-directory' is a directory that doesn't exist + ;; or is unreadable, Emacs throws up file-missing errors, so + ;; we set it to a directory we know exists and is readable. + (let ((default-directory doom-emacs-dir)) + (require req nil t)) + t) (push req reqs)) ((error debug) (message "Failed to load '%s' package incrementally, because: %s" diff --git a/modules/tools/direnv/config.el b/modules/tools/direnv/config.el index 1534d1698..6f06aa210 100644 --- a/modules/tools/direnv/config.el +++ b/modules/tools/direnv/config.el @@ -40,7 +40,8 @@ flycheck issues with direnv and on nix." "Don't try to update direnv if the executable isn't present." :around #'direnv--maybe-update-environment (if (executable-find "direnv") - (funcall orig-fn) + (when (file-readable-p (or buffer-file-name default-directory)) + (funcall orig-fn)) (doom-log "Couldn't find direnv executable"))) (direnv-mode +1)) diff --git a/modules/ui/doom-dashboard/config.el b/modules/ui/doom-dashboard/config.el index a65880444..1912b18b9 100644 --- a/modules/ui/doom-dashboard/config.el +++ b/modules/ui/doom-dashboard/config.el @@ -288,10 +288,10 @@ controlled by `+doom-dashboard-pwd-policy'." (doom-log "Changed dashboard's PWD to %s" pwd) (setq-local default-directory pwd)) (let ((new-pwd (+doom-dashboard--get-pwd))) - (when (and new-pwd (file-directory-p new-pwd)) - (unless (string-suffix-p "/" new-pwd) - (setq new-pwd (concat new-pwd "/"))) - (+doom-dashboard-update-pwd new-pwd))))) + (when (and new-pwd (file-accessible-directory-p new-pwd)) + (+doom-dashboard-update-pwd + (concat (directory-file-name new-pwd) + "/")))))) (defun +doom-dashboard-reload (&optional force) "Update the DOOM scratch buffer (or create it, if it doesn't exist)."