@@ -520,6 +520,10 @@ with the markdown_inline grammar."
520
520
" Return non-nil if NODE is a Clojure keyword."
521
521
(string-equal " kwd_lit" (treesit-node-type node)))
522
522
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
+
523
527
(defun clojure-ts--named-node-text (node )
524
528
" Gets the name of a symbol or keyword NODE.
525
529
This does not include the NODE's namespace."
@@ -530,6 +534,11 @@ This does not include the NODE's namespace."
530
534
(and (clojure-ts--symbol-node-p node)
531
535
(string-equal expected-symbol-name (clojure-ts--named-node-text node))))
532
536
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
+
533
542
(defun clojure-ts--symbol-matches-p (symbol-regexp node )
534
543
" Return non-nil if NODE is a symbol that matches SYMBOL-REGEXP."
535
544
(and (clojure-ts--symbol-node-p node)
@@ -550,7 +559,7 @@ like \"defn\".
550
559
See `clojure-ts--definition-node-p' when an exact match is possible."
551
560
(and
552
561
(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 ))
554
563
(child-txt (clojure-ts--named-node-text child)))
555
564
(and (clojure-ts--symbol-node-p child)
556
565
(string-match-p definition-type-regexp child-txt)))))
@@ -565,8 +574,8 @@ that a node is a definition is intended to be done elsewhere.
565
574
566
575
Can be called directly, but intended for use as `treesit-defun-name-function' ."
567
576
(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 )))
570
579
(when (clojure-ts--symbol-node-p sym)
571
580
; ; Extracts ns and name, and recreates the full var name.
572
581
; ; We can't just get the node-text of the full symbol because
0 commit comments