;;; fschl-ide.el -- Fschl Crafted Emacs user customization file -*- lexical-binding: t; -*- ;; This file is generated from the .org-file with the same name. If you want to edit the ;; configuration, DO NOT edit this .el-file, edit .org, instead. (add-to-list 'package-selected-packages 'cargo) (add-to-list 'package-selected-packages 'rustic) (add-to-list 'package-selected-packages 'ob-rust) (add-to-list 'package-selected-packages 'ob-rust) (package-install-selected-packages :noconfirm) (use-package smartparens :ensure t :config (require 'smartparens-rust)) (defun sp1ff/rust/mode-hook () "My rust-mode hook" (column-number-mode) (display-line-numbers-mode) (hs-minor-mode) (smartparens-mode) (define-key rust-mode-map "\C-ca" 'eglot-code-actions) (define-key rust-mode-map (kbd "C-") 'sp-forward-slurp-sexp) (define-key rust-mode-map (kbd "C-") 'sp-forward-barf-sexp) (define-key rust-mode-map (kbd "C-M-") 'sp-backward-slurp-sexp) (define-key rust-mode-map (kbd "C-M-") 'sp-backward-barf-sexp) (define-key rust-mode-map "\C-c>" 'hs-show-all) (define-key rust-mode-map "\C-c<" 'hs-hide-all) (define-key rust-mode-map "\C-c-" 'hs-toggle-hiding) (define-key rust-mode-map "\C-c+" 'hs-hide-level) (setq indent-tabs-mode nil tab-width 4 c-basic-offset 4 fill-column 100)) (use-package rust-mode :ensure t :hook (rust-mode . sp1ff/rust/mode-hook) :config (let ((dot-cargo-bin (expand-file-name "~/.cargo/bin/"))) (setq rust-rustfmt-bin (concat dot-cargo-bin "rustfmt") rust-cargo-bin (concat dot-cargo-bin "cargo") rust-format-on-save t))) (use-package clippy-flymake :vc (:url "https://git.sr.ht/~mgmarlow/clippy-flymake" :branch main) :hook (rust-mode . clippy-flymake-setup-backend)) (defun clippy-flymake-manually-activate-flymake () "Shim for working around eglot's tendency to suppress flymake backends." (add-hook 'flymake-diagnostic-functions #'eglot-flymake-backend nil t) (flymake-mode 1)) ;; `eglot' by default will suppress all other flymake backends than its own ;; This workaround will ;; add `flymake-clippy' (use-package eglot :ensure t :hook ((rust-mode . eglot-ensure) (eglot-managed-mode . clippy-flymake-manually-activate-flymake)) :config (add-to-list 'eglot-stay-out-of 'flymake)) (use-package company :ensure :custom (company-idle-delay 0.5) ;; how long to wait until popup ;; (company-begin-commands nil) ;; uncomment to disable popup :bind (:map company-active-map ("C-n". company-select-next) ("C-p". company-select-previous) ("M-<". company-select-first) ("M->". company-select-last))) (use-package flycheck :ensure) (setq lsp-inlay-hint-enable t)