emacs-diffs
[Top][All Lists]
Advanced

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

master be6de56906f: Use treesit-node-match-p in treesit-parent-until/whi


From: Yuan Fu
Subject: master be6de56906f: Use treesit-node-match-p in treesit-parent-until/while
Date: Sun, 4 Feb 2024 23:14:30 -0500 (EST)

branch: master
commit be6de56906f0d1c09a0fad4f5165d864dddbc3ee
Author: Yuan Fu <casouri@gmail.com>
Commit: Yuan Fu <casouri@gmail.com>

    Use treesit-node-match-p in treesit-parent-until/while
    
    * lisp/treesit.el (treesit-parent-until): Use treesit-node-match-p.
    (treesit-parent-while): Update docstring.
    * doc/lispref/parsing.texi (Retrieving Nodes): Update docstring.
---
 doc/lispref/parsing.texi | 17 ++++++++++-------
 lisp/treesit.el          | 12 +++++-------
 2 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/doc/lispref/parsing.texi b/doc/lispref/parsing.texi
index 5d79c4b27f4..ac11f88ae4d 100644
--- a/doc/lispref/parsing.texi
+++ b/doc/lispref/parsing.texi
@@ -916,8 +916,10 @@ nodes.
 
 @defun treesit-parent-until node predicate &optional include-node
 This function repeatedly finds the parents of @var{node}, and returns
-the parent that satisfies @var{pred}, a function that takes a node as
-argument and returns a boolean that indicates a match.  If no parent
+the parent that satisfies @var{pred}.  @var{pred} can be either a
+function that takes a node as argument and returns @code{t} or
+@code{nil}, or a regexp matching node type names, or other valid
+predicates described in @var{treesit-thing-settings}.  If no parent
 satisfies @var{pred}, this function returns @code{nil}.
 
 Normally this function only looks at the parents of @var{node} but not
@@ -927,11 +929,12 @@ function returns @var{node} if @var{node} satisfies 
@var{pred}.
 
 @defun treesit-parent-while node pred
 This function goes up the tree starting from @var{node}, and keeps
-doing so as long as the nodes satisfy @var{pred}, a function that
-takes a node as argument.  That is, this function returns the highest
-parent of @var{node} that still satisfies @var{pred}.  Note that if
-@var{node} satisfies @var{pred} but its immediate parent doesn't,
-@var{node} itself is returned.
+doing so as long as the nodes satisfy @var{pred}.  That is, this
+function returns the highest parent of @var{node} that still satisfies
+@var{pred}.  Note that if @var{node} satisfies @var{pred} but its
+immediate parent doesn't, @var{node} itself is returned.
+
+@var{pred} is the same as in @code{treesit-parent-until} above.
 @end defun
 
 @defun treesit-node-top-level node &optional type
diff --git a/lisp/treesit.el b/lisp/treesit.el
index 93b6b56534d..f179204d89c 100644
--- a/lisp/treesit.el
+++ b/lisp/treesit.el
@@ -344,14 +344,13 @@ ancestor node which satisfies the predicate PRED; then it
 returns that ancestor node.  It returns nil if no ancestor
 node was found that satisfies PRED.
 
-PRED should be a function that takes one argument, the node to
-examine, and returns a boolean value indicating whether that
-node is a match.
+PRED can be a predicate function, a regexp matching node type,
+and more; see docstring of `treesit-thing-settings'.
 
 If INCLUDE-NODE is non-nil, return NODE if it satisfies PRED."
   (let ((node (if include-node node
                 (treesit-node-parent node))))
-    (while (and node (not (funcall pred node)))
+    (while (and node (not (treesit-node-match-p node pred)))
       (setq node (treesit-node-parent node)))
     node))
 
@@ -364,9 +363,8 @@ no longer satisfies the predicate PRED; it returns the last
 examined node that satisfies PRED.  If no node satisfies PRED, it
 returns nil.
 
-PRED should be a function that takes one argument, the node to
-examine, and returns a boolean value indicating whether that
-node is a match."
+PRED can be a predicate function, a regexp matching node type,
+and more; see docstring of `treesit-thing-settings'."
   (let ((last nil))
     (while (and node (funcall pred node))
       (setq last node



reply via email to

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