]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/treesit.el (treesit-node-top-level-p): New argument TYPE.
authorYuan Fu <casouri@gmail.com>
Thu, 27 Oct 2022 01:31:07 +0000 (18:31 -0700)
committerYuan Fu <casouri@gmail.com>
Thu, 27 Oct 2022 01:31:07 +0000 (18:31 -0700)
lisp/treesit.el

index f07fe7d609c5f183b9053aa44dfd389d66f938c1..5c89a63bf61580c3bb96f96fbc9c6f6ab3645538 100644 (file)
@@ -195,15 +195,19 @@ that language in the current buffer, and use that."
                 (treesit-buffer-root-node parser-or-lang))))
     (treesit-node-descendant-for-range root beg (or end beg) named)))
 
-(defun treesit-node-top-level-p (node)
+(defun treesit-node-top-level-p (node &optional type)
   "Return non-nil if NODE is top-level, nil otherwise.
 Being top-level means there is no parent of NODE that has the
-same type."
+same type.
+
+If TYPE is non-nil, match each parent's type with TYPE as a regexp."
   (when node
     (catch 'term
-      (let ((type (treesit-node-type node)))
+      (let ((plain-type (treesit-node-type node)))
         (while (setq node (treesit-node-parent node))
-          (when (equal (treesit-node-type node) type)
+          (when (if type
+                    (string-match-p type (treesit-node-type node))
+                  (equal (treesit-node-type node) plain-type))
             (throw 'term nil))))
       t)))