spacemacs/layers/+lang/rust/README.org
Justin f8bb6997a9 Remove lsp-javascript-typescript package for lsp built in.
Remove lsp-go package for lsp built in.
Changed go/react/typescript lsp-*-enable hooks to lsp
Update go/typescript/rust layer docs for lsp-mode installation command.
Remove unused rust layer variable
2019-01-15 00:41:30 +02:00

85 lines
3.6 KiB
Org Mode

#+TITLE: Rust layer
[[file:img/rust.png]]
* Table of Contents :TOC_4_gh:noexport:
- [[#description][Description]]
- [[#features][Features:]]
- [[#install][Install]]
- [[#layer][Layer]]
- [[#backends][Backends]]
- [[#racer][Racer]]
- [[#lsp][LSP]]
- [[#cargo][Cargo]]
- [[#rustfmt][Rustfmt]]
- [[#key-bindings][Key bindings]]
* Description
This layer supports [[https://www.rust-lang.org][Rust]] development in Spacemacs.
** Features:
- Auto-completion and navigation support through [[https://github.com/emacs-lsp/lsp-rust][lsp]] or [[https://github.com/phildawes/racer][Racer]]
- support for the Rust package manager [[http://doc.crates.io/index.html][Cargo]]
* 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.
** Backends
The backend is dependent upon the =rust-backend= layer configuration variable.
The possible vaules for =rust-backend= are =lsp= or =racer= with =racer= being the default.
*** Racer
You must install [[https://github.com/phildawes/racer][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 [[https://github.com/phildawes/racer#installation][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 [[https://github.com/emacs-lsp/lsp-mode][lsp-mode]] for instructions.
To enable auto-completion, ensure that the =auto-completion= layer is enabled.
** Cargo
[[http://doc.crates.io/index.html][Cargo]] is a project management command line tool for Rust. Installation
instructions can be found on the main page of [[http://doc.crates.io/index.html][Cargo]].
** Rustfmt
Format Rust code according to style guidelines using [[https://github.com/rust-lang-nursery/rustfmt][rustfmt]].
#+BEGIN_SRC sh
cargo install rustfmt
#+END_SRC
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 ([[https://github.com/arcnmx/cargo-clippy][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 |