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

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

[nongnu] elpa/treesit-fold 0dc7e5c563 120/417: Fix prefix


From: ELPA Syncer
Subject: [nongnu] elpa/treesit-fold 0dc7e5c563 120/417: Fix prefix
Date: Mon, 1 Jul 2024 10:02:17 -0400 (EDT)

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

    Fix prefix
---
 tree-sitter-fold-parsers.el |  4 +++-
 tree-sitter-fold.el         | 42 +++++++++++++++++++++++++++---------------
 2 files changed, 30 insertions(+), 16 deletions(-)

diff --git a/tree-sitter-fold-parsers.el b/tree-sitter-fold-parsers.el
index 435572dc90..e6c7b6b953 100644
--- a/tree-sitter-fold-parsers.el
+++ b/tree-sitter-fold-parsers.el
@@ -42,6 +42,7 @@
 
 (declare-function tree-sitter-fold-range-c-preproc-ifdef "tree-sitter-fold.el")
 (declare-function tree-sitter-fold-range-c-preproc-if "tree-sitter-fold.el")
+(declare-function tree-sitter-fold-range-c-preproc-elif "tree-sitter-fold.el")
 (declare-function tree-sitter-fold-range-c-preproc-else "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")
@@ -67,8 +68,9 @@
     (field_declaration_list . tree-sitter-fold-range-seq)
     (preproc_if             . tree-sitter-fold-range-c-preproc-if)
     (preproc_ifdef          . tree-sitter-fold-range-c-preproc-ifdef)
+    (preproc_elif           . tree-sitter-fold-range-c-preproc-elif)
     (preproc_else           . tree-sitter-fold-range-c-preproc-else)
-    (comment                . (tree-sitter-fold-range-seq 1 -1))))
+    (comment                . tree-sitter-fold-c-like-comment)))
 
 (defun tree-sitter-fold-parsers-c++ ()
   "Rule sets for C++."
diff --git a/tree-sitter-fold.el b/tree-sitter-fold.el
index fc2b6253a6..cbd0983c76 100644
--- a/tree-sitter-fold.el
+++ b/tree-sitter-fold.el
@@ -404,36 +404,48 @@ more information."
   "Define fold range for C-like comemnt."
   (if (tree-sitter-fold--multi-line node)
       (tree-sitter-fold-range-block-comment node offset)
-    (tree-sitter-fold-range-line-comment node offset "///")))
+    (if (string-prefix-p "///" (tsc-node-text node))
+        (tree-sitter-fold-range-line-comment node offset "///")
+      (tree-sitter-fold-range-line-comment node offset "//"))))
 
 ;;
 ;; (@* "Languages" )
 ;;
 
 (defun tree-sitter-fold-range-c-preproc-if (node offset)
-  ""
-  (when-let* ((named-node (tsc-get-child-by-field node :condition))
-              (beg (tsc-node-end-position named-node))
-              (next (or (tree-sitter-fold--get-node-by-text node "#elif" t)
-                        (tree-sitter-fold--get-node-by-text node "#else" t)
-                        (tree-sitter-fold--get-node-by-text node "#endif" t)))
-              (end (1- (tsc-node-start-position next))))
+  "Define fold range for `if' preprocessor."
+  (let* ((named-node (tsc-get-child-by-field node :condition))
+         (next (or (tree-sitter-fold--get-node-by-text named-node "#elif" t)
+                   (tree-sitter-fold--get-node-by-text named-node "#else" t)
+                   (tree-sitter-fold--get-node-by-text named-node "#endif" t)))
+         (beg (tsc-node-end-position named-node))
+         (end (1- (tsc-node-start-position next))))
     (tree-sitter-fold-util--cons-add (cons beg end) offset)))
 
 (defun tree-sitter-fold-range-c-preproc-ifdef (node offset)
-  ""
+  "Define fold range for `ifdef' and `ifndef' preprocessor."
   (when-let* ((named-node (tsc-get-child-by-field node :name))
+              (next (or (tree-sitter-fold--get-node-by-text named-node "#elif" 
t)
+                        (tree-sitter-fold--get-node-by-text named-node "#else" 
t)
+                        (tree-sitter-fold--get-node-by-text named-node 
"#endif" t)))
               (beg (tsc-node-end-position named-node))
-              (next (or (tree-sitter-fold--get-node-by-text node "#elif" t)
-                        (tree-sitter-fold--get-node-by-text node "#else" t)
-                        (tree-sitter-fold--get-node-by-text node "#endif" t)))
+              (end (1- (tsc-node-start-position next))))
+    (tree-sitter-fold-util--cons-add (cons beg end) offset)))
+
+(defun tree-sitter-fold-range-c-preproc-elif (node offset)
+  "Define fold range for `elif' preprocessor."
+  (when-let* ((named-node (tsc-get-child-by-field node :condition))
+              (next (or (tree-sitter-fold--get-node-by-text named-node "#elif" 
t)
+                        (tree-sitter-fold--get-node-by-text named-node "#else" 
t)
+                        (tree-sitter-fold--get-node-by-text named-node 
"#endif" t)))
+              (beg (tsc-node-end-position node))
               (end (1- (tsc-node-start-position next))))
     (tree-sitter-fold-util--cons-add (cons beg end) offset)))
 
 (defun tree-sitter-fold-range-c-preproc-else (node offset)
-  ""
-  (when-let* ((beg (tsc-node-end-position node))
-              (next (tree-sitter-fold--get-node-by-text node "#endif" t))
+  "Define fold range for `else' preprocessor."
+  (when-let* ((next (tree-sitter-fold--get-node-by-text node "#endif" t))
+              (beg (tsc-node-end-position node))
               (end (1- (tsc-node-start-position next))))
     (tree-sitter-fold-util--cons-add (cons beg end) offset)))
 



reply via email to

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