Skip to content
  • Sponsor clojure-emacs/clojure-mode

  • Notifications You must be signed in to change notification settings
  • Fork 247

Commit 63356ee

Browse files
authoredNov 25, 2024··
Relax regexp for clojure-find-def to recognize more complex metadata on vars (#682)
1 parent 59888c8 commit 63356ee

File tree

3 files changed

+50
-1
lines changed

3 files changed

+50
-1
lines changed
 

‎CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
## master (unreleased)
44

5+
### Bugs fixed
6+
7+
* [cider#3758](https://github.com/clojure-emacs/cider/issues/3758): Improve regexp for clojure-find-def to recognize more complex metadata on vars
8+
59
## 5.19.0 (2024-05-26)
610

711
### Bugs fixed

‎clojure-mode.el

+1-1
Original file line numberDiff line numberDiff line change
@@ -2270,7 +2270,7 @@ renaming a namespace."
22702270
;; Any whitespace
22712271
"[ \r\n\t]*"
22722272
;; Possibly type or metadata
2273-
"\\(?:#?^\\(?:{[^}]*}\\|\\(?:\\sw\\|\\s_\\)+\\)[ \r\n\t]*\\)*"
2273+
"\\(?:#?^\\(?:{[^}]*}+\\|\\(?:\\sw\\|\\s_\\)+\\)[ \r\n\t]*\\)*"
22742274
;; Symbol name
22752275
"\\(\\(?:\\sw\\|\\s_\\)+\\)"))
22762276

‎test/clojure-mode-util-test.el

+45
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,51 @@
331331
{:nested (in|c x)})"
332332
(clojure-toggle-ignore-defun)))
333333

334+
(describe "clojure-find-def"
335+
(it "should recognize def and defn"
336+
(with-clojure-buffer-point
337+
"(def foo 1)|
338+
(defn bar [x y z] z)"
339+
(expect (clojure-find-def) :to-equal '("def" "foo")))
340+
(with-clojure-buffer-point
341+
"(def foo 1)
342+
(defn bar |[x y z] z)"
343+
(expect (clojure-find-def) :to-equal '("defn" "bar")))
344+
(with-clojure-buffer-point
345+
"(def foo 1)
346+
(defn ^:private bar |[x y z] z)"
347+
(expect (clojure-find-def) :to-equal '("defn" "bar")))
348+
(with-clojure-buffer-point
349+
"(defn |^{:doc \"A function\"} foo [] 1)
350+
(defn ^:private bar 2)"
351+
(expect (clojure-find-def) :to-equal '("defn" "foo"))))
352+
(it "should recognize deftest, with or without metadata added to the var"
353+
(with-clojure-buffer-point
354+
"|(deftest ^{:a 1} simple-metadata)
355+
(deftest ^{:a {}} complex-metadata)
356+
(deftest no-metadata)"
357+
(expect (clojure-find-def) :to-equal '("deftest" "simple-metadata")))
358+
(with-clojure-buffer-point
359+
"(deftest ^{:a 1} |simple-metadata)
360+
(deftest ^{:a {}} complex-metadata)
361+
(deftest no-metadata)"
362+
(expect (clojure-find-def) :to-equal '("deftest" "simple-metadata")))
363+
(with-clojure-buffer-point
364+
"(deftest ^{:a 1} simple-metadata)
365+
(deftest ^{:a {}} |complex-metadata)
366+
(deftest no-metadata)"
367+
(expect (clojure-find-def) :to-equal '("deftest" "complex-metadata")))
368+
(with-clojure-buffer-point
369+
"(deftest ^{:a 1} simple-metadata)
370+
(deftest ^{:|a {}} complex-metadata)
371+
(deftest no-metadata)"
372+
(expect (clojure-find-def) :to-equal '("deftest" "complex-metadata")))
373+
(with-clojure-buffer-point
374+
"(deftest ^{:a 1} simple-metadata)
375+
(deftest ^{:a {}} complex-metadata)
376+
(deftest |no-metadata)"
377+
(expect (clojure-find-def) :to-equal '("deftest" "no-metadata")))))
378+
334379
(provide 'clojure-mode-util-test)
335380

336381
;;; clojure-mode-util-test.el ends here

0 commit comments

Comments
 (0)
Please sign in to comment.