diff options
author | Martin Polden <mpolden@mpolden.no> | 2021-08-25 19:30:17 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2021-08-26 09:13:11 +0200 |
commit | c21a10a6f69cab0968ea6ef51d59f3d171478115 (patch) | |
tree | 9d2c6373f38f9188e9e0fd3a9dfbe837ef9f30e9 | |
parent | 22a1a060cb45b9c4ee4d9059e1e123ffd7c727f5 (diff) |
project: Improve performance for nested Go project
-rw-r--r-- | lisp/init-project.el | 11 |
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 |