584392bd92
There was a edge case with the declaration of the `lsp` layer in `layers.el` files. The `hy` layer depends on the `python` layer which in turn depends on the `lsp` layer if and only if the `python-backend` layer variable is set to `lsp`. When the `hy` layer was declared first then it declares the `python` layer without its layer variables, thus the `lsp` layer was not declared because the `python-backend` variable was not set. The fix is to gather all the layer dependencies and resolve them only after all the used layers have been declared. * new function `configuration-layer/declare-layer-dependencies` * replace all calls to `configuration-layer/declare-layer` by the new function except for distribution layers (we declare layer dependencies right away in distribution layers) |
||
---|---|---|
.. | ||
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.
To enable auto-completion, ensure that the auto-completion
layer is enabled.
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 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.