;; Rust config (require 'rust-mode) (add-to-list 'auto-mode-alist '("\\.rs\\'" . rust-mode)) (setq rust-format-on-save t) (add-hook 'rust-mode-hook 'cargo-minor-mode) ;; (with-eval-after-load 'rust-mode ;; (add-hook 'flycheck-mode-hook #'flycheck-rust-setup)) ;; (add-hook 'rust-mode-hook #'racer-mode) ;; (add-hook 'racer-mode-hook #'eldoc-mode) ;; (add-hook 'racer-mode-hook #'company-mode) ;; (define-key rust-mode-map (kbd "TAB") #'company-indent-or-complete-common) ;; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ;; rustic = basic rust-mode + additions (use-package rustic :ensure :bind (:map rustic-mode-map ("M-j" . lsp-ui-imenu) ("M-?" . lsp-find-references) ("C-c C-c l" . flycheck-list-errors) ("C-c C-c a" . lsp-execute-code-action) ("C-c C-c r" . lsp-rename) ("C-c C-c q" . lsp-workspace-restart) ("C-c C-c Q" . lsp-workspace-shutdown) ("C-c C-c s" . lsp-rust-analyzer-status) ("C-c C-c e" . lsp-rust-analyzer-expand-macro) ("C-c C-c d" . dap-hydra) ("C-c C-c h" . lsp-ui-doc-glance)) :config ;; uncomment for less flashiness ;; (setq lsp-eldoc-hook nil) ;; (setq lsp-enable-symbol-highlighting nil) ;; (setq lsp-signature-auto-activate nil) ;; comment to disable rustfmt on save (add-hook 'rustic-mode-hook 'rk/rustic-mode-hook)) (use-package lsp-mode :ensure :commands lsp :custom ;; what to use when checking on-save. "check" is default, I prefer clippy (lsp-rust-analyzer-cargo-watch-command "clippy") (lsp-eldoc-render-all t) (lsp-idle-delay 0.6) ;; enable / disable the hints as you prefer: (lsp-rust-analyzer-server-display-inlay-hints t) (lsp-rust-analyzer-display-lifetime-elision-hints-enable "skip_trivial") (lsp-rust-analyzer-display-chaining-hints t) (lsp-rust-analyzer-display-lifetime-elision-hints-use-parameter-names nil) (lsp-rust-analyzer-display-closure-return-type-hints t) (lsp-rust-analyzer-display-parameter-hints nil) (lsp-rust-analyzer-display-reborrow-hints nil) :config (add-hook 'lsp-mode-hook 'lsp-ui-mode)) (use-package lsp-ui :ensure :commands lsp-ui-mode :custom (lsp-ui-peek-always-show t) (lsp-ui-sideline-show-hover t) (lsp-ui-doc-enable nil)) (use-package toml-mode :ensure) (use-package flycheck :ensure) ;; Rust playground https://github.com/grafov/rust-playground ;; M-x rust-playground -> Type -> Ctrl-RET -> See results -> M-x rust-playground-rm (require 'rust-playground) (provide 'init-rust)