From 232e9d4b91140f004db506f578460e95a84b45bd Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 8 Aug 2022 17:15:33 +0200 Subject: [PATCH] fix: use --strip-cwd-prefix only if fd >=8.3.0 Since fd 8.3.0 has low availability across distros (see repology link below), I don't want to make it Doom's minimum supported version. Instead, I do a quick version check and adjust accordingly. I'll think up a more elegant solution after v3. Ref: https://repology.org/project/fd-find/versions Fix: #6618 Fix: #6600 Close: #6597 --- lisp/doom-projects.el | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/lisp/doom-projects.el b/lisp/doom-projects.el index 963826022..462ccc863 100644 --- a/lisp/doom-projects.el +++ b/lisp/doom-projects.el @@ -15,6 +15,8 @@ Emacs.") "The filename of the `fd' executable. On some distros it's 'fdfind' (ubuntu, debian, and derivatives). On most it's 'fd'.") +(defvar doom-projects--fd-version nil) + ;; ;;; Packages @@ -174,9 +176,17 @@ And if it's a function, evaluate it." (cl-find-if (doom-rpartial #'executable-find t) (list "fdfind" "fd")) doom-projectile-fd-binary)) - (concat (format "%s . -0 -H --color=never --type file --type symlink --follow --exclude .git --strip-cwd-prefix" - bin) - (if IS-WINDOWS " --path-separator=/")))) + ;; REVIEW Temporary fix for #6618. Improve me later. + (let ((version (or doom-projects--fd-version + (cadr (split-string (cdr (doom-call-process bin "--version")) + " " t))))) + (when version + (setq doom-projects--fd-version version)) + (concat (format "%s . -0 -H --color=never --type file --type symlink --follow --exclude .git %s" + bin (if (and (stringp version) + (version< version "8.3.0")) + "" "--strip-cwd-prefix")) + (if IS-WINDOWS " --path-separator=/"))))) ;; Otherwise, resort to ripgrep, which is also faster than find ((executable-find "rg" t) (concat "rg -0 --files --follow --color=never --hidden -g!.git"