summaryrefslogtreecommitdiffstats
path: root/lisp/init-project.el
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2021-08-25 19:30:17 +0200
committerMartin Polden <mpolden@mpolden.no>2021-08-26 09:13:11 +0200
commitc21a10a6f69cab0968ea6ef51d59f3d171478115 (patch)
tree9d2c6373f38f9188e9e0fd3a9dfbe837ef9f30e9 /lisp/init-project.el
parent22a1a060cb45b9c4ee4d9059e1e123ffd7c727f5 (diff)
project: Improve performance for nested Go project
Diffstat (limited to 'lisp/init-project.el')
-rw-r--r--lisp/init-project.el11
1 files changed, 10 insertions, 1 deletions
diff --git a/lisp/init-project.el b/lisp/init-project.el
index b9d9ae3..ac11679 100644
--- a/lisp/init-project.el
+++ b/lisp/init-project.el
@@ -2,6 +2,14 @@
;;; Commentary:
;;; Code:
+(defun mpolden/project-try-go (dir)
+ "Find root directory of a nested modules-based Go project from DIR."
+ ;; this speeds up working with a go project nested inside a large repository
+ (let* ((module-root (locate-dominating-file dir "go.mod"))
+ (is-vc-root (file-directory-p (expand-file-name ".git" module-root))))
+ (when (and module-root (not is-vc-root))
+ (cons 'transient module-root))))
+
(use-package project
:ensure t
:init
@@ -11,7 +19,8 @@
(project-eshell "Eshell")
(mpolden/grep "Grep" ?g)
(magit-project-status "Magit" ?m)))
-
+ ;; configure how projects are detected
+ (setq project-find-functions '(mpolden/project-try-go project-try-vc))
:bind (;; C-x f finds file in project
("C-x f" . project-find-file)
;; C-c p switches project