Limit recursion level for tree-sitter imenu functions
Generating imenu index doesn't require going down to the bottom of the tree (defun's are usually top-level). Add limit so we don't go too far down on very large buffers. * lisp/progmodes/c-ts-mode.el (c-ts-mode--imenu) * lisp/progmodes/java-ts-mode.el (java-ts-mode--imenu) * lisp/progmodes/js.el (js--treesit-imenu) * lisp/progmodes/json-ts-mode.el (json-ts-mode--imenu) * lisp/progmodes/python.el (python-imenu-treesit-create-index) * lisp/textmodes/css-mode.el (css--treesit-imenu): Add limit to treesit-induce-sparse-tree.
This commit is contained in:
parent
625ea08652
commit
32870d2f20
6 changed files with 17 additions and 14 deletions
|
@ -448,11 +448,11 @@ the subtrees."
|
|||
"Return Imenu alist for the current buffer."
|
||||
(let* ((node (treesit-buffer-root-node))
|
||||
(func-tree (treesit-induce-sparse-tree
|
||||
node "^function_definition$"))
|
||||
node "^function_definition$" nil 1000))
|
||||
(var-tree (treesit-induce-sparse-tree
|
||||
node "^declaration$"))
|
||||
node "^declaration$" nil 1000))
|
||||
(struct-tree (treesit-induce-sparse-tree
|
||||
node "^struct_specifier$"))
|
||||
node "^struct_specifier$" nil 1000))
|
||||
(func-index (c-ts-mode--imenu-1 func-tree))
|
||||
(var-index (c-ts-mode--imenu-1 var-tree))
|
||||
(struct-index (c-ts-mode--imenu-1 struct-tree)))
|
||||
|
|
|
@ -246,23 +246,23 @@ the subtrees."
|
|||
(class-tree
|
||||
`("Class" . ,(java-ts-mode--imenu-1
|
||||
(treesit-induce-sparse-tree
|
||||
node "^class_declaration$"))))
|
||||
node "^class_declaration$" nil 1000))))
|
||||
(interface-tree
|
||||
`("Interface" . ,(java-ts-mode--imenu-1
|
||||
(treesit-induce-sparse-tree
|
||||
node "^interface_declaration$"))))
|
||||
node "^interface_declaration$" nil 1000))))
|
||||
(enum-tree
|
||||
`("Enum" . ,(java-ts-mode--imenu-1
|
||||
(treesit-induce-sparse-tree
|
||||
node "^enum_declaration$"))))
|
||||
node "^enum_declaration$" nil 1000))))
|
||||
(record-tree
|
||||
`("Record" . ,(java-ts-mode--imenu-1
|
||||
(treesit-induce-sparse-tree
|
||||
node "^record_declaration$"))))
|
||||
node "^record_declaration$" nil 1000))))
|
||||
(method-tree
|
||||
`("Method" . ,(java-ts-mode--imenu-1
|
||||
(treesit-induce-sparse-tree
|
||||
node "^method_declaration$")))))
|
||||
node "^method_declaration$" nil 1000)))))
|
||||
(cl-remove-if
|
||||
#'null
|
||||
`(,(when (cdr class-tree) class-tree)
|
||||
|
|
|
@ -3688,11 +3688,12 @@ definition*\"."
|
|||
(let* ((node (treesit-buffer-root-node))
|
||||
(class-tree (treesit-induce-sparse-tree
|
||||
node (rx (or "class_declaration"
|
||||
"method_definition"))))
|
||||
"method_definition"))
|
||||
nil 1000))
|
||||
(func-tree (treesit-induce-sparse-tree
|
||||
node "function_declaration"))
|
||||
node "function_declaration" nil 1000))
|
||||
(var-tree (treesit-induce-sparse-tree
|
||||
node "lexical_declaration")))
|
||||
node "lexical_declaration" nil 1000)))
|
||||
`(("Class" . ,(js--treesit-imenu-1 class-tree))
|
||||
("Varieable" . ,(js--treesit-imenu-1 var-tree))
|
||||
("Function" . ,(js--treesit-imenu-1 func-tree)))))
|
||||
|
|
|
@ -115,7 +115,7 @@ the subtrees."
|
|||
"Return Imenu alist for the current buffer."
|
||||
(let* ((node (treesit-buffer-root-node))
|
||||
(tree (treesit-induce-sparse-tree
|
||||
node "pair")))
|
||||
node "pair" nil 1000)))
|
||||
(json-ts-mode--imenu-1 tree)))
|
||||
|
||||
;;;###autoload
|
||||
|
|
|
@ -5492,7 +5492,8 @@ Similar to `python-imenu-create-index' but use tree-sitter."
|
|||
(rx (seq bol
|
||||
(or "function" "class")
|
||||
"_definition"
|
||||
eol)))))
|
||||
eol))
|
||||
nil 1000)))
|
||||
(python--imenu-treesit-create-index-1 tree)))
|
||||
|
||||
(defun python-imenu-treesit-create-flat-index ()
|
||||
|
|
|
@ -1406,7 +1406,8 @@ the subtrees."
|
|||
"Return Imenu alist for the current buffer."
|
||||
(let* ((node (treesit-buffer-root-node))
|
||||
(tree (treesit-induce-sparse-tree
|
||||
node (rx (or "rule_set" "media_statement")))))
|
||||
node (rx (or "rule_set" "media_statement"))
|
||||
nil 1000)))
|
||||
(css--treesit-imenu-1 tree)))
|
||||
|
||||
;;; Completion
|
||||
|
|
Loading…
Add table
Reference in a new issue