diff --git a/modules/lang/rust/autoload.el b/modules/lang/rust/autoload.el new file mode 100644 index 000000000..47f171da7 --- /dev/null +++ b/modules/lang/rust/autoload.el @@ -0,0 +1,11 @@ +;;; lang/rust/autoload.el + +;;;###autoload +(defun +rust/install-racer () + "Install and compile racer server." + (interactive) + (let ((racer-dir (expand-file-name "racer" +rust-cache-dir))) + (doom-fetch :github "rust-lang/rust.git" (expand-file-name "rust" +rust-cache-dir)) + (doom-fetch :github "phildawes/racer.git" racer-dir) + (let ((default-directory racer-dir)) + (doom-sh "cargo build --release")))) diff --git a/modules/lang/rust/config.el b/modules/lang/rust/config.el index 222739a5a..43938a604 100644 --- a/modules/lang/rust/config.el +++ b/modules/lang/rust/config.el @@ -1,5 +1,8 @@ ;;; module-rust.el +(defvar +rust-cache-dir (concat doom-cache-dir "+rust/") + "TODO") + (@def-package rust-mode :mode "\\.rs$" :init @@ -9,14 +12,15 @@ '+rust-is-cargo-project-p '+rust/cargo-run)) -(defvar racer-cmd (concat doom-cache-dir "racer")) -(defvar racer-rust-src-path (concat doom-cache-dir "rust/src/")) (@def-package racer :after rust-mode - :when (file-exists-p racer-cmd) + :preface :init (@add-hook rust-mode '(racer-mode eldoc-mode flycheck-rust-setup)) :config + (setq racer-cmd (expand-file-name "racer/target/release/racer" +rust-cache-dir) + racer-rust-src-path (expand-file-name "rust/src/" +rust-cache-dir)) + ;; TODO Unit test keybinds (@set :company-backend 'rust-mode '(company-racer)) (@map :map rust-mode-map :m "gd" 'racer-find-definition))