From 798d607b13ad9002f71dfbfb66eec4cf951494ab Mon Sep 17 00:00:00 2001 From: Mark Stuart Date: Sat, 26 Jun 2021 11:09:07 +0100 Subject: [PATCH 1/6] Add clojure-elided-prefixes-ns customisation --- CHANGELOG.md | 2 ++ clojure-mode.el | 14 +++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f0a22174..7a39edeb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## master (unreleased) +* Allow additional eliding beyond just `clj[sc]` in `clojure-expected-ns` via new `defcustom` entitled `clojure-elided-prefixes-ns` + ## 5.13.0 (2021-05-05) ### New features diff --git a/clojure-mode.el b/clojure-mode.el index 7126999a..846ccd8f 100644 --- a/clojure-mode.el +++ b/clojure-mode.el @@ -196,6 +196,15 @@ Out-of-the box `clojure-mode' understands lein, boot, gradle, (and (listp value) (cl-every 'stringp value)))) +(defcustom clojure-elided-prefixes-ns + '() + "A list of additional regexp prefixes that are elided when formulating ns." + :type '(repeat string) + :package-version '(clojure-mode . "5.0.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 +1770,10 @@ 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)) + (add-to-list 'clojure-elided-prefixes-ns "\\`clj[scx]?\\.") + :initial-value sans-underscores))) (defun clojure-insert-ns-form-at-point () "Insert a namespace form at point." From 74db4da685514397a60c21eab90fab64659771ca Mon Sep 17 00:00:00 2001 From: Mark Stuart Date: Sun, 27 Jun 2021 09:27:21 +0100 Subject: [PATCH 2/6] Rename clojure-elided-prefixes-ns to clojure-directory-prefixes And default to clj[scx]? --- CHANGELOG.md | 2 +- clojure-mode.el | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a39edeb..c4645892 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## master (unreleased) -* Allow additional eliding beyond just `clj[sc]` in `clojure-expected-ns` via new `defcustom` entitled `clojure-elided-prefixes-ns` +* 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) diff --git a/clojure-mode.el b/clojure-mode.el index 846ccd8f..418f3630 100644 --- a/clojure-mode.el +++ b/clojure-mode.el @@ -196,9 +196,9 @@ Out-of-the box `clojure-mode' understands lein, boot, gradle, (and (listp value) (cl-every 'stringp value)))) -(defcustom clojure-elided-prefixes-ns - '() - "A list of additional regexp prefixes that are elided when formulating ns." +(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.0.0") :safe (lambda (value) @@ -1770,9 +1770,8 @@ 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} - (cl-reduce (lambda (a x) - (replace-regexp-in-string x "" a)) - (add-to-list 'clojure-elided-prefixes-ns "\\`clj[scx]?\\.") + (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 () From 6ccd0d1bd36a6d878dac57be2ef77920653957a3 Mon Sep 17 00:00:00 2001 From: Mark Stuart Date: Tue, 6 Jul 2021 13:03:13 +0100 Subject: [PATCH 3/6] Fix doc comment and correct package-version --- clojure-mode.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clojure-mode.el b/clojure-mode.el index 418f3630..ea8d559d 100644 --- a/clojure-mode.el +++ b/clojure-mode.el @@ -198,9 +198,9 @@ Out-of-the box `clojure-mode' understands lein, boot, gradle, (defcustom clojure-directory-prefixes '("\\`clj[scx]?\\.") - "A list of directory prefixes used by clojure-expected-ns to formulate correct ns." + "A list of directory prefixes used by `clojure-expected-ns' to formulate correct ns." :type '(repeat string) - :package-version '(clojure-mode . "5.0.0") + :package-version '(clojure-mode . "5.14.0") :safe (lambda (value) (and (listp value) (cl-every 'stringp value)))) From 4d6e460ebd2643a1ae95f449ef85e36c590f873a Mon Sep 17 00:00:00 2001 From: Mark Stuart Date: Tue, 6 Jul 2021 13:13:56 +0100 Subject: [PATCH 4/6] File changelog addition under new feature --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c4645892..9d629cad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## 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) From 4c10004bd587645ca8aae703e02454223a8bf7d2 Mon Sep 17 00:00:00 2001 From: Mark Stuart Date: Tue, 6 Jul 2021 14:05:24 +0100 Subject: [PATCH 5/6] Fix CI failures --- clojure-mode.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clojure-mode.el b/clojure-mode.el index ea8d559d..05acfafa 100644 --- a/clojure-mode.el +++ b/clojure-mode.el @@ -1771,7 +1771,7 @@ If PATH is nil, use the path to the file backing the current buffer." (sans-underscores (replace-regexp-in-string "_" "-" sans-file-sep))) ;; Drop prefix from ns for projects with structure src/{clj,cljs,cljc} (cl-reduce (lambda (a x) (replace-regexp-in-string x "" a)) - 'clojure-directory-prefixes + clojure-directory-prefixes :initial-value sans-underscores))) (defun clojure-insert-ns-form-at-point () From 2286113c0e782d954f51e767821c27d9c36a7523 Mon Sep 17 00:00:00 2001 From: Mark Stuart Date: Tue, 6 Jul 2021 14:10:26 +0100 Subject: [PATCH 6/6] Address docstring byte-compiler warning --- clojure-mode.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/clojure-mode.el b/clojure-mode.el index 05acfafa..51f347d1 100644 --- a/clojure-mode.el +++ b/clojure-mode.el @@ -198,7 +198,8 @@ Out-of-the box `clojure-mode' understands lein, boot, gradle, (defcustom clojure-directory-prefixes '("\\`clj[scx]?\\.") - "A list of directory prefixes used by `clojure-expected-ns' to formulate correct ns." + "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)