branch: elpa/treesit-fold
commit e25ece59b5a7c9b2cdc904c7e9f8bfbdbaeb430a
Author: Jen-Chieh <[email protected]>
Commit: Jen-Chieh <[email protected]>
Add rust macro support
---
tree-sitter-fold-parsers.el | 2 ++
tree-sitter-fold.el | 14 ++++++++++++++
2 files changed, 16 insertions(+)
diff --git a/tree-sitter-fold-parsers.el b/tree-sitter-fold-parsers.el
index 4ef34fee1b..bcb4b33acf 100644
--- a/tree-sitter-fold-parsers.el
+++ b/tree-sitter-fold-parsers.el
@@ -41,6 +41,7 @@
(declare-function tree-sitter-fold-c-like-comment "tree-sitter-fold.el")
(declare-function tree-sitter-fold-range-python "tree-sitter-fold.el")
+(declare-function tree-sitter-fold-range-rust-macro "tree-sitter-fold.el")
;;
;; (@* "Parsers" )
@@ -158,6 +159,7 @@
(use_list . tree-sitter-fold-range-seq)
(field_initializer_list . tree-sitter-fold-range-seq)
(match_block . tree-sitter-fold-range-seq)
+ (macro_definition . (tree-sitter-fold-range-rust-macro 1 -1))
(block . tree-sitter-fold-range-seq)
(line_comment . (lambda (node offset)
(tree-sitter-fold-range-line-comment node
offset "///")))
diff --git a/tree-sitter-fold.el b/tree-sitter-fold.el
index 286c364d00..446427aa6b 100644
--- a/tree-sitter-fold.el
+++ b/tree-sitter-fold.el
@@ -417,5 +417,19 @@ more information."
;; TODO: ..
(progn ))
+(defun tree-sitter-fold-range-rust-macro (node offset)
+ "Return the fold range for `macro_definition' NODE in Rust.
+
+For arguments NODE and OFFSET, see function `tree-sitter-fold-range-seq' for
+more information."
+ (let* ((children (tsc-count-children node))
+ (result nil)
+ (last_bracket (tsc-get-nth-child node (- children 1)))
+ (first_bracket (tsc-get-nth-child node 2)))
+ (setq result (cons
+ (tsc-node-start-position first_bracket)
+ (+ 1 (tsc-node-start-position last_bracket))))
+ (tree-sitter-fold-util--cons-add result offset)))
+
(provide 'tree-sitter-fold)
;;; tree-sitter-fold.el ends here