lang/rust: restore advice redefs

Update package-installed-p redefinition to use a safe `require`, so that rustic-setup-rls will fail gracefully if lsp/eglot aren't available.

And restore rustic-install-rls-client-p redefinition to prevent rustic from trying to install packages.
This commit is contained in:
Henrik Lissner 2019-09-20 14:49:39 -04:00 committed by GitHub
parent 8e9d3fdc5d
commit f05512c2e5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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))))