BREAKING CHANGE: Racer is no longer developed and its project page recommends using rust-analyzer instead. Moreover, users have reported issues trying to build/install it on recent versions of rust, so I've removed support for Racer from Doom, and now default solely to LSP for IDE features. Users that want these features will need to activate the module's +lsp flag (along with the :tools lsp module) and install rust-analyzer. See the module's README for instructions. Close: #6705 Co-authored-by: c1ttim <c1ttim@users.noreply.github.com> |
||
---|---|---|
.. | ||
autoload.el | ||
config.el | ||
doctor.el | ||
packages.el | ||
README.org |
:lang rust
Description unfold
This module adds support for the Rust language and integration for its tools,
e.g. cargo
.
- Code completion (racer or an LSP server)
- Syntax checking (flycheck)
- LSP support (for rust-analyzer and rls) (rustic)
- Snippets
Maintainers
- @hlissner
Module flags
- +lsp
-
Enable LSP support for
rustic-mode
. Requires :tools lsp and a langserver (supports rust-analyzer and rls).
Packages
Hacks
- rustic has been modified not to automatically install lsp-mode or eglot if they're missing. Doom expects you to have enabled the :tools lsp module yourself.
TODO Changelog
This module does not have a changelog yet.
Installation
Enable this module in your doom!
block.
This module requires rust
, which can be acquired through rustup
:
curl https://sh.rustup.rs -sSf | sh
Note that when the Rust language has updates, you are to run rustup
such
that it doesn't upgrade itself:
rustup update --no-self-update
Other Requirements
- If :editor format is enabled, you'll need
rustfmt
:$ rustup component add rustfmt-preview
. - Users with +lsp enabled will need rust-analyzer (rls is supported, but deprecated).
-
Using the following commands requires:
cargo-process-check
:$ cargo install cargo-check
cargo-process-clippy
:$ rustup component add clippy-preview
TODO Usage
🔨 This module's usage documentation is incomplete. Complete it?
LSP support (rls or rust-analyzer)
This module supports LSP integration. For it to work you'll need:
- Either rust-analyzer or the Rust Language Server installed (e.g. through your OS package manager).
- The :tools lsp module enabled.
- The +lsp flag on this module enabled.
Format on save
Enable :editor format +onsave to get formatting on save with rustfmt
. No
additional configuration is necessary.
Keybinds
Binding | Description |
---|---|
<localleader> b a |
cargo audit |
<localleader> b b |
cargo build |
<localleader> b B |
cargo bench |
<localleader> b c |
cargo check |
<localleader> b C |
cargo clippy |
<localleader> b d |
cargo doc |
<localleader> b n |
cargo update |
<localleader> b o |
cargo outdated |
<localleader> b r |
cargo run |
<localleader> t a |
cargo test |
<localleader> t t |
run current test |
TODO Configuration
🔨 This module's configuration documentation is incomplete. Complete it?
Enable RLS by default
If both rls
and rust-analyzer
are present on your system, rust-analyzer
is
used by default. Modify rustic-lsp-server
to change the default:
;; in $DOOMDIR/config.el
(after! rustic
(setq rustic-lsp-server 'rls))
Enabling eglot support for Rust
Doom's :tools lsp module has an +eglot flag. Enable it and this module will use eglot instead.
Troubleshooting
error[E0670]: `async fn` is not permitted in the 2015 edition
You may be seeing this error, despite having edition = "2018"
in your
Cargo.toml
. This error actually originates from rustfmt
, which the LSP
server tries to invoke on save (if you have rustic-format-trigger
or :editor
format enabled).
To fix this your project needs a rustfmt.toml
with edition = "2018"
in it.
Frequently asked questions
This module has no FAQs yet. Ask one?
TODO Appendix
🔨 This module has no appendix yet. Write one?