ProofGeneral/PG@99f91e873e -> ProofGeneral/PG@3a99da2755 agda/agda@fbf9d159c3 -> agda/agda@4f82f9b90a amake/flutter.el@004c91e070 -> amake/flutter.el@e71235d400 babashka/neil@a38be9f082 -> babashka/neil@6728367eff beancount/beancount-mode@71c1622246 -> beancount/beancount-mode@7b437abcf0 chachi/cuda-mode@7dd07a20c3 -> chachi/cuda-mode@c3dae31b3d clojure-emacs/cider@105da319b0 -> clojure-emacs/cider@8fdb53e8be dominikh/go-mode.el@636d36e37a -> dominikh/go-mode.el@602d73e226 emacs-geiser/geiser@b6b4ac070d -> emacs-geiser/geiser@97ce88463f emacs-geiser/guile@d5175439c0 -> emacs-geiser/guile@5a856c2982 emacs-gnuplot/gnuplot@7138b139d2 -> emacs-gnuplot/gnuplot@4c6b18f71f emacs-lsp/lsp-dart@1f52e81c93 -> emacs-lsp/lsp-dart@9ffbafb7dc emacs-lsp/lsp-haskell@18a7c7881f -> emacs-lsp/lsp-haskell@ba49fa9822 emacs-lsp/lsp-java@4909c14b90 -> emacs-lsp/lsp-java@868600bf7f emacs-lsp/lsp-metals@fa4072cbe7 -> emacs-lsp/lsp-metals@0dc938be11 emacs-lsp/lsp-sourcekit@bb2b7e0278 -> emacs-lsp/lsp-sourcekit@63ff1ab638 emacs-lsp/lsp-treemacs@1d43e9e030 -> emacs-lsp/lsp-treemacs@fb1a07ae0a emacs-straight/adaptive-wrap@f5bc153273 -> emacs-straight/adaptive-wrap@d75665b9c8 emacs-straight/auctex@451b0f08b0 -> emacs-straight/auctex@08881d08ce emacs-straight/csv-mode@cdb73a771b -> emacs-straight/csv-mode@6979fc18eb emacs-straight/org-mode@f398724bd5 -> emacs-straight/org-mode@6a5d0ed342 emacs-straight/rainbow-mode@0740f31f30 -> emacs-straight/rainbow-mode@2e6b18609c emacs-straight/sml-mode@d114e5a27f -> emacs-straight/sml-mode@021233f60a emacsmirror/paredit@9a2c4b37fc -> emacsmirror/paredit@037b9b8acb ericdallo/jet.el@7d5157aac6 -> ericdallo/jet.el@c9a92675ef erlang/otp@2a64588d4a -> erlang/otp@c66bf53cde factor/factor@d143007778 -> factor/factor@31dc1a386b fosskers/sly-overlay@4c6135c260 -> fosskers/sly-overlay@d629450590 fxbois/web-mode@005aa62d6f -> fxbois/web-mode@0c83581d1e gcv/julia-snail@f7784c5007 -> gcv/julia-snail@dff92c4250 greghendershott/racket-mode@40ecb87f40 -> greghendershott/racket-mode@dba66c4536 hhvm/hack-mode@ccf20511f0 -> hhvm/hack-mode@343e45f2a6 https://repo.or.cz/org-contacts.git@d0cb221502c9 -> https://repo.or.cz/org-contacts.git@f0a430442b2a hvesalai/emacs-scala-mode@4c6d636b86 -> hvesalai/emacs-scala-mode@bd0638c32a idris-hackers/idris-mode@38dd2380dc -> idris-hackers/idris-mode@09de86a8f0 ifitzpatrick/graphql-doc.el@d37140267e -> ifitzpatrick/graphql-doc.el@17755a2466 jart/disaster@16bba9afb9 -> jart/disaster@b20f8e1ef9 joaotavora/sly@ba40c8f054 -> joaotavora/sly@742355f755 jorgenschaefer/emacs-buttercup@a1a86b027f -> jorgenschaefer/emacs-buttercup@bf01a33f8b jrblevin/markdown-mode@8aab017f47 -> jrblevin/markdown-mode@6102ac5b73 jschaf/powershell.el@f2da15857e -> jschaf/powershell.el@38727f1cda jwiegley/emacs-async@f317b0c9c3 -> jwiegley/emacs-async@43f97d7e68 ledger/ledger-mode@b0e65f74a5 -> ledger/ledger-mode@a6be7a2d79 nonsequitur/inf-ruby@0cfe8b2fb1 -> nonsequitur/inf-ruby@b234625c85 ocaml/dune@96ed5fb42f -> ocaml/dune@a7924e322e ocaml/merlin@9fa77dbe81 -> ocaml/merlin@e016abfac6 oer/org-re-reveal@dbd8ffb3e5 -> oer/org-re-reveal@91610ba9b0 org-noter/org-noter@68646b685a -> org-noter/org-noter@6f292d7f1e org-roam/org-roam@8667e44187 -> org-roam/org-roam@0b9fcbc97b rust-lang/rust-mode@a529a45181 -> rust-lang/rust-mode@c87f6f82bd seagle0128/grip-mode@7c42b8f61d -> seagle0128/grip-mode@9adac9c989 technomancy/fennel-mode@a4ddd1750f -> technomancy/fennel-mode@f4bd34e1c3 From this point on, Org will be pinned to tagged releases.
:lang rust
Description unfold
This module adds support for the Rust language and integration for its tools,
e.g. cargo
.
- Code completion (doom-package:racer or an LSP server)
- Syntax checking (doom-package:flycheck)
- LSP support (for rust-analyzer and rls) (doom-package:rustic)
- Snippets
Maintainers
- @hlissner
Module flags
- +lsp
-
Enable LSP support for
rustic-mode
. Requires doom-module::tools lsp and a langserver (supports rust-analyzer and rls). - +tree-sitter
- Leverages tree-sitter for better syntax highlighting and structural text editing. Requires doom-module::tools tree-sitter.
Packages
Hacks
- rustic has been modified not to automatically install lsp-mode or eglot if they're missing. Doom expects you to have enabled the doom-module::tools lsp module yourself.
TODO Changelog
This module does not have a changelog yet.
Installation
Enable this module in your doom!
block.
This module requires a working installation of Rust for its more advanced features, and offer only syntax highlighting otherwise. The simplest way to install it is through rustup:
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# And can be updated later with:
$ rustup update --no-self-update
To install and manage Rust on Windows, consult Rust's official documentation.
Once installed, I recommended that you add Cargo's executable to your
$PATH
, so that the Emacs utilities that depend on it – or any tools installed through it – can easily locate them (without any added configuration on your part).Also, if you have used
$ doom env
in the past, changes to your$PATH
won't be visible to Doom until you run it (or$ doom sync
) again.
Other Requirements
- If doom-module::editor format is enabled, you'll need
rustfmt
:$ rustup component add rustfmt
. - Users with doom-module:+lsp enabled will need rust-analyzer (rls is supported, but deprecated).
-
Using the following commands requires:
cargo-process-check
:$ cargo install cargo-check
cargo-process-clippy
:$ rustup component add clippy-preview
TODO Usage
This module's usage documentation is incomplete. Complete it?
LSP support (rust-analyzer)
This module supports rust-analyzer (RLS too, but it is deprecated), which must be installed outside of Emacs, typically with rustup or your OS package manager.
Installation through rustup is simplest:
$ rustup component add rust-analyzer rust-src
If your needs are more complex, consult rust-analyzer's documentation.
Finally, enable Doom's doom-module::tools lsp module, and this module's doom-module:+lsp flag (how to enable modules and their flags), and you're good to go!
Format on save
Enable doom-module::editor format +onsave to get formatting on save with
rustfmt
. No additional configuration is necessary.
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
This module's configuration documentation is incomplete. Complete it?
Enabling eglot support for Rust
Doom's doom-module::tools lsp module has an doom-module:+eglot flag. Enable it and this module will use eglot instead.
Troubleshooting
error[E0670]: `async fn` is not permitted in the 2015 edition
You may be seeing this error, despite having edition = "2018"
in your
Cargo.toml
. This error actually originates from rustfmt
, which the LSP
server tries to invoke on save (if you have rustic-format-trigger
or [[doom-module::editor
format]] enabled).
To fix this your project needs a rustfmt.toml
with edition = "2018"
in it.
Frequently asked questions
This module has no FAQs yet. Ask one?
TODO Appendix
This module has no appendix yet. Write one?