Fix projectile failing to index symlinks

Fixes cases where, if the contents of your ~/.doom.d were symlinks, fd
and ripgrep wouldn't index them (or recurse into them), so it'd miss out
of many files.

Possibly fixes #1803
This commit is contained in:
Henrik Lissner 2020-05-02 16:28:48 -04:00
parent 1fb5981ba6
commit ea1a1805b3
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
2 changed files with 6 additions and 4 deletions

View file

@ -146,7 +146,7 @@ c) are not valid projectile projects."
;; .gitignore. This is recommended in the projectile docs.
((executable-find doom-projectile-fd-binary)
(setq projectile-generic-command
(format "%s . --color=never --type f --type l -0 -H -E .git"
(format "%s . --color=never --type file --type symlink --follow -0 -H -E .git"
doom-projectile-fd-binary)
projectile-git-command projectile-generic-command
projectile-git-submodule-command nil
@ -156,7 +156,7 @@ c) are not valid projectile projects."
;; Otherwise, resort to ripgrep, which is also faster than find
((executable-find "rg")
(setq projectile-generic-command
(concat "rg -0 --files --color=never --hidden"
(concat "rg -0 --files --follow --color=never --hidden"
(cl-loop for dir in projectile-globally-ignored-directories
concat (format " --glob '!%s'" dir)))
projectile-git-command projectile-generic-command

View file

@ -264,9 +264,11 @@ evil-ex-specific constructs, so we disable it solely in evil-ex."
:override #'counsel--find-return-list
(cl-destructuring-bind (find-program . args)
(cond ((executable-find doom-projectile-fd-binary)
(cons doom-projectile-fd-binary (list "-t" "f" "-t" "l" "-E" ".git")))
(cons doom-projectile-fd-binary
(list "--color=never" "-E" ".git"
"--type" "file" "--type" "symlink" "--follow")))
((executable-find "rg")
(append (list "rg" "--files" "--color=never" "--hidden" "--no-messages")
(append (list "rg" "--files" "--follow" "--color=never" "--hidden" "--no-messages")
(cl-loop for dir in projectile-globally-ignored-directories
collect "--glob" and collect (concat "!" dir))
(if IS-WINDOWS (list "--path-separator" "/"))))