33 lines
1,022 B
EmacsLisp
33 lines
1,022 B
EmacsLisp
|
;;; rust-mode-treesitter.el --- use native rust-ts-mode -*-lexical-binding: t-*-
|
||
|
;;; Commentary:
|
||
|
|
||
|
;; Derive from rust-ts-mode instead of prog-mode
|
||
|
|
||
|
;;; Code:
|
||
|
|
||
|
(require 'rust-mode)
|
||
|
|
||
|
;; Do not compile or load on Emacs releases that don't support
|
||
|
;; this. See https://github.com/rust-lang/rust-mode/issues/520.
|
||
|
(when (version<= "29.1" emacs-version)
|
||
|
(require 'treesit)
|
||
|
(require 'rust-ts-mode)
|
||
|
|
||
|
;; HACK: `rust-ts-mode' adds itself to the `auto-mode-alist'
|
||
|
;; after us, so we need to readd `rust-mode' to the front of
|
||
|
;; the list after loading `rust-ts-mode'.
|
||
|
(setq auto-mode-alist (delete '("\\.rs\\'" . rust-mode) auto-mode-alist))
|
||
|
(add-to-list 'auto-mode-alist '("\\.rs\\'" . rust-mode))
|
||
|
|
||
|
(define-derived-mode rust-mode rust-ts-mode "Rust"
|
||
|
"Major mode for Rust code.
|
||
|
|
||
|
\\{rust-mode-map}"
|
||
|
:group 'rust-mode
|
||
|
|
||
|
(add-hook 'before-save-hook rust-before-save-hook nil t)
|
||
|
(add-hook 'after-save-hook rust-after-save-hook nil t)))
|
||
|
|
||
|
(provide 'rust-mode-treesitter)
|
||
|
;;; rust-mode-treesitter.el ends here
|