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)))))