Skip to content

Commit 702af2e

Browse files
committed
Fix imenu entries for def/defn having meta data
1 parent 3b2e674 commit 702af2e

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

clojure-ts-mode.el

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -536,6 +536,12 @@ This does not include the NODE's namespace."
536536
(and (clojure-ts--symbol-node-p node)
537537
(string-equal expected-symbol-name (clojure-ts--named-node-text node))))
538538

539+
(defun clojure-ts--node-child-skip-meta (node n)
540+
"Returns the Nth child of node like treesit-node-child, but skips the optional meta node at pos 0."
541+
(let* ((first-child (treesit-node-child node 0 t))
542+
(n1 (if (clojure-ts--meta-node-p first-child) (1+ n) n)))
543+
(treesit-node-child node n1 t)))
544+
539545
(defun clojure-ts--symbol-matches-p (symbol-regexp node)
540546
"Return non-nil if NODE is a symbol that matches SYMBOL-REGEXP."
541547
(and (clojure-ts--symbol-node-p node)
@@ -556,7 +562,7 @@ like \"defn\".
556562
See `clojure-ts--definition-node-p' when an exact match is possible."
557563
(and
558564
(clojure-ts--list-node-p node)
559-
(let* ((child (treesit-node-child node 0 t))
565+
(let* ((child (clojure-ts--node-child-skip-meta node 0))
560566
(child-txt (clojure-ts--named-node-text child)))
561567
(and (clojure-ts--symbol-node-p child)
562568
(string-match-p definition-type-regexp child-txt)))))
@@ -571,8 +577,8 @@ that a node is a definition is intended to be done elsewhere.
571577
572578
Can be called directly, but intended for use as `treesit-defun-name-function'."
573579
(when (and (clojure-ts--list-node-p node)
574-
(clojure-ts--symbol-node-p (treesit-node-child node 0 t)))
575-
(let ((sym (treesit-node-child node 1 t)))
580+
(clojure-ts--symbol-node-p (clojure-ts--node-child-skip-meta node 0)))
581+
(let ((sym (clojure-ts--node-child-skip-meta node 1)))
576582
(when (clojure-ts--symbol-node-p sym)
577583
;; Extracts ns and name, and recreates the full var name.
578584
;; We can't just get the node-text of the full symbol because

0 commit comments

Comments
 (0)