doomemacs/modules/lang/rust
2020-01-14 22:32:11 -05:00
..
autoload.el
config.el fix message 2020-01-04 12:49:43 +01:00
doctor.el
packages.el PIN ALL THE PACKAGES 2020-01-14 22:32:11 -05:00
README.org

lang/rust

Description

This module adds support for the Rust language and integration for its tools, e.g. cargo.

  • Code completion (racer)
  • Syntax checking (flycheck)
  • LSP support (for rls and rust-analyzer) (rustic)
  • Snippets

Module Flags

  • +lsp to add support Language server protocol.

Plugins

Hacks

  • rustic has been modified not to automatically install lsp-mode or elgot if they're missing. Doom expects you to enable the :tools lsp module yourself.
  • rustic's LSP integration has been disabled in favor of the rls/rust-analyzer support provider by the lsp-mode package.

Prerequisites

This module only requires rust, which can be acquired through rustup:

curl https://sh.rustup.rs -sSf | sh

Optionally, this module also uses the following programs:

  • racer (if not using LSP): cargo +nightly install racer (requires rust nightly)
  • RLS or rust-analyzer (for LSP users)
  • rustfmt for :editor format: rustup component add rustfmt-preview
  • The following commands require:

    • cargo-process-check: cargo install cargo-check
    • cargo-process-clippy: rustup component add clippy-preview

Features

This module also supports LSP, if you have the Rust Language Server or rust-analyzer installed. To enable it, you must enable the :tools lsp module and the +lsp flag on this module.

Keybinds

Binding Description
<localleader> b a cargo audit
<localleader> b b cargo build
<localleader> b B cargo bench
<localleader> b c cargo check
<localleader> b C cargo clippy
<localleader> b d cargo doc
<localleader> b n cargo update
<localleader> b o cargo outdated
<localleader> b r cargo run
<localleader> t a cargo test
<localleader> t t run current test

TODO Configuration

Enable rust-analyzer

You'll need rust-analyzer installed on your system, then use the following:

;; in $DOOMDIR/config.el
(setq lsp-rust-server 'rust-analyzer)

Enabling elgot support for Rust

Doom doesn't have eglot support (yet), but if you've installed it yourself and want rust to use eglot instead of LSP, use the following:

;; in $DOOMDIR/config.el
(after! rustic
  (setq rustic-lsp-server 'rust-analyzer ; optional
        rustic-lsp-client 'eglot))

TODO Troubleshooting