branch: elpa/treesit-fold
commit ec7e5b02e5d0f0902e19a42e5af4801817598fa3
Author: Jen-Chieh Shen <[email protected]>
Commit: GitHub <[email protected]>
feat: Support Git config (#40)
* feat: Support Git config
* docs: changelog
---
CHANGELOG.md | 1 +
treesit-fold-parsers.el | 8 ++++++++
treesit-fold-summary.el | 1 +
treesit-fold.el | 13 +++++++++++++
4 files changed, 23 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 273de45bc02..83cf333a5b1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -17,6 +17,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for
recommendations on how
* feat: Add `Nim` support
([`f5f3cd2`](../../commit/f5f3cd2d95b6e122c69f9f70391c35960f3c1f16))
* feat: Add `F#` support
([`35b6201`](../../commit/35b62011cb8ae2f85adb00080a0a9e040eee5c87))
* feat: Add `Fennel` support ([#39](../../pull/39))
+* feat: Add `Git config` support ([#40](../../pull/40))
## 0.2.0
> Released Feb 12, 2025
diff --git a/treesit-fold-parsers.el b/treesit-fold-parsers.el
index 3513e2eb17d..64016a5229f 100644
--- a/treesit-fold-parsers.el
+++ b/treesit-fold-parsers.el
@@ -55,6 +55,7 @@
(declare-function treesit-fold-range-fish-if "treesit-fold.el")
(declare-function treesit-fold-range-fish-case "treesit-fold.el")
(declare-function treesit-fold-range-fsharp-module-defn "treesit-fold.el")
+(declare-function treesit-fold-range-git-config-section "treesit-fold.el")
(declare-function treesit-fold-range-fsharp-record-type-defn "treesit-fold.el")
(declare-function treesit-fold-range-haskell-function "treesit-fold.el")
(declare-function treesit-fold-range-html "treesit-fold.el")
@@ -301,6 +302,13 @@
. (lambda (node offset)
(treesit-fold-range-line-comment node offset "#")))))
+(defun treesit-fold-parsers-git-config ()
+ "Rule set for Git config."
+ '((section . treesit-fold-range-git-config-section)
+ (comment
+ . (lambda (node offset)
+ (treesit-fold-range-line-comment node offset "#")))))
+
(defun treesit-fold-parsers-gleam ()
"Rules set for Gleam."
'((function . treesit-fold-range-gleam)
diff --git a/treesit-fold-summary.el b/treesit-fold-summary.el
index 7e9df6e9294..bb7dc6c86b2 100644
--- a/treesit-fold-summary.el
+++ b/treesit-fold-summary.el
@@ -230,6 +230,7 @@ type of content by checking the word boundary's existence."
(fish-mode . treesit-fold-summary-javadoc)
(fsharp-mode . treesit-fold-summary-ocaml)
(gdscript-mode . treesit-fold-summary-ruby-doc)
+ (gitconfig-mode . treesit-fold-summary-ruby-doc)
(gdscript-ts-mode . treesit-fold-summary-ruby-doc)
(glsl-mode . treesit-fold-summary-c)
(go-mode . treesit-fold-summary-go)
diff --git a/treesit-fold.el b/treesit-fold.el
index 35fa725cf9d..4c19ab2ca05 100644
--- a/treesit-fold.el
+++ b/treesit-fold.el
@@ -102,6 +102,7 @@
(fsharp-ts-mode . ,(treesit-fold-parsers-fsharp))
(gdscript-mode . ,(treesit-fold-parsers-gdscript))
(gdscript-ts-mode . ,(treesit-fold-parsers-gdscript))
+ (gitconfig-mode . ,(treesit-fold-parsers-git-config))
(gleam-ts-mode . ,(treesit-fold-parsers-gleam))
(glsl-mode . ,(treesit-fold-parsers-glsl))
(go-mode . ,(treesit-fold-parsers-go))
@@ -966,6 +967,18 @@ more information."
(end (1- (treesit-node-end node))))
(treesit-fold--cons-add (cons beg end) offset)))
+(defun treesit-fold-range-git-config-section (node offset)
+ "Return the fold range for `section' in YAML.
+
+For arguments NODE and OFFSET, see function `treesit-fold-range-seq' for
+more information."
+ (when-let* ((first (car (treesit-fold-find-children node "section_header")))
+ (beg (treesit-node-end first))
+ (end (treesit-node-end node)))
+ (when treesit-fold-on-next-line
+ (setq end (treesit-fold--last-eol 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.