/ lisp / gears / editing / rust.el
rust.el
 1  ;; Declare tree-sitter languages needed by this gear
 2  (when (and (gearp! :editing rust)
 3             (not (gearp! :editing rust -treesit)))
 4    (backpack-treesit-langs! rust)
 5  
 6    (add-to-list 'major-mode-remap-alist '(rust-mode . rust-ts-mode)))
 7  
 8  (leaf rust-mode
 9    :doc "A major-mode for editing Rust source code"
10    :ensure (rust-mode :ref "f68ddca5c22b94a2de7c9ce20d629cd78d60b269")
11    :when (gearp! :editing rust)
12    :hook
13    ((rust-mode-hook rust-ts-mode-hook) . electric-pair-local-mode)
14    ((rust-mode-hook rust-ts-mode-hook) .
15     (lambda ()
16       (toggle-truncate-lines +1)
17       (unless (gearp! :editing rust -display-line-numbers)
18         (display-line-numbers-mode +1))))
19    :config
20    (leaf eglot
21      :doc "Language Server Protocol support for rust-mode"
22      :when (gearp! :editing rust lsp)
23      :doctor
24      ("rust-analyzer" . "an implementation of Language Server Protocol for the Rust programming language")
25      :hook ((rust-mode-hook rust-ts-mode-hook) . eglot-ensure)
26      :config
27      (add-to-list 'eglot-server-programs '(rust-mode . ("rust-analyzer")))
28      (add-to-list 'eglot-server-programs '(rust-ts-mode . ("rust-analyzer"))))
29  
30    (leaf cargo-mode
31      :doc "Cargo process support for Emacs"
32      :when (gearp! :editing rust cargo)
33      :ensure (cargo-mode :ref "33528954218f8957a26f3fef506c3537823d569d")
34      :doctor ("cargo" . "the Rust package manager")
35      :custom (compilation-scroll-output . t)
36      :hook ((rust-mode-hook rust-ts-mode-hook) . cargo-minor-mode)))
37  
38  (leaf ob-rust
39    :doc "Rust source blocks in org-mode"
40    :when (and (gearp! :editing rust) (gearp! :editing org))
41    :after org
42    :ensure (ob-rust :ref "be059d231fafeb24a658db212a55ccdc55c0c500")
43    :doctor ("rustc" . "the Rust compiler")
44    :config
45    (org-babel-do-load-languages
46     'org-babel-load-languages (append org-babel-load-languages '((rust . t)))))