emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/treesit-fold b3faaaa40d 015/417: support folding nix funct


From: ELPA Syncer
Subject: [nongnu] elpa/treesit-fold b3faaaa40d 015/417: support folding nix functions
Date: Mon, 1 Jul 2024 10:02:05 -0400 (EDT)

branch: elpa/treesit-fold
commit b3faaaa40d5b2f243c4ea7117d0d57554ddab6bb
Author: Junyi Hou <junyi.yi.hou@gmail.com>
Commit: Junyi Hou <junyi.yi.hou@gmail.com>

    support folding nix functions
---
 tree-sitter-fold.el | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/tree-sitter-fold.el b/tree-sitter-fold.el
index 91d065f5d8..b012f9ae38 100644
--- a/tree-sitter-fold.el
+++ b/tree-sitter-fold.el
@@ -41,7 +41,8 @@
   '((python-mode . ((function_definition . tree-sitter-fold-range-python)
                     (class_definition . tree-sitter-fold-range-python)))
     (ess-r-mode . ((brace_list . tree-sitter-fold-range-r)))
-    (nix-mode . ((attrset . tree-sitter-fold-range-nix))))
+    (nix-mode . ((attrset . tree-sitter-fold-range-nix-attrset)
+                 (function . tree-sitter-fold-range-nix-function))))
   "An alist of (major-mode . (foldable-node-type . function)).
 FUNCTION is used to determine where the beginning and end for 
FOLDABLE-NODE-TYPE
 in MAJOR-MODE.  It should take a single argument (the syntax node with type
@@ -239,12 +240,20 @@ If the current syntax node is not foldable, do nothing."
         (end (1- (tsc-node-end-position node))))
     (cons beg end)))
 
-(defun tree-sitter-fold-range-nix (node)
+(defun tree-sitter-fold-range-nix-attrset (node)
   "Return the fold range for `attrset' NODE in Nix express language."
   (let ((beg (tsc-node-end-position (tsc-get-nth-child node 0)))
         (end (1- (tsc-node-end-position node))))
     (cons beg end)))
 
+(defun tree-sitter-fold-range-nix-function (node)
+  "Return the fold range for `function' NODE in Nix express language."
+  (let ((beg (thread-first node
+               (tsc-get-child-by-field :formals)
+               (tsc-get-next-sibling)
+               (tsc-node-end-position)))
+        (end (tsc-node-end-position node)))
+    (cons beg end)))
 
 
 (provide 'tree-sitter-fold)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]