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.
 

Reply via email to