2017-06-08 11:47:56 +02:00
|
|
|
;;; lang/rust/config.el -*- lexical-binding: t; -*-
|
2015-09-30 12:28:52 -04:00
|
|
|
|
2019-10-19 15:25:29 -04:00
|
|
|
(after! projectile
|
|
|
|
(add-to-list 'projectile-project-root-files "Cargo.toml"))
|
|
|
|
|
|
|
|
|
|
|
|
;;
|
|
|
|
;;; Packages
|
|
|
|
|
2019-07-23 12:44:03 +02:00
|
|
|
(use-package! rustic
|
2019-11-07 12:49:30 -05:00
|
|
|
:mode ("\\.rs$" . rustic-mode)
|
2019-07-09 19:29:08 +02:00
|
|
|
:preface
|
|
|
|
(setq rustic-rls-pkg (if (featurep! +lsp) 'lsp-mode))
|
2019-07-09 17:54:18 +02:00
|
|
|
:config
|
2019-11-07 12:49:30 -05:00
|
|
|
(set-docsets! 'rustic-mode "Rust")
|
|
|
|
|
2019-07-11 01:09:30 +02:00
|
|
|
(setq rustic-indent-method-chain t
|
2019-07-12 01:14:16 +02:00
|
|
|
rustic-flycheck-setup-mode-line-p nil
|
|
|
|
;; use :editor format instead
|
2019-10-22 19:36:32 -04:00
|
|
|
rustic-format-on-save nil
|
|
|
|
;; REVIEW `rust-ordinary-lt-gt-p' is terribly expensive in large rust
|
|
|
|
;; buffers, so we disable it, but only for evil users, because it
|
|
|
|
;; affects `forward-sexp' and its ilk. See
|
|
|
|
;; https://github.com/rust-lang/rust-mode/issues/288.
|
2019-11-07 12:49:30 -05:00
|
|
|
rustic-match-angle-brackets (not (featurep! :editor evil))
|
|
|
|
;; `rustic-setup-rls' uses `package-installed-p' to determine if
|
|
|
|
;; lsp-mode/elgot are available. This breaks because Doom doesn't use
|
|
|
|
;; package.el to begin with (and lazy loads it). This is already handled
|
|
|
|
;; by the :tools lsp module, so...
|
|
|
|
rustic-lsp-setup-p nil)
|
2019-07-09 18:50:50 +02:00
|
|
|
|
2019-09-15 12:06:27 -04:00
|
|
|
(add-hook 'rustic-mode-hook #'rainbow-delimiters-mode)
|
|
|
|
|
2019-11-07 12:49:30 -05:00
|
|
|
(when (featurep! +lsp)
|
|
|
|
(add-hook 'rustic-mode-local-vars-hook #'lsp!)))
|
|
|
|
|
|
|
|
|
|
|
|
(use-package! racer
|
|
|
|
:unless (featurep! +lsp)
|
|
|
|
:hook (rustic-mode . racer-mode)
|
|
|
|
:config
|
|
|
|
(set-lookup-handlers! 'rustic-mode
|
|
|
|
:definition '(racer-find-definition :async t)
|
|
|
|
:documentation '+rust-racer-lookup-documentation))
|
2019-07-09 17:54:18 +02:00
|
|
|
|
|
|
|
|
|
|
|
;;
|
|
|
|
;;; Tools
|
|
|
|
|
2019-07-23 12:44:03 +02:00
|
|
|
(use-package! cargo
|
2019-11-07 12:49:30 -05:00
|
|
|
:after rustic-mode
|
2019-07-09 17:54:18 +02:00
|
|
|
:config
|
2019-11-07 12:49:30 -05:00
|
|
|
(map! :map rustic-mode-map
|
2019-07-09 17:54:18 +02:00
|
|
|
:localleader
|
2019-10-04 17:49:28 -04:00
|
|
|
(:prefix ("b" . "build")
|
2019-07-09 17:54:18 +02:00
|
|
|
: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)))
|