lang/rust: use rustic-mode instead on Emacs 26+

This commit is contained in:
Henrik Lissner 2019-07-09 17:54:18 +02:00
parent 683683736d
commit 236c9ceeab
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
2 changed files with 60 additions and 29 deletions

View file

@ -1,16 +1,61 @@
;;; lang/rust/config.el -*- lexical-binding: t; -*-
(after! rust-mode
(set-docsets! 'rust-mode "Rust")
(def-package! rust-mode
:mode ("\\.rs$" . +rust|init)
:config
(setq rust-indent-method-chain t)
(defun +rust|init ()
"Use `rustic-mode' if possible, otherwise fall back to `rust-mode'."
(if (and EMACS26+ (require 'rustic nil t))
(rustic-mode)
(rust-mode)))
(set-docsets! '(rust-mode rustic-mode) "Rust")
(when (featurep! +lsp)
(add-hook 'rust-mode-local-vars-hook #'lsp!))
;; TODO PR these upstream
(after! dtrt-indent
(pushnew! dtrt-indent-hook-mapping-list
'(rust-mode default rust-indent-offset)
'(rustic-mode default rustic-indent-offset)))
(when (featurep! :tools editorconfig)
(after! editorconfig
(pushnew! editorconfig-indentation-alist
'(rust-mode rust-indent-offset)
'(rustic-mode rustic-indent-offset)))))
(def-package! racer
:unless (featurep! +lsp)
:hook ((rust-mode rustic-mode) . racer-mode)
:config
(set-lookup-handlers! 'rust-mode
:definition '(racer-find-definition :async t)
:documentation '+rust-racer-lookup-documentation))
(def-package! rustic
:when EMACS26+
:after rust-mode
:config
(setq rustic-indent-method-chain rust-indent-method-chain
rustic-flycheck-setup-mode-line-p nil
rustic-rls-pkg (featurep! +lsp)))
;;
;;; Tools
(def-package! cargo
:defer t
:init
(map! :map rust-mode-map
:after rust-mode
:config
(defvar +rust-keymap
(if (boundp 'rustic-mode-map)
rustic-mode-map
rust-mode-map))
(map! :map +rust-keymap
:localleader
(:prefix "b"
:desc "cargo add" "a" #'cargo-process-add
@ -25,20 +70,4 @@
(: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
:unless (featurep! +lsp)
:after rust-mode
:config
(add-hook 'rust-mode-hook #'racer-mode)
(set-lookup-handlers! 'rust-mode
:definition '(racer-find-definition :async t)
:documentation '+rust-racer-lookup-documentation))
(def-package! flycheck-rust
:when (featurep! :tools flycheck)
:after rust-mode
:config (add-hook 'rust-mode-hook #'flycheck-rust-setup))
:desc "current test" "t" #'cargo-process-current-test)))

View file

@ -1,11 +1,13 @@
;; -*- no-byte-compile: t; -*-
;;; lang/rust/packages.el
(when EMACS26+
(package! rustic))
(package! rust-mode)
(package! cargo)
(when (featurep! :tools flycheck)
(package! flycheck-rust))
(unless (featurep! +lsp)
(package! racer))
;;
(package! cargo)