about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--emacs/.emacs.d/wpc/wpc-misc.el14
1 files changed, 10 insertions, 4 deletions
diff --git a/emacs/.emacs.d/wpc/wpc-misc.el b/emacs/.emacs.d/wpc/wpc-misc.el
index 1dda82005efc..bdb504760ea7 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)