diff --git a/elisp/init-eglot.el b/elisp/init-eglot.el new file mode 100644 index 0000000..7611b14 --- /dev/null +++ b/elisp/init-eglot.el @@ -0,0 +1,43 @@ +;;;; Init-eglot.el --- eglot configuration + +;;;; Commentary: + +;;;; Code: + +(use-package eglot + :hook ((rust-mode nix-mode) . eglot-ensure) + :bind (:map eglot-mode-map + ("C-c C-d" . eldoc) + ("C-c C-e" . eglot-rename) + ("C-c C-f" . eglot-format-buffer)) + :config (add-to-list 'eglot-server-programs + `(rust-mode . ("rust-analyzer" :initializationOptions + ( :procMacro (:enable t) + :cargo ( :buildScripts (:enable t) + :features "all"))))) + (add-hook 'after-save-hook 'eglot-format) + + ;; inlay hints are displayed using the three faces + ;; - eglot-type-hint-face, + ;; - eglot-parameter-hint-face, + ;; - eglot-inlay-hint-face, + ;; which all inherit from eglot-inlay-hint-face, which you may customise; + ;; + ;; Toggle + ;; (eglot-inlay-hints-mode) + (set-face-attribute 'eglot-inlay-hint-face nil + :foreground "gray45" + :weight 'bold) + ) + +;; To install the rust binary applicaton +;; M-x package-vc-install +;; then pass url 'https://github.com/jdtsmith/eglot-booster' +;; cargo build --release +;; Copy binary to /usr/local/bin +(use-package eglot-booster + :after eglot + :config (eglot-booster-mode)) + +(provide 'init-eglot) +;;; init-eglot.el ends here diff --git a/elisp/init-rust.el b/elisp/init-rust.el new file mode 100644 index 0000000..7c62cfb --- /dev/null +++ b/elisp/init-rust.el @@ -0,0 +1,13 @@ +;;;; Init-rust.el --- eglot configuration + +;;;; Commentary: + +;;;; Code: + +(use-package rust-mode + :init + (setq rust-mode-treesitter-derive t)) + (setq rust-format-on-save t) + +(provide 'init-rust) +;;; init-rust.el ends here diff --git a/elisp/init-treemacs.el b/elisp/init-treemacs.el new file mode 100644 index 0000000..bcdc6e4 --- /dev/null +++ b/elisp/init-treemacs.el @@ -0,0 +1,135 @@ +;;; init-treemacs.el --- Setup treemacs -*- lexical-binding: t -*- + +;; Author: Mark van der Putten +;; Maintainer: Mark van der Putten +;; Version: 1.00 +;; Package-Requires: (dependencies) +;; Homepage: +;; Keywords: + +;;; Commentary: + +;; commentary + +;;; Code: + +(use-package treemacs + :ensure t + :defer t + :init + (with-eval-after-load 'winum + (define-key winum-keymap (kbd "M-0") #'treemacs-select-window)) + :config + (progn + (setq treemacs-collapse-dirs (if treemacs-python-executable 3 0) + treemacs-deferred-git-apply-delay 0.5 + treemacs-directory-name-transformer #'identity + treemacs-display-in-side-window t + treemacs-eldoc-display 'simple + treemacs-file-event-delay 2000 + treemacs-file-extension-regex treemacs-last-period-regex-value + treemacs-file-follow-delay 0.2 + treemacs-file-name-transformer #'identity + treemacs-follow-after-init t + treemacs-expand-after-init t + treemacs-find-workspace-method 'find-for-file-or-pick-first + treemacs-git-command-pipe "" + treemacs-goto-tag-strategy 'refetch-index + treemacs-header-scroll-indicators '(nil . "^^^^^^") + treemacs-hide-dot-git-directory t + treemacs-indentation 2 + treemacs-indentation-string " " + treemacs-is-never-other-window nil + treemacs-max-git-entries 5000 + treemacs-missing-project-action 'ask + treemacs-move-files-by-mouse-dragging t + treemacs-move-forward-on-expand nil + treemacs-no-png-images nil + treemacs-no-delete-other-windows t + treemacs-project-follow-cleanup nil + treemacs-persist-file (expand-file-name ".cache/treemacs-persist" user-emacs-directory) + treemacs-position 'left + treemacs-read-string-input 'from-child-frame + treemacs-recenter-distance 0.1 + treemacs-recenter-after-file-follow nil + treemacs-recenter-after-tag-follow nil + treemacs-recenter-after-project-jump 'always + treemacs-recenter-after-project-expand 'on-distance + treemacs-litter-directories '("/node_modules" "/.venv" "/.cask") + treemacs-project-follow-into-home nil + treemacs-show-cursor nil + treemacs-show-hidden-files t + treemacs-silent-filewatch nil + treemacs-silent-refresh nil + treemacs-sorting 'alphabetic-asc + treemacs-select-when-already-in-treemacs 'move-back + treemacs-space-between-root-nodes t + treemacs-tag-follow-cleanup t + treemacs-tag-follow-delay 1.5 + treemacs-text-scale nil + treemacs-user-mode-line-format nil + treemacs-user-header-line-format nil + treemacs-wide-toggle-width 70 + treemacs-width 35 + treemacs-width-increment 1 + treemacs-width-is-initially-locked t + treemacs-workspace-switch-cleanup nil) + + ;; The default width and height of the icons is 22 pixels. If you are + ;; using a Hi-DPI display, uncomment this to double the icon size. + ;;(treemacs-resize-icons 44) + + (treemacs-follow-mode t) + (treemacs-filewatch-mode t) + (treemacs-fringe-indicator-mode 'always) + (when treemacs-python-executable + (treemacs-git-commit-diff-mode t)) + + (pcase (cons (not (null (executable-find "git"))) + (not (null treemacs-python-executable))) + (`(t . t) + (treemacs-git-mode 'deferred)) + (`(t . _) + (treemacs-git-mode 'simple))) + + (treemacs-hide-gitignored-files-mode nil)) + :bind + (:map global-map + ("M-0" . treemacs-select-window) + ("C-x t 1" . treemacs-delete-other-windows) + ("C-x t t" . treemacs) + ("C-x t d" . treemacs-select-directory) + ("C-x t B" . treemacs-bookmark) + ("C-x t C-t" . treemacs-find-file) + ("C-x t M-t" . treemacs-find-tag))) + +;; (use-package treemacs-evil +;; :after (treemacs evil) +;; :ensure t) + +(use-package treemacs-projectile + :after (treemacs projectile) + :ensure t) + +(use-package treemacs-icons-dired + :hook (dired-mode . treemacs-icons-dired-enable-once) + :ensure t) + +(use-package treemacs-magit + :after (treemacs magit) + :ensure t) + +;; (use-package treemacs-persp ;;treemacs-perspective if you use perspective.el vs. persp-mode +;; :after (treemacs persp-mode) ;;or perspective vs. persp-mode +;; :ensure t +;; :config (treemacs-set-scope-type 'Perspectives)) + +;; (use-package treemacs-tab-bar ;;treemacs-tab-bar if you use tab-bar-mode +;; :after (treemacs) +;; :ensure t +;; :config (treemacs-set-scope-type 'Tabs)) + +(treemacs-start-on-boot) + +(provide 'init-treemacs) +;;; init-treemacs.el ends here