about summary refs log tree commit diff
diff options
context:
space:
mode:
authorWilliam Carroll <wpcarro@gmail.com>2020-09-06T17·20+0100
committerWilliam Carroll <wpcarro@gmail.com>2020-09-06T17·20+0100
commit43fc1d93fb1151c9efafece3084cfdc6bf5e03e1 (patch)
tree86be9af3806428702ed40e4267414631516dffd7
parent5cf6a0b23da854d10a37eb84e7eff1557da51daa (diff)
Prefer 'vc as the project-find-file type when at briefcase's root
See the explanatory comment that I left in the code.
-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)