[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/clojure-mode cb0f9a9738: [Fix #625] Fix imenu displaying m
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/clojure-mode cb0f9a9738: [Fix #625] Fix imenu displaying metadata instead of var name (#626) |
Date: |
Fri, 29 Jul 2022 04:58:17 -0400 (EDT) |
branch: elpa/clojure-mode
commit cb0f9a9738724d9a802559e8a28514ce03898ba3
Author: Vadim <47952597+OknoLombarda@users.noreply.github.com>
Commit: GitHub <noreply@github.com>
[Fix #625] Fix imenu displaying metadata instead of var name (#626)
Fix metadata being captured instead of var name in clojure-match-next-def.
Co-authored-by: Vadim Rodionov <rodionov@tuta.io>
---
CHANGELOG.md | 4 ++++
clojure-mode.el | 2 +-
test.clj | 4 ++++
test/clojure-mode-syntax-test.el | 26 +++++++++++++++++++++++++-
4 files changed, 34 insertions(+), 2 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0ee1c8a174..8bccbae85d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,10 @@
## master (unreleased)
+### Bugs fixed
+
+* [#625](https://github.com/clojure-emacs/clojure-mode/issues/625): Fix
metadata being displayed in imenu instead of var name
+
## 5.15.0 (2022-07-19)
### Changes
diff --git a/clojure-mode.el b/clojure-mode.el
index 0f43978634..aa5adf75b8 100644
--- a/clojure-mode.el
+++ b/clojure-mode.el
@@ -757,7 +757,7 @@ Called by `imenu--generic-function'."
(when (char-equal ?^ (char-after def-beg))
;; move to the beginning of next sexp
(progn (forward-sexp) (backward-sexp)))
- (when (or (not (char-equal ?^ (char-after (point))))
+ (when (or (not (char-equal ?^ (char-after def-beg)))
(and (char-equal ?^ (char-after (point))) (= def-beg
(point))))
(setq found? t)
(when (string= deftype "defmethod")
diff --git a/test.clj b/test.clj
index a1d67dfaa3..8ec9b94730 100644
--- a/test.clj
+++ b/test.clj
@@ -227,6 +227,10 @@
;; definitions with metadata only don't cause freezing
(def ^String)
+(defmulti multi (fn [a _] a))
+(defmethod multi :test [_ b] b)
+(defmethod multi :best [_ b] b)
+
(defn ^String reverse
"Returns s with its characters reversed."
{:added "1.2"}
diff --git a/test/clojure-mode-syntax-test.el b/test/clojure-mode-syntax-test.el
index 8ac8938f91..1766e145c5 100644
--- a/test/clojure-mode-syntax-test.el
+++ b/test/clojure-mode-syntax-test.el
@@ -89,7 +89,31 @@
(with-clojure-buffer (concat form some-sexp)
(end-of-buffer)
(clojure-match-next-def)
- (expect (looking-at "(def")))))))
+ (expect (looking-at "(def"))))))
+
+ (it "captures var name"
+ (let ((var-name "some-name"))
+ (dolist (form '("(def %s 1)"
+ "(def %s)"
+ "(def ^:private %s 2)"
+ "(def ^{:private true} %s 3)"))
+ (with-clojure-buffer (format form var-name)
+ (end-of-buffer)
+ (clojure-match-next-def)
+ (cl-destructuring-bind (name-beg name-end) (match-data)
+ (expect (string= var-name (buffer-substring name-beg
name-end))))))))
+
+ (it "captures var name with dispatch value for defmethod"
+ (let ((name "some-name :key"))
+ (dolist (form '("(defmethod %s [a])"
+ "(defmethod ^:meta %s [a])"
+ "(defmethod ^{:meta true} %s [a])"
+ "(defmethod %s)"))
+ (with-clojure-buffer (format form name)
+ (end-of-buffer)
+ (clojure-match-next-def)
+ (cl-destructuring-bind (name-beg name-end) (match-data)
+ (expect (string= name (buffer-substring name-beg name-end)))))))))
(describe "clojure syntax"
(it "handles prefixed symbols"
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [nongnu] elpa/clojure-mode cb0f9a9738: [Fix #625] Fix imenu displaying metadata instead of var name (#626),
ELPA Syncer <=