spacemacs/layers/+lang/rust
Eivind Fonn 928983da47 Refactor jump to definition
This commit defines:

- spacemacs-default-jump-handlers: a list of functions that can jump to
  definition in ALL modes.

- spacemacs-jump-handlers-MODE: a list of functions that can jump to
  definition in MODE.

- spacemacs-jump-handlers: a buffer-local list of functions that can
  jump to definition. This is made up of the values of the two previous
  variables whenever a given major mode is activated.

- spacemacs/jump-to-definition: a function that tries each function in
  spacemacs-jump-handlers in order, and stops when one of them takes us
  somewhere new.

- spacemacs|define-jump-handlers: a macro that
  * defines spacemacs-jump-handlers-MODE, possibly filled with initial
    functions
  * defines a function that is added to the hook of the given MODE
  * binds “SPC m g g” of that MODE to spacemacs/jump-to-definition

This is an attempt to harmonize all the different approaches to jumping.
Specifically,

- Existing intelligent jump packages that work for only a single mode
  should go to the beginning of spacemacs-jump-handlers-MODE. E.g.
  anaconda for python, ensime for scala, etc.

- Packages like gtags that work for several modes (but potentially not
  all) and which is dumber than the intelligent jumpers should go the
  the END of spacemacs-jump-handlers-MODE.

- Packages like dumb-jump that work for all modes should go to
  spacemacs-default-jump-handlers.

In all cases the order of the jump handlers in each list should be from
most to least intelligent.

Fixes #6619
2016-08-22 15:08:25 +02:00
..
img
config.el
packages.el Refactor jump to definition 2016-08-22 15:08:25 +02:00
README.org

Rust contribution layer for Spacemacs

/TakeV/spacemacs/media/commit/928983da4774032bf25d5acded44cdc298034372/layers/+lang/rust/img/rust.png

Description

This layer supports Rust development in Spacemacs.

It has auto-completion and navigation support through Racer and supports 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.

Racer

You must install Racer to use this. 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.

Cargo

Cargo is a project management command line tool for Rust. Installation instructions can be found on the main page of 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 run the current test with Cargo
SPC m c i create a new project with Cargo (init)
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 u update dependencies with Cargo
SPC m c x execute a project with Cargo
SPC m g g jump to definition
SPC m t run tests with Cargo