From 806a368639db902254f194e234fe049606c1037f Mon Sep 17 00:00:00 2001 From: aJchemist Date: Sat, 1 Aug 2015 15:10:01 +0900 Subject: [PATCH] Project dir decision where lein & boot are mixed --- clojure-mode.el | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/clojure-mode.el b/clojure-mode.el index 083ddb29..f7f958a9 100644 --- a/clojure-mode.el +++ b/clojure-mode.el @@ -979,13 +979,19 @@ nil." -(defun clojure-project-dir () - "Return the absolute path to the project's root directory." - (file-truename - (or (locate-dominating-file default-directory - "project.clj") - (locate-dominating-file default-directory - "build.boot")))) +(defun clojure-project-dir (&optional dir-name) + "Return the absolute path to the project's root directory. + +Use `default-directory' if DIR-NAME is nil." + (let ((dir-name (or dir-name default-directory))) + (let ((lein-project-dir (locate-dominating-file dir-name "project.clj")) + (boot-project-dir (locate-dominating-file dir-name "build.boot"))) + (file-truename + (cond ((not lein-project-dir) boot-project-dir) + ((not boot-project-dir) lein-project-dir) + (t (if (file-in-directory-p lein-project-dir boot-project-dir) + lein-project-dir + boot-project-dir))))))) (defun clojure-project-relative-path (path) "Denormalize PATH by making it relative to the project root."