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

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

[nongnu] elpa/treesit-fold 4ef65016fd 396/417: fix: Respect same line fo


From: ELPA Syncer
Subject: [nongnu] elpa/treesit-fold 4ef65016fd 396/417: fix: Respect same line folding from close all
Date: Mon, 1 Jul 2024 10:03:09 -0400 (EDT)

branch: elpa/treesit-fold
commit 4ef65016fdfdc6d45567ac62bf25814b07a8cad7
Author: JenChieh <jcs090218@gmail.com>
Commit: JenChieh <jcs090218@gmail.com>

    fix: Respect same line folding from close all
---
 treesit-fold.el | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/treesit-fold.el b/treesit-fold.el
index 9349f07d6c..29f89e5f59 100644
--- a/treesit-fold.el
+++ b/treesit-fold.el
@@ -303,12 +303,16 @@ Return nil if there is no fold to be made."
           ((listp fold-func) (funcall (nth 0 fold-func) node (cons (nth 1 
fold-func) (nth 2 fold-func))))
           (t (user-error "Bad folding function for node")))))
 
+(defun treesit-fold--node-range-on-same-line (node)
+  "Return non-nil when NODE range is on the same line."
+  (let ((range (treesit-fold--get-fold-range node)))
+    (or (not range)                                  ; Range not defined, 
continue.
+        (treesit-fold--range-on-same-line range))))  ; On same line, continue.
+
 (defun treesit-fold--non-foldable-node-p (node mode-ranges)
   "Return non-nil if NODE is a non-foldable in MODE-RANGES."
   (or (not (alist-get (tsc-node-type node) mode-ranges))  ; Not registered, 
continue.
-      (let ((range (treesit-fold--get-fold-range node)))
-        (or (not range)                                   ; Range not defined, 
continue.
-            (treesit-fold--range-on-same-line range)))))       ; On same line, 
continue.
+      (treesit-fold--node-range-on-same-line node)))      ; On same line, 
continue.
 
 (defun treesit-fold--foldable-node-at-pos (&optional pos)
   "Return the smallest foldable node at POS.  If POS is nil, use `point'.
@@ -456,7 +460,11 @@ If the current node is not folded or not foldable, do 
nothing."
                                    (alist-get major-mode 
treesit-fold-range-alist)
                                    'vector))
              (query (tsc-make-query tree-sitter-language patterns)))
-        (setq nodes (tsc-query-captures query node #'ignore))
+        (setq nodes (tsc-query-captures query node #'ignore)
+              nodes (cl-remove-if (lambda (node)
+                                    ;; Removed if on same line
+                                    (treesit-fold--node-range-on-same-line 
(cdr node)))
+                                  nodes))
         (thread-last nodes
                      (mapcar #'cdr)
                      (mapc #'treesit-fold-close)))



reply via email to

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