@@ -144,6 +144,16 @@ For example, \[ is allowed in :db/id[:db.part/user]."
144
144
(and (listp value)
145
145
(cl-every 'characterp value))))
146
146
147
+ (defcustom clojure-build-tool-files '(" project.clj" " build.boot" " build.gradle" )
148
+ " A list of files, which are looked for in order to identify the
149
+ project's root. Out-of-the box clojure-mode understands lein,
150
+ boot and gradle."
151
+ :type '(repeat string)
152
+ :group 'clojure
153
+ :safe (lambda (value )
154
+ (and (listp value)
155
+ (cl-every 'stringp value))))
156
+
147
157
(defvar clojure-mode-map
148
158
(let ((map (make-sparse-keymap )))
149
159
(define-key map (kbd " C-:" ) #'clojure-toggle-keyword-string )
@@ -1041,16 +1051,13 @@ nil."
1041
1051
1042
1052
Use `default-directory' if DIR-NAME is nil.
1043
1053
Return nil if not inside a project."
1044
- (let ((dir-name (or dir-name default-directory)))
1045
- (let ((lein-project-dir (locate-dominating-file dir-name " project.clj" ))
1046
- (boot-project-dir (locate-dominating-file dir-name " build.boot" )))
1047
- (when (or lein-project-dir boot-project-dir)
1048
- (file-truename
1049
- (cond ((not lein-project-dir) boot-project-dir)
1050
- ((not boot-project-dir) lein-project-dir)
1051
- (t (if (file-in-directory-p lein-project-dir boot-project-dir)
1052
- lein-project-dir
1053
- boot-project-dir))))))))
1054
+ (let* ((dir-name (or dir-name default-directory))
1055
+ (choices (delq nil
1056
+ (mapcar (lambda (fname )
1057
+ (locate-dominating-file dir-name fname))
1058
+ clojure-build-tool-files))))
1059
+ (when (> (length choices) 0 )
1060
+ (car (sort choices #'file-in-directory-p )))))
1054
1061
1055
1062
(defun clojure-project-relative-path (path )
1056
1063
" Denormalize PATH by making it relative to the project root."
0 commit comments