diff --git a/modules/lang/rust/README.org b/modules/lang/rust/README.org index 32f18b69d..4342cd1ed 100644 --- a/modules/lang/rust/README.org +++ b/modules/lang/rust/README.org @@ -27,6 +27,7 @@ Add support to Rust language and cargo commands inside emacs. ** Plugins + [[https://github.com/rust-lang/rust-mode][Rust-mode]] + [[https://github.com/racer-rust/emacs-racer][Racer-mode]] ++ [[https://github.com/racer-rust/emacs-racer][Cargo-mode]] ** Hacks {A list of internal modifications to included packages} @@ -39,18 +40,34 @@ To get started with Rust, you can either use =rustup= and install rust with: Package manager is not recommended to install Nightly version of Rust what is required for ~racer~ from [[https://github.com/racer-rust/racer#installation][version 2.1]] (more info in [[#Troubleshooting][Troubleshooting]]) +Some commands require additional crates to be installed to work, e.g. ~cargo +add~. +#+BEGIN_SRC sh +rustup component add rustfmt +rustup component add cargo-check +rustup component add cargo-edit +#+END_SRC + * Features This module also supports LSP, it requires installation of Rust Language Server [[https://github.com/rust-lang/rls][~RLS~]]. To enable this you need to enable ~lsp~ in ~:tools~ section in ~init.el~ file. Keybindings -| Binding | Description | -|---------------------+---------------| -| ~ b b~ | ~cargo build~ | -| ~ b c~ | ~cargo check~ | -| ~ b r~ | ~cargo run~ | -| ~ b t~ | ~cargo test~ | +| Binding | Description | +|---------------------+-----------------------------| +| ~ b a~ | ~cargo add~ | +| ~ b b~ | ~cargo build~ | +| ~ b B~ | ~cargo bench~ | +| ~ b c~ | ~cargo check~ | +| ~ b C~ | ~cargo clippy~ | +| ~ b d~ | ~cargo doc~ | +| ~ b r~ | ~cargo run~ | +| ~ b s~ | ~cargo search~ | +| ~ b u~ | ~cargo update~ | +| ~ t a~ | ~cargo test~ | +| ~ t f~ | ~run tests in current file~ | +| ~ t t~ | ~run current test~ | * TODO Configuration How to configure this module, including common problems and how to address them. diff --git a/modules/lang/rust/autoload.el b/modules/lang/rust/autoload.el index 5d2333220..9f584cb44 100644 --- a/modules/lang/rust/autoload.el +++ b/modules/lang/rust/autoload.el @@ -7,12 +7,6 @@ "Return t if this is a cargo project." (locate-dominating-file buffer-file-name "Cargo.toml")) -;;;###autoload -(defun +rust-cargo-compile (command) - "TODO" - (let ((default-directory (+rust-cargo-project-p))) - (compile command))) - ;;;###autoload (defun +rust-racer-lookup-documentation (identifier) "A `+lookup/documentation' handler for Rust + Racer." diff --git a/modules/lang/rust/config.el b/modules/lang/rust/config.el index c199d2c4c..4ab64e9dc 100644 --- a/modules/lang/rust/config.el +++ b/modules/lang/rust/config.el @@ -7,13 +7,25 @@ (when (featurep! +lsp) (add-hook 'rust-mode-hook #'lsp!)) - (map! :map rust-mode-map - :localleader - :prefix "b" - :desc "cargo build" "b" (λ! (+rust-cargo-compile "cargo build --color always")) - :desc "cargo check" "c" (λ! (+rust-cargo-compile "cargo check --color always")) - :desc "cargo run" "r" (λ! (+rust-cargo-compile "cargo run --color always")) - :desc "cargo test" "t" (λ! (+rust-cargo-compile "cargo test --color always")))) + (def-package! cargo + :defer t + :init + (map! :map rust-mode-map + :localleader + (:prefix "b" + :desc "cargo add" "a" #'cargo-process-add + :desc "cargo build" "b" #'cargo-process-build + :desc "cargo bench" "B" #'cargo-process-bench + :desc "cargo check" "c" #'cargo-process-check + :desc "cargo clippy" "C" #'cargo-process-clippy + :desc "cargo doc" "d" #'cargo-process-doc + :desc "cargo run" "r" #'cargo-process-run + :desc "cargo search" "s" #'cargo-process-search + :desc "cargo update" "u" #'cargo-process-update) + (:prefix ("t" . "cargo test") + :desc "all" "a" #'cargo-process-test + :desc "current file" "f" #'cargo-process-current-file-tests + :desc "current test" "t" #'cargo-process-current-test)))) (def-package! racer diff --git a/modules/lang/rust/packages.el b/modules/lang/rust/packages.el index 3f5efb252..caec95715 100644 --- a/modules/lang/rust/packages.el +++ b/modules/lang/rust/packages.el @@ -2,6 +2,7 @@ ;;; lang/rust/packages.el (package! rust-mode) +(package! cargo) (when (featurep! :tools flycheck) (package! flycheck-rust))