Skip to content

Commit

Permalink
lang/rust: add eglot docs & inhibit package.el usage #2195
Browse files Browse the repository at this point in the history
  • Loading branch information
hlissner committed Dec 21, 2019
1 parent 969b047 commit a0425d0
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 3 deletions.
16 changes: 14 additions & 2 deletions modules/lang/rust/README.org
Expand Up @@ -13,6 +13,7 @@
- [[#keybinds][Keybinds]]
- [[#configuration][Configuration]]
- [[#enable-rust-analyzer][Enable rust-analyzer]]
- [[#enabling-elgot-support-for-rust][Enabling elgot support for Rust]]
- [[#troubleshooting][Troubleshooting]]

* Description
Expand Down Expand Up @@ -73,11 +74,22 @@ and the ~+lsp~ flag on this module.

* TODO Configuration
** Enable rust-analyzer
You'll need [[https://github.com/rust-analyzer/rust-analyzer][rust-analyzer]] installed on your system, then add the following to
=$DOOMDIR/config.el=:
You'll need [[https://github.com/rust-analyzer/rust-analyzer][rust-analyzer]] installed on your system, then use the following:

#+BEGIN_SRC elisp
;; in $DOOMDIR/config.el
(setq lsp-rust-server 'rust-analyzer)
#+END_SRC

** Enabling elgot support for Rust
Doom doesn't have eglot support (yet), but if you've installed it yourself and
want rust to use eglot instead of LSP, use the following:

#+BEGIN_SRC elisp
;; in $DOOMDIR/config.el
(after! rustic
(setq rustic-lsp-server 'rust-analyzer ; optional
rustic-lsp-client 'eglot))
#+END_SRC

* TODO Troubleshooting
18 changes: 17 additions & 1 deletion modules/lang/rust/config.el
Expand Up @@ -46,7 +46,23 @@
:desc "cargo run" "r" #'rustic-cargo-run)
(:prefix ("t" . "cargo test")
:desc "all" "a" #'rustic-cargo-test
:desc "current test" "t" #'rustic-cargo-current-test)))
:desc "current test" "t" #'rustic-cargo-current-test))

(defadvice! +rust--dont-install-packages-p (orig-fn &rest args)
:around #'rustic-setup-lsp
(cl-letf (;; `rustic-setup-lsp' 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)
(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-lsp-client-p)
(lambda (&rest _)
(message "No RLS server running"))))
(apply orig-fn args))))


(use-package! racer
Expand Down

0 comments on commit a0425d0

Please sign in to comment.