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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/treesit-fold e25ece59b5 114/417: Add rust macro support


From: ELPA Syncer
Subject: [nongnu] elpa/treesit-fold e25ece59b5 114/417: Add rust macro support
Date: Mon, 1 Jul 2024 10:02:17 -0400 (EDT)

branch: elpa/treesit-fold
commit e25ece59b5a7c9b2cdc904c7e9f8bfbdbaeb430a
Author: Jen-Chieh <jcs090218@gmail.com>
Commit: Jen-Chieh <jcs090218@gmail.com>

    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



reply via email to

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