From 43fc1d93fb1151c9efafece3084cfdc6bf5e03e1 Mon Sep 17 00:00:00 2001 From: William Carroll Date: Sun, 6 Sep 2020 18:20:19 +0100 Subject: [PATCH] Prefer 'vc as the project-find-file type when at briefcase's root See the explanatory comment that I left in the code. --- emacs/.emacs.d/wpc/wpc-misc.el | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/emacs/.emacs.d/wpc/wpc-misc.el b/emacs/.emacs.d/wpc/wpc-misc.el index 1dda82005..bdb504760 100644 --- a/emacs/.emacs.d/wpc/wpc-misc.el +++ b/emacs/.emacs.d/wpc/wpc-misc.el @@ -215,10 +215,16 @@ ;; TODO: Consider moving this into a briefcase.el module. (defun wpc-misc--briefcase-find (dir) "Find the default.nix nearest to DIR." - (when (s-starts-with? constants-briefcase (f-expand dir)) - (if (f-exists? (f-join dir "default.nix")) - (cons 'transient dir) - (wpc-misc--briefcase-find (f-parent dir))))) + ;; I use 'vc only at the root of my monorepo because 'transient doesn't use my + ;; .gitignore, which slows things down. Ideally, I could write a version that + ;; behaves like 'transient but also respects my monorepo's .gitignore and any + ;; ancestor .gitignore files. + (if (f-equal? constants-briefcase dir) + (cons 'vc dir) + (when (f-parent-of? constants-briefcase dir) + (if (f-exists? (f-join dir "default.nix")) + (cons 'transient dir) + (wpc-misc--briefcase-find (f-parent dir)))))) (add-to-list 'project-find-functions #'wpc-misc--briefcase-find)