Allows you to pick up new Cargo dependencies without a (slooow) full server restart. See https://github.com/emacs-lsp/lsp-mode/pull/2728 Add diagnostic messages when trying to reload RA workspace No point restarting when trying to reload RLS
7.4 KiB
Rust layer
Description
Install
Layer
To use this configuration layer, add it to your ~/.spacemacs
. You will need to
add rust
to the existing dotspacemacs-configuration-layers
list in this
file.
Choosing a backend
To choose a default backend set the layer variable rust-backend
:
(rust :variables rust-backend 'racer)
Alternatively the lsp
backend will be automatically chosen if the layer lsp
is used and you did not specify any value for rust-backend
.
Backend can be chosen on a per project basis using directory local variables
(files named .dir-locals.el
at the root of a project), an example to use the
lsp
backend:
;;; Directory Local Variables
;;; For more information see (info "(emacs) Directory Variables")
((rust-mode (rust-backend . lsp)))
Note: you can easily add a directory local variable with SPC f v d
.
Racer
You must install Racer to use this backend. Make sure the racer
binary is available in
your PATH
and to set the environment variable RUST_SRC_PATH
, as described in
the installation instructions.
To enable auto-completion, ensure that the auto-completion
layer is enabled.
LSP
You must add lsp
to the existing dotspacemacs-configuration-layers
in your ~/.spacemacs
.
Consult the installation command for the desired language server found at lsp-mode for instructions.
The default LSP server for Rust is rls, i.e. rust language server.
To choose the experimental rust-analyzer, you need to set the layer variable lsp-rust-server
of lsp
layer:
(lsp :variables lsp-rust-server 'rust-analyzer)
Switch to another LSP server
If both rls
and rust-analyzer
server are installed, you can press SPC m s s
to switch to another LSP server backend.
Autocompletion
Debugger (dap integration)
To install the debug adapter you may run M-x dap-gdb-lldb-setup
when you are on Linux or download it manually from Native Debug and adjust dap-gdb-lldb-path
.
Cargo
Cargo is a project management command line tool for Rust. Installation instructions can be found on the main page of Cargo.
cargo-edit
cargo-edit allows you to add, remove, and upgrade dependencies by modifying your Cargo.toml
file.
cargo install cargo-edit
cargo-audit
cargo-audit audits Cargo.lock
files for crates with security vulnerabilities.
cargo install cargo-audit
Rustfmt
Format Rust code according to style guidelines using rustfmt.
rustup component add rustfmt
To enable automatic buffer formatting on save, set the variable rust-format-on-save
to t
.
Clippy
Clippy provides a collection of lints to to catch common mistakes and improve your code.
rustup component add clippy
Key bindings
Key binding | Description |
---|---|
SPC m = = |
reformat the buffer |
SPC m b R |
reload Rust-Analyzer workspace |
SPC m c . |
repeat the last Cargo command |
SPC m c a |
add a new dependency with cargo-edit |
SPC m c A |
audit dependencies for known vulnerability with cargo-audit |
SPC m c C |
remove build artifacts |
SPC m c c |
compile project |
SPC m c D |
generate documentation and open it in default browser |
SPC m c d |
generate documentation |
SPC m c E |
run a project example |
SPC m c e |
run benchmarks |
SPC m c f |
format all project files with rustfmt |
SPC m c i |
initialise a new project with Cargo (init) |
SPC m c l |
run linter (cargo-clippy) |
SPC m c n |
create a new project with Cargo (new) |
SPC m c o |
run all tests in current file with Cargo |
SPC m c r |
remove a dependency with cargo-edit |
SPC m c s |
search for packages on crates.io with Cargo |
SPC m c t |
run the current test with Cargo |
SPC m c u |
update dependencies with Cargo |
SPC m c U |
upgrade dependencies to LATEST version with cargo-edit |
SPC m c v |
check (verify) a project with Cargo |
SPC m c X |
execute a specific binary |
SPC m c x |
execute the default binary |
SPC m g g |
jump to definition |
SPC m h h |
describe symbol at point |
SPC m s s |
switch to other LSP server backend |
SPC m t |
run tests with Cargo |
debugger
Using the dap
layer you'll get access to all the DAP key bindings, see the
complete list of key bindings on the dap layer description.