]> git.eshelyaron.com Git - emacs.git/commitdiff
Generalize js--treesit-imenu-top-level-p
authorYuan Fu <casouri@gmail.com>
Thu, 27 Oct 2022 01:06:07 +0000 (18:06 -0700)
committerYuan Fu <casouri@gmail.com>
Thu, 27 Oct 2022 01:06:07 +0000 (18:06 -0700)
* lisp/progmodes/js.el (js--treesit-imenu-top-level-p): Move.
(js--treesit-font-lock-settings): Fix usage.
* lisp/treesit.el (treesit-node-top-level-p): Move to here.

lisp/progmodes/js.el
lisp/treesit.el

index 8802ea0b5f4ae0970d0e0d99712935f8dd780581..7e1d7569cab203a29f6aad6a20312e3105b10fa3 100644 (file)
@@ -3601,18 +3601,6 @@ This function can be used as a value in `which-func-functions'"
              do (setq node (treesit-node-parent node))
              finally return  (string-join name-list "."))))
 
-(defun js--treesit-imenu-top-level-p (node)
-  "Return t if NODE is top-level, nil otherwise.
-Being top-level means there is no parent of NODE that has the
-same type."
-  (when node
-    (catch 'term
-      (let ((type (treesit-node-type node)))
-        (while (setq node (treesit-node-parent node))
-          (when (equal (treesit-node-type node) type)
-            (throw 'term nil))))
-      t)))
-
 ;; Keep this private since we might later change it or generalize it.
 (defvar js--treesit-imenu-type-alist
   '((variable . "V")
@@ -3673,7 +3661,7 @@ definition*\"."
      ((null ts-node)
       subtrees)
      ((and (eq type 'variable)
-           (not (js--treesit-imenu-top-level-p ts-node)))
+           (not (treesit-node-top-level-p ts-node)))
       nil)
      (subtrees
       (let ((parent-label (js--treesit-imenu-label type name))
index 8426a02a262bdbae6c1adbfd4ef7b36112b27219..f07fe7d609c5f183b9053aa44dfd389d66f938c1 100644 (file)
@@ -195,6 +195,18 @@ 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)
+  "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."
+  (when node
+    (catch 'term
+      (let ((type (treesit-node-type node)))
+        (while (setq node (treesit-node-parent node))
+          (when (equal (treesit-node-type node) type)
+            (throw 'term nil))))
+      t)))
+
 (defun treesit-buffer-root-node (&optional language)
   "Return the root node of the current buffer.
 Use the first parser in (`treesit-parser-list'), if LANGUAGE is