lang/rust: fix rustic load order

Since both the rust-mode and rustic packages aggressively fight for
precedence in auto-mode-alist, rustic *must* be loaded after rust-mode,
so we switch from rust-mode to rustic-mode if it's available. This only
needs to happen once.
This commit is contained in:
Henrik Lissner 2019-07-11 01:09:30 +02:00
parent da0b11d0f5
commit 5c09772219
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395

View file

@ -1,15 +1,20 @@
;;; lang/rust/config.el -*- lexical-binding: t; -*- ;;; lang/rust/config.el -*- lexical-binding: t; -*-
(def-package! rust-mode (def-package! rust-mode
:mode ("\\.rs$" . +rust|init) :defer t
:config :config
(setq rust-indent-method-chain t) (setq rust-indent-method-chain t)
;; This is necessary because both plugins are fighting for supremacy in
;; `auto-mode-alist', so rustic-mode *must* load second. It only needs to
;; happen once.
;;
;; rust-mode is still required for `racer'.
(defun +rust|init () (defun +rust|init ()
"Use `rustic-mode' if possible, otherwise fall back to `rust-mode'." "Switch to `rustic-mode', if it's available."
(if (and EMACS26+ (require 'rustic nil t)) (when (require 'rustic nil t)
(rustic-mode) (rustic-mode)))
(rust-mode))) (add-hook 'rust-mode-hook #'+rust|init)
(set-docsets! '(rust-mode rustic-mode) "Rust") (set-docsets! '(rust-mode rustic-mode) "Rust")
(when (featurep! +lsp) (when (featurep! +lsp)
@ -42,7 +47,7 @@
:preface :preface
(setq rustic-rls-pkg (if (featurep! +lsp) 'lsp-mode)) (setq rustic-rls-pkg (if (featurep! +lsp) 'lsp-mode))
:config :config
(setq rustic-indent-method-chain rust-indent-method-chain (setq rustic-indent-method-chain t
rustic-flycheck-setup-mode-line-p nil) rustic-flycheck-setup-mode-line-p nil)
;; `rustic-setup-rls' uses `package-installed-p' unnecessarily, which breaks ;; `rustic-setup-rls' uses `package-installed-p' unnecessarily, which breaks