diff --git a/CHANGELOG.md b/CHANGELOG.md index f0a22174..9d629cad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## master (unreleased) +### New features + +* Allow additional directories, beyond the default `clj[sc]`, to be correctly formulated by `clojure-expected-ns` via new `defcustom` entitled `clojure-directory-prefixes` + ## 5.13.0 (2021-05-05) ### New features diff --git a/clojure-mode.el b/clojure-mode.el index 7126999a..51f347d1 100644 --- a/clojure-mode.el +++ b/clojure-mode.el @@ -196,6 +196,16 @@ Out-of-the box `clojure-mode' understands lein, boot, gradle, (and (listp value) (cl-every 'stringp value)))) +(defcustom clojure-directory-prefixes + '("\\`clj[scx]?\\.") + "A list of directory prefixes used by `clojure-expected-ns' +to formulate correct ns." + :type '(repeat string) + :package-version '(clojure-mode . "5.14.0") + :safe (lambda (value) + (and (listp value) + (cl-every 'stringp value)))) + (defcustom clojure-project-root-function #'clojure-project-root-path "Function to locate clojure project root directory." :type 'function @@ -1761,7 +1771,9 @@ If PATH is nil, use the path to the file backing the current buffer." (sans-file-sep (mapconcat 'identity (cdr (split-string sans-file-type "/")) ".")) (sans-underscores (replace-regexp-in-string "_" "-" sans-file-sep))) ;; Drop prefix from ns for projects with structure src/{clj,cljs,cljc} - (replace-regexp-in-string "\\`clj[scx]?\\." "" sans-underscores))) + (cl-reduce (lambda (a x) (replace-regexp-in-string x "" a)) + clojure-directory-prefixes + :initial-value sans-underscores))) (defun clojure-insert-ns-form-at-point () "Insert a namespace form at point."