1
0
Fork 0
mirror of https://gitlab.com/dwt1/dotfiles.git synced 2023-02-13 20:55:19 -05:00
dwt1--dotfiles/.emacs.d/modules/lang/rust
2020-06-19 22:43:40 -05:00
..
autoload.el Moving to Doom Emacs! 2019-12-16 20:21:19 -06:00
config.el Updating Doom Emacs. 2020-06-19 22:43:40 -05:00
doctor.el Updating Doom Emacs. 2020-06-19 22:43:40 -05:00
packages.el Updating Doom Emacs. 2020-06-19 22:43:40 -05:00
README.org Updating Doom Emacs. 2020-06-19 22:43:40 -05:00

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 rustic-lsp-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