- Update README - Add eglot-specifics to cc, rs, py, hs removing unused lsp-mode packages when eglot is active - Add eglot-specific bindings - Add doctor warnings for debugger +lsp and +peek - Add eglot-backed lookup-handlers - Add flycheck checker using eglot for :checkers syntax users (using flycheck/flycheck#1676 and flycheck/flycheck#1592 discussion). This implementation is based on @marsam code, and uses recent Flycheck development in order to make the code smaller and easier to maintain. |
||
---|---|---|
.. | ||
autoload.el | ||
config.el | ||
doctor.el | ||
packages.el | ||
README.org |
lang/rust
Description
This module adds support for the Rust language and integration for its tools,
e.g. cargo
.
- Code completion (
racer
) - Syntax checking (
flycheck
) - LSP support (for rls and rust-analyzer) (
rustic
) - Snippets
Module Flags
+lsp
to add support Language server protocol.
Hacks
- rustic has been modified not to automatically install lsp-mode or elgot if
they're missing. Doom expects you to enable the
:tools lsp
module yourself. - rustic's LSP integration has been disabled in favor of the rls/rust-analyzer support provider by the lsp-mode package.
Prerequisites
This module only requires rust
, which can be acquired through rustup
:
curl https://sh.rustup.rs -sSf | sh
Optionally, this module also uses the following programs:
racer
(if not using LSP):cargo +nightly install racer
(requires rust nightly)RLS
orrust-analyzer
(for LSP users)rustfmt
for:editor format
:rustup component add rustfmt-preview
-
The following commands require:
cargo-process-check
:cargo install cargo-check
cargo-process-clippy
:rustup component add clippy-preview
Features
This module also supports LSP, if you have the Rust Language Server or
rust-analyzer installed. To enable it, you must enable the :tools lsp
module
and the +lsp
flag on this module.
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
Enable rust-analyzer
You'll need rust-analyzer installed on your system, then use the following:
;; in $DOOMDIR/config.el
(setq rustic-lsp-server 'rust-analyzer)
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:
;; in $DOOMDIR/config.el
(after! rustic
(setq rustic-lsp-server 'rust-analyzer ; optional
rustic-lsp-client 'eglot))