24d9c3f7ee
`lsp-mode` supports two LSP server backend for Rust language, i.e. `rls` and `rust-analyzer`. `rust-analyzer` is experimental and lacks certain functionalities such as `DAP` support. `lsp-mode` provides a function `lsp-rust-switch-server` that changes the priority of LSP server backend for *new* LSP session. This commit adds a key binding `SPC m s s` to `lsp-rust-switch-server`. |
||
---|---|---|
.. | ||
img | ||
config.el | ||
funcs.el | ||
layers.el | ||
packages.el | ||
README.org |
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 select
another LSP server backend, and press SPC m b r
to restart the LSP server to finish the switching.
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
Rustfmt
Format Rust code according to style guidelines using rustfmt.
cargo install rustfmt
To enable automatic buffer formatting on save, set the variable rust-format-on-save
to t
.
Key bindings
Key binding | Description |
---|---|
SPC m = = |
reformat the buffer |
SPC m c . |
repeat the last Cargo command |
SPC m c C |
remove build artifacts with Cargo |
SPC m c X |
execute a project example with Cargo |
SPC m c c |
compile project with Cargo |
SPC m c d |
generate documentation with Cargo |
SPC m c e |
run benchmarks with Cargo |
SPC m c f |
format all project files with rustfmt |
SPC m c i |
create a new project with Cargo (init) |
SPC m c l |
run linter (cargo-clippy) with Cargo |
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 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 x |
execute a project with Cargo |
SPC m c v |
check (verify) a project with Cargo |
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.