branch: elpa/clojure-mode
commit 2944b36f823ea85e8f2e2484bfc2b123e00887fd
Author: Bozhidar Batsov <[email protected]>
Commit: Bozhidar Batsov <[email protected]>
Fix clojure-find-def failing on symbols with special characters
Use end-of-symbol (\_>) instead of end-of-word (\>) in
clojure-def-type-and-name-regex so that def forms like defn+ are
recognized correctly.
Closes #637
---
CHANGELOG.md | 1 +
clojure-mode.el | 2 +-
test/clojure-mode-util-test.el | 6 +++++-
3 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1115b8dcfc..d113e5795f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,7 @@
* [#658](https://github.com/clojure-emacs/clojure-mode/issues/658): Fix
`clojure-mode-version` returning `nil`.
* [#686](https://github.com/clojure-emacs/clojure-mode/issues/686): Fix
`clojure-find-def` failing when comments appear between the `def` form and the
symbol name.
+* [#637](https://github.com/clojure-emacs/clojure-mode/issues/637): Fix
`clojure-find-def` failing on symbols containing special characters (e.g.
`defn+`).
### Changes
diff --git a/clojure-mode.el b/clojure-mode.el
index b55bdf3d17..8584c77cfd 100644
--- a/clojure-mode.el
+++ b/clojure-mode.el
@@ -2251,7 +2251,7 @@ renaming a namespace."
(let ((ws-or-comment "\\(?:[ \r\n\t]\\|;[^\n]*\n\\)*"))
(concat "(\\(?:\\(?:\\sw\\|\\s_\\)+/\\)?"
;; Declaration
- "\\(def\\(?:\\sw\\|\\s_\\)*\\(?:-\\|\\>\\)\\)"
+ "\\(def\\(?:\\sw\\|\\s_\\)*\\(?:-\\|\\_>\\)\\)"
;; Any whitespace or comments
ws-or-comment
;; Possibly type or metadata
diff --git a/test/clojure-mode-util-test.el b/test/clojure-mode-util-test.el
index 3c57e332c8..2b30cf3665 100644
--- a/test/clojure-mode-util-test.el
+++ b/test/clojure-mode-util-test.el
@@ -359,7 +359,11 @@
(with-clojure-buffer-point
"(defn |^{:doc \"A function\"} foo [] 1)
(defn ^:private bar 2)"
- (expect (clojure-find-def) :to-equal '("defn" "foo"))))
+ (expect (clojure-find-def) :to-equal '("defn" "foo")))
+ (with-clojure-buffer-point
+ "(defn+ |my-special-fn []
+ (body))"
+ (expect (clojure-find-def) :to-equal '("defn+" "my-special-fn"))))
(it "should recognize deftest, with or without metadata added to the var"
(with-clojure-buffer-point
"|(deftest ^{:a 1} simple-metadata)