diff --git a/modules/lang/rust/config.el b/modules/lang/rust/config.el index 1d2b8bdfb..92fd8fc15 100644 --- a/modules/lang/rust/config.el +++ b/modules/lang/rust/config.el @@ -56,11 +56,18 @@ (defadvice! +rust--dont-install-packages-p (orig-fn &rest args) :around #'rustic-setup-rls - (cl-letf (;; `rustic-setup-rls' uses `package-installed-p' unnecessarily, to - ;; try to detect rls. This breaks because Doom lazy loads - ;; package.el, and doesn't use package.el to begin with. + (cl-letf (;; `rustic-setup-rls' uses `package-installed-p' to determine if + ;; lsp-mode/elgot are available. This breaks because Doom doesn't + ;; use package.el to begin with (and lazy loads it). ((symbol-function #'package-installed-p) - (symbol-function #'identity))) + (lambda (pkg) + (require pkg nil t))) + ;; If lsp/elgot isn't available, it attempts to install lsp-mode + ;; via package.el. Doom manages its own dependencies so we disable + ;; that behavior. + ((symbol-function #'rustic-install-rls-client-p) + (lambda (&rest _) + (message "No RLS server running.")))) (apply orig-fn args))))