[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/treesit-fold 443ba5106a 229/417: feat(ruby): Enhance Ruby
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/treesit-fold 443ba5106a 229/417: feat(ruby): Enhance Ruby parser (#26) |
Date: |
Mon, 1 Jul 2024 10:02:29 -0400 (EDT) |
branch: elpa/treesit-fold
commit 443ba5106ab201e7be507680b734194f2097e8f3
Author: Jen-Chieh Shen <jcs090218@gmail.com>
Commit: GitHub <noreply@github.com>
feat(ruby): Enhance Ruby parser (#26)
* feat(ruby): Add fold range for do_block node
* feat(ruby): support if, elsif, and else
---
ts-fold-parsers.el | 13 +++++++++----
ts-fold.el | 11 ++++++++++-
2 files changed, 19 insertions(+), 5 deletions(-)
diff --git a/ts-fold-parsers.el b/ts-fold-parsers.el
index 5a9cd4cc31..35b4fbb216 100644
--- a/ts-fold-parsers.el
+++ b/ts-fold-parsers.el
@@ -47,7 +47,8 @@
(declare-function ts-fold-range-html "ts-fold.el")
(declare-function ts-fold-range-ocaml "ts-fold.el")
(declare-function ts-fold-range-python "ts-fold.el")
-(declare-function ts-fold-range-ruby "ts-fold.el")
+(declare-function ts-fold-range-ruby-class-def "ts-fold.el")
+(declare-function ts-fold-range-ruby-if "ts-fold.el")
(declare-function ts-fold-range-rust-macro "ts-fold.el")
(declare-function ts-fold-range-elixir "ts-fold.el")
@@ -194,9 +195,13 @@
(defun ts-fold-parsers-ruby ()
"Rule set for Ruby."
- '((class . ts-fold-range-ruby)
- (method . ts-fold-range-ruby)
- (array . ts-fold-range-seq)
+ '((class . ts-fold-range-ruby-class-def)
+ (method . ts-fold-range-ruby-class-def)
+ (array . ts-fold-range-seq)
+ (do . (ts-fold-range-seq 1 -2)) ; match with `end`
+ (do_block . (ts-fold-range-seq 1 -2)) ; match with `end`, in spec file
+ (then . ts-fold-range-ruby-if) ; `if` and `elsif` block
+ (else . (ts-fold-range-ruby-if 4 0)) ; `else` block
(comment
. (lambda (node offset)
(ts-fold-range-line-comment node offset "#")))))
diff --git a/ts-fold.el b/ts-fold.el
index 4a6f509a91..e1655dc615 100644
--- a/ts-fold.el
+++ b/ts-fold.el
@@ -550,7 +550,7 @@ more information."
(end (tsc-node-end-position node)))
(ts-fold--cons-add (cons beg end) offset)))
-(defun ts-fold-range-ruby (node offset)
+(defun ts-fold-range-ruby-class-def (node offset)
"Define fold range for `method' and `class' in Ruby.
For arguments NODE and OFFSET, see function `ts-fold-range-seq' for
@@ -560,6 +560,15 @@ more information."
(tsc-get-child-by-field node :name)))
(beg (tsc-node-end-position named-node))
(end (tsc-node-end-position node)))
+ (ts-fold--cons-add (cons beg (- end 3)) offset)))
+
+(defun ts-fold-range-ruby-if (node offset)
+ "Define fold range for `if' (then), `elsif', and `else' in Ruby.
+
+For arguments NODE and OFFSET, see function `ts-fold-range-seq' for
+more information."
+ (when-let ((beg (tsc-node-start-position node))
+ (end (tsc-node-end-position node)))
(ts-fold--cons-add (cons beg end) offset)))
(defun ts-fold-range-rust-macro (node offset)
- [nongnu] elpa/treesit-fold 757d2fab67 346/417: feat: Add ActionScript support, (continued)
- [nongnu] elpa/treesit-fold 757d2fab67 346/417: feat: Add ActionScript support, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold 0b7eb8fb5b 410/417: typo, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold f66e2b8be9 417/417: perf: Wait for post command to render, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold ca1b5d701d 134/417: Update doc, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold 86c3e73746 135/417: Add html summary parser, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold 20f96511ef 137/417: Update doc, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold 40163da28a 141/417: Update doc, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold f297d8a664 204/417: update, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold 4f5ea58d8c 214/417: Update copyright year, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold 5711d9f6d5 226/417: refactor(parsers): Place it in alphabetic order, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold 443ba5106a 229/417: feat(ruby): Enhance Ruby parser (#26),
ELPA Syncer <=
- [nongnu] elpa/treesit-fold 3b2e70db92 231/417: tests(test.yml): Add workflow_dispatch, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold 0bae1476a4 242/417: chore: Changelog and styles (#38), ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold 6178f3345c 193/417: update ci, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold 095e093737 194/417: Remove unused shell entry, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold ec60327a20 195/417: chore(eask): info, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold 6cfe36ea2f 196/417: fix warnings, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold a81e684298 198/417: Update Eask, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold 46d76ed842 205/417: note, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold dcd5b9fe5c 212/417: Merge pull request #9 from jcs-elpa/docs/tutorial, ELPA Syncer, 2024/07/01
- [nongnu] elpa/treesit-fold 33e3fb561e 219/417: docs: changelog, ELPA Syncer, 2024/07/01