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

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

[nongnu] elpa/treesit-fold 4a2996eb5e 109/417: Organize


From: ELPA Syncer
Subject: [nongnu] elpa/treesit-fold 4a2996eb5e 109/417: Organize
Date: Mon, 1 Jul 2024 10:02:16 -0400 (EDT)

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

    Organize
---
 README.md                   |  2 ++
 tree-sitter-fold-parsers.el | 29 ++++++++++++++++++++++++-----
 tree-sitter-fold.el         | 20 ++++++++++++++------
 3 files changed, 40 insertions(+), 11 deletions(-)

diff --git a/README.md b/README.md
index 7df6e526fa..e349756d85 100644
--- a/README.md
+++ b/README.md
@@ -43,6 +43,7 @@ then in Emacs:
 
 ## :hammer: Supported languages
 
+* Agda (WIP)
 * Bash
 * C / C++ / C# CSS
 * Go
@@ -51,6 +52,7 @@ then in Emacs:
 * Nix
 * Python
 * R / Ruby / Rust
+* Scala / Swift
 * TypeScript / TSX
 
 ## Contribution
diff --git a/tree-sitter-fold-parsers.el b/tree-sitter-fold-parsers.el
index 107d2b3dd0..963ceb8b3c 100644
--- a/tree-sitter-fold-parsers.el
+++ b/tree-sitter-fold-parsers.el
@@ -38,6 +38,7 @@
 (declare-function tree-sitter-fold-range-seq "tree-sitter-fold.el")
 (declare-function tree-sitter-fold-range-line-comment "tree-sitter-fold.el")
 (declare-function tree-sitter-fold-range-block-comment "tree-sitter-fold.el")
+(declare-function tree-sitter-fold-c-like-comment "tree-sitter-fold.el")
 
 (declare-function tree-sitter-fold-range-python "tree-sitter-fold.el")
 
@@ -75,11 +76,7 @@
     (switch_body                          . tree-sitter-fold-range-seq)
     (anonymous_object_creation_expression . tree-sitter-fold-range-seq)
     (initializer_expression               . tree-sitter-fold-range-seq)
-    (comment
-     . (lambda (node offset)
-         (if (tree-sitter-fold--multi-line node)
-             (tree-sitter-fold-range-block-comment node offset)
-           (tree-sitter-fold-range-line-comment node offset "///"))))))
+    (comment                              . tree-sitter-fold-c-like-comment)))
 
 (defun tree-sitter-fold-parsers-css ()
   "Rule sets for CSS."
@@ -153,6 +150,28 @@
                                 (tree-sitter-fold-range-line-comment node 
offset "///")))
     (block_comment          . tree-sitter-fold-range-block-comment)))
 
+(defun tree-sitter-fold-parsers-scala ()
+  "Rule sets for Scala."
+  '((import_selectors . tree-sitter-fold-range-seq)
+    (template_body    . tree-sitter-fold-range-seq)
+    (block            . tree-sitter-fold-range-seq)
+    (comment
+     . (lambda (node offset)
+         (if (tree-sitter-fold--multi-line node)
+             (tree-sitter-fold-range-block-comment node offset)
+           (tree-sitter-fold-range-line-comment node offset "///"))))))
+
+(defun tree-sitter-fold-parsers-swift ()
+  "Rule sets for Swift."
+  '((switch_statement      . tree-sitter-fold-range-seq)
+    (function_declaration  . tree-sitter-fold-range-seq)
+    (enum_declaration      . tree-sitter-fold-range-seq)
+    (struct_declaration    . tree-sitter-fold-range-seq)
+    (class_declaration     . tree-sitter-fold-range-seq)
+    (protocol_declaration  . tree-sitter-fold-range-seq)
+    (extension_declaration . tree-sitter-fold-range-seq)
+    (comment               . tree-sitter-fold-c-like-comment)))
+
 (defun tree-sitter-fold-parsers-typescript ()
   "Rule sets for TypeScript."
   (append (tree-sitter-fold-parsers-javascript)))
diff --git a/tree-sitter-fold.el b/tree-sitter-fold.el
index f826119cbf..3d461218c7 100644
--- a/tree-sitter-fold.el
+++ b/tree-sitter-fold.el
@@ -56,8 +56,14 @@
   :group 'tree-sitter
   :prefix "tree-sitter-fold-")
 
+(defvar tree-sitter-fold-foldable-node-alist nil
+  "Collect a list of foldable node from variable 
`tree-sitter-fold-range-alist'.
+
+The alist is in form of (major-mode . (foldable-node-type)).")
+
 (defcustom tree-sitter-fold-range-alist
   `((agda-mode       . ,(tree-sitter-fold-parsers-agda))
+    (sh-mode         . ,(tree-sitter-fold-parsers-bash))
     (c-mode          . ,(tree-sitter-fold-parsers-c))
     (c++-mode        . ,(tree-sitter-fold-parsers-c++))
     (csharp-mode     . ,(tree-sitter-fold-parsers-csharp))
@@ -79,7 +85,8 @@
     (ruby-mode       . ,(tree-sitter-fold-parsers-ruby))
     (rust-mode       . ,(tree-sitter-fold-parsers-rust))
     (rustic-mode     . ,(tree-sitter-fold-parsers-rust))
-    (sh-mode         . ,(tree-sitter-fold-parsers-bash))
+    (scala-mode      . ,(tree-sitter-fold-parsers-scala))
+    (swift-mode      . ,(tree-sitter-fold-parsers-swift))
     (typescript-mode . ,(tree-sitter-fold-parsers-typescript)))
   "An alist of (major-mode . (foldable-node-type . function)).
 
@@ -100,11 +107,6 @@ the fold in a cons cell.  See 
`tree-sitter-fold-range-python' for an example."
                  alist)))
   :group 'tree-sitter-fold)
 
-(defvar tree-sitter-fold-foldable-node-alist nil
-  "Collect a list of foldable node from variable 
`tree-sitter-fold-range-alist'.
-
-The alist is in form of (major-mode . (foldable-node-type)).")
-
 (defcustom tree-sitter-fold-mode-hook nil
   "Hook to run when enabling `tree-sitter-fold-mode`."
   :type 'hook
@@ -380,6 +382,12 @@ For arguments NODE and OFFSET, see function 
`tree-sitter-fold-range-seq' for
 more information."
   (tree-sitter-fold-range-seq node (tree-sitter-fold-util--cons-add '(1 . -1) 
offset)))
 
+(defun tree-sitter-fold-c-like-comment (node offset)
+  "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 "///")))
+
 (defun tree-sitter-fold-range-python (node offset)
   "Return the fold range for `function_definition' and `class_definition'.
 



reply via email to

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