[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/treesit-fold cad8607df0 107/417: Organize parsers
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/treesit-fold cad8607df0 107/417: Organize parsers |
Date: |
Mon, 1 Jul 2024 10:02:16 -0400 (EDT) |
branch: elpa/treesit-fold
commit cad8607df0c9ee2b1729cfebb5bcbd5b5e1fc382
Author: Jen-Chieh Shen <jcs090218@gmail.com>
Commit: Jen-Chieh Shen <jcs090218@gmail.com>
Organize parsers
---
tree-sitter-fold-parsers.el | 15 ++++++++++---
tree-sitter-fold.el | 55 +++++++++++++++++++++++++++------------------
2 files changed, 45 insertions(+), 25 deletions(-)
diff --git a/tree-sitter-fold-parsers.el b/tree-sitter-fold-parsers.el
index 2e56c800b4..24fa3f9258 100644
--- a/tree-sitter-fold-parsers.el
+++ b/tree-sitter-fold-parsers.el
@@ -33,9 +33,12 @@
;; (@* "Externals" )
;;
+(declare-function tree-sitter-fold--multi-line "tree-sitter-fold.el")
+
(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-range-csharp-comment "tree-sitter-fold.el")
(declare-function tree-sitter-fold-range-python "tree-sitter-fold.el")
;;
@@ -63,7 +66,11 @@
(switch_body . tree-sitter-fold-range-seq)
(anonymous_object_creation_expression . tree-sitter-fold-range-seq)
(initializer_expression . tree-sitter-fold-range-seq)
- (comment .
tree-sitter-fold-range-csharp-comment)))
+ (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-css ()
"Rule sets for CSS."
@@ -133,7 +140,9 @@
(field_initializer_list . tree-sitter-fold-range-seq)
(match_block . tree-sitter-fold-range-seq)
(block . tree-sitter-fold-range-seq)
- (block_comment . (tree-sitter-fold-range-seq 1 -1))))
+ (line_comment . (lambda (node offset)
+ (tree-sitter-fold-range-line-comment node
offset "///")))
+ (block_comment . tree-sitter-fold-range-block-comment)))
(defun tree-sitter-fold-parsers-typescript ()
"Rule sets for TypeScript."
diff --git a/tree-sitter-fold.el b/tree-sitter-fold.el
index ae24aad6ec..989db4b260 100644
--- a/tree-sitter-fold.el
+++ b/tree-sitter-fold.el
@@ -87,15 +87,18 @@ FOLDABLE-NODE-TYPE) and return the buffer positions of the
beginning and end of
the fold in a cons cell. See `tree-sitter-fold-range-python' for an example."
:type '(alist :key-type symbol
:value-type (alist :key-type symbol :value-type function))
+ :set (lambda (symbol value)
+ (set-default symbol value)
+ (setq tree-sitter-fold-foldable-node-alist
+ (let (alist)
+ (dolist (item tree-sitter-fold-range-alist)
+ (let ((mode (car item)) nodes)
+ (dolist (rule (cdr item)) (push (car rule) nodes))
+ (push (cons mode nodes) alist)))
+ alist)))
:group 'tree-sitter-fold)
-(defvar tree-sitter-fold-foldable-node-alist
- (let (alist)
- (dolist (item tree-sitter-fold-range-alist)
- (let ((mode (car item)) nodes)
- (dolist (rule (cdr item)) (push (car rule) nodes))
- (push (cons mode nodes) alist)))
- alist)
+(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)).")
@@ -354,24 +357,32 @@ Argument OFFSET can be used to tweak the final beginning
and end position."
(end (1- (tsc-node-end-position node))))
(tree-sitter-fold-util--cons-add (cons beg end) offset)))
-(defun tree-sitter-fold-range-csharp-comment (node offset)
- "Define fold range for C# comment.
+(defun tree-sitter-fold-range-line-comment (node offset prefix)
+ "Define fold range for line comment.
-For arguments NODE and OFFSET, see function `tree-sitter-fold-range-seq'
-for more information."
- (if (tree-sitter-fold--multi-line node)
- (tree-sitter-fold-range-seq node (tree-sitter-fold-util--cons-add '(1 .
-1) offset))
- (when-let* ((first-node (tree-sitter-fold--continuous-node-prefix node
"///" nil))
- (last-node (tree-sitter-fold--continuous-node-prefix node
"///" t))
- (beg (+ (tsc-node-start-position first-node) 3))
- (end (tsc-node-end-position last-node)))
- (tree-sitter-fold-util--cons-add (cons beg end) offset))))
+For arguments NODE and OFFSET, see function `tree-sitter-fold-range-seq' for
+more information.
+
+Argument PREFIX is the comment prefix in string."
+ (when-let* ((first-node (tree-sitter-fold--continuous-node-prefix node
prefix nil))
+ (last-node (tree-sitter-fold--continuous-node-prefix node prefix
t))
+ (prefix-len (length prefix))
+ (beg (+ (tsc-node-start-position first-node) prefix-len))
+ (end (tsc-node-end-position last-node)))
+ (tree-sitter-fold-util--cons-add (cons beg end) offset)))
+
+(defun tree-sitter-fold-range-block-comment (node offset)
+ "Define fold range for block comment.
+
+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-range-python (node offset)
"Return the fold range for `function_definition' and `class_definition'.
-For arguments NODE and OFFSET, see function `tree-sitter-fold-range-seq'
-for more information."
+For arguments NODE and OFFSET, see function `tree-sitter-fold-range-seq' for
+more information."
(let* ((named-node (or (tsc-get-child-by-field node :superclasses)
(tsc-get-child-by-field node :return_type)
(tsc-get-child-by-field node :parameters)
@@ -384,8 +395,8 @@ for more information."
(defun tree-sitter-fold-range-ruby (node offset)
"Define fold range for Ruby.
-For arguments NODE and OFFSET, see function `tree-sitter-fold-range-seq'
-for more information."
+For arguments NODE and OFFSET, see function `tree-sitter-fold-range-seq' for
+more information."
;; TODO: ..
(progn ))
- [nongnu] elpa/treesit-fold b505f0719f 183/417: ci: No more platform specific, (continued)
- [nongnu] elpa/treesit-fold b505f0719f 183/417: ci: No more platform specific, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold e9d26a8e18 186/417: Update Eask, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold 4e59c763c4 187/417: ci: cancel last workflow on push, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold 62667ad992 189/417: Update README.md, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold d6fbca3748 168/417: Update changelog, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold 9fdf72dc20 201/417: docs(README): order contribute section, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold 4a2996eb5e 109/417: Organize, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold 8a5c66d099 110/417: Add support for PHP, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold 0fe507ba03 111/417: Support sharp blocks, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold 91fdf441bf 366/417: chore: Update copyright year, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold cad8607df0 107/417: Organize parsers,
ELPA Syncer <=
- [nongnu] elpa/treesit-fold 1e19f7c159 113/417: Fix compile warnings, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold 9a7b17aec8 208/417: update, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold d8d6fc0558 209/417: update, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold bada0924b6 149/417: Support ruby, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold a137933c2b 153/417: Add screneshot, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold d7af314083 160/417: Done html, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold e286098005 164/417: Support css comment, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold 19a05adc09 167/417: Rename, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold 421809b55c 171/417: Add support evil-toggle-fold, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold d0e235d762 162/417: Fix toc, ELPA Syncer, 2024/07/01