branch: elpa/treesit-fold
commit eb714e2c218a23a10eaa51aae3ddbf1b5105bdc1
Author: Akira Komamura <[email protected]>
Commit: GitHub <[email protected]>
feat: Add Gleam support (#8)
---
treesit-fold-parsers.el | 11 +++++++++++
treesit-fold.el | 13 +++++++++++++
2 files changed, 24 insertions(+)
diff --git a/treesit-fold-parsers.el b/treesit-fold-parsers.el
index 02bf77833a..9beea1a971 100644
--- a/treesit-fold-parsers.el
+++ b/treesit-fold-parsers.el
@@ -264,6 +264,17 @@
. (lambda (node offset)
(treesit-fold-range-line-comment node offset "#")))))
+(defun treesit-fold-parsers-gleam ()
+ "Rules set for Gleam."
+ '((function . treesit-fold-range-gleam)
+ (type_definition . treesit-fold-range-gleam)
+ (module_comment
+ . (lambda (node offset)
+ (treesit-fold-range-line-comment node offset "////")))
+ (statement_comment
+ . (lambda (node offset)
+ (treesit-fold-range-line-comment node offset "///")))))
+
(defun treesit-fold-parsers-glsl ()
"Rule set for GLSL."
'((field_declaration_list . treesit-fold-range-seq)
diff --git a/treesit-fold.el b/treesit-fold.el
index c75adafa61..565eb2835b 100644
--- a/treesit-fold.el
+++ b/treesit-fold.el
@@ -96,6 +96,7 @@
(fish-mode . ,(treesit-fold-parsers-fish))
(gdscript-mode . ,(treesit-fold-parsers-gdscript))
(gdscript-ts-mode . ,(treesit-fold-parsers-gdscript))
+ (gleam-ts-mode . ,(treesit-fold-parsers-gleam))
(glsl-mode . ,(treesit-fold-parsers-glsl))
(go-mode . ,(treesit-fold-parsers-go))
(go-ts-mode . ,(treesit-fold-parsers-go))
@@ -880,6 +881,18 @@ more information."
(end (1- end)))
(treesit-fold--cons-add (cons beg end) offset)))
+(defun treesit-fold-range-gleam (node offset)
+ "Return the fold range for `function' `type_definition' NODE in Gleam.
+
+For arguments NODE and OFFSET, see function `treesit-fold-range-seq' for
+more information."
+ (when-let* ((open-bracket (car (treesit-fold-find-children node "{")))
+ (beg (treesit-node-start open-bracket))
+ (beg (1+ beg))
+ (end (treesit-node-end node))
+ (end (1- end)))
+ (treesit-fold--cons-add (cons beg end) offset)))
+
(defun treesit-fold-range-groovy-block (node offset)
"Define fold range for `block' in Groovy.