emacs-elpa-diffs
[Top][All Lists]
Advanced

[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"



reply via email to

[Prev in Thread] Current Thread [Next in Thread]