diff --git a/modules/ui/treemacs/config.el b/modules/ui/treemacs/config.el index df1c70996..25e4fa9cc 100644 --- a/modules/ui/treemacs/config.el +++ b/modules/ui/treemacs/config.el @@ -1,19 +1,48 @@ ;;; ui/treemacs/config.el -*- lexical-binding: t; -*- -(setq treemacs-follow-after-init t - treemacs-is-never-other-window t - treemacs-sorting 'alphabetic-case-insensitive-asc - treemacs-persist-file (concat doom-cache-dir "treemacs-persist") - treemacs-last-error-persist-file (concat doom-cache-dir "treemacs-last-error-persist")) +(defvar +treemacs-git-mode 'simple + "Type of git integration for `treemacs-git-mode'. + +There are 3 possible values: + + 1) `simple', which highlights only files based on their git status, and is + slightly faster, + 2) `extended', which highlights both files and directories, but requires + python, + 3) `deferred', same as extended, but highlights asynchronously. + +This must be set before `treemacs' has loaded.") -(after! treemacs +;; +;;; Packages + +(use-package! treemacs + :defer t + :init + (setq treemacs-follow-after-init t + treemacs-is-never-other-window t + treemacs-sorting 'alphabetic-case-insensitive-asc + treemacs-persist-file (concat doom-cache-dir "treemacs-persist") + treemacs-last-error-persist-file (concat doom-cache-dir "treemacs-last-error-persist")) + :config + ;; Allow ace-window to target treemacs windows + (after! ace-window + (delq! 'treemacs-mode aw-ignored-buffers)) + ;; Don't follow the cursor (treemacs-follow-mode -1) - ;; Allow ace-window to target treemacs windows - (after! ace-window - (delq! 'treemacs-mode aw-ignored-buffers))) + (when +treemacs-git-mode + ;; If they aren't supported, fall back to simpler methods + (when (and (memq +treemacs-git-mode '(deferred extended)) + (not (executable-find "python3"))) + (setq +treemacs-git-mode 'simple)) + (treemacs-git-mode +treemacs-git-mode) + (setq treemacs-collapse-dirs + (if (memq treemacs-git-mode '(extended deferred)) + 3 + 0)))) (use-package! treemacs-evil