@@ -520,6 +520,10 @@ with the markdown_inline grammar."
520520 " Return non-nil if NODE is a Clojure keyword."
521521 (string-equal " kwd_lit" (treesit-node-type node)))
522522
523+ (defun clojure-ts--metadata-node-p (node )
524+ " Return non-nil if NODE is a Clojure metadata node."
525+ (string-equal " meta_lit" (treesit-node-type node)))
526+
523527(defun clojure-ts--named-node-text (node )
524528 " Gets the name of a symbol or keyword NODE.
525529This does not include the NODE's namespace."
@@ -530,6 +534,11 @@ This does not include the NODE's namespace."
530534 (and (clojure-ts--symbol-node-p node)
531535 (string-equal expected-symbol-name (clojure-ts--named-node-text node))))
532536
537+ (defun clojure-ts--node-child-skip-metadata (node n )
538+ " Return the Nth child of NODE like `treesit-node-child`, skipping the optional metadata node at pos 0 if present."
539+ (let ((first-child (treesit-node-child node 0 t )))
540+ (treesit-node-child node (if (clojure-ts--metadata-node-p first-child) (1+ n) n) t )))
541+
533542(defun clojure-ts--symbol-matches-p (symbol-regexp node )
534543 " Return non-nil if NODE is a symbol that matches SYMBOL-REGEXP."
535544 (and (clojure-ts--symbol-node-p node)
@@ -550,7 +559,7 @@ like \"defn\".
550559See `clojure-ts--definition-node-p' when an exact match is possible."
551560 (and
552561 (clojure-ts--list-node-p node)
553- (let* ((child (treesit- node-child node 0 t ))
562+ (let* ((child (clojure-ts-- node-child-skip-metadata node 0 ))
554563 (child-txt (clojure-ts--named-node-text child)))
555564 (and (clojure-ts--symbol-node-p child)
556565 (string-match-p definition-type-regexp child-txt)))))
@@ -565,8 +574,8 @@ that a node is a definition is intended to be done elsewhere.
565574
566575Can be called directly, but intended for use as `treesit-defun-name-function' ."
567576 (when (and (clojure-ts--list-node-p node)
568- (clojure-ts--symbol-node-p (treesit- node-child node 0 t )))
569- (let ((sym (treesit- node-child node 1 t )))
577+ (clojure-ts--symbol-node-p (clojure-ts-- node-child-skip-metadata node 0 )))
578+ (let ((sym (clojure-ts-- node-child-skip-metadata node 1 )))
570579 (when (clojure-ts--symbol-node-p sym)
571580 ; ; Extracts ns and name, and recreates the full var name.
572581 ; ; We can't just get the node-text of the full symbol because
0 commit comments