Function: treesit-simple-imenu

treesit-simple-imenu is a byte-compiled function defined in treesit.el.gz.

Signature

(treesit-simple-imenu)

Documentation

Return an Imenu index for the current buffer.

Source Code

;; Defined in /usr/src/emacs/lisp/treesit.el.gz
(defun treesit-simple-imenu ()
  "Return an Imenu index for the current buffer."
  (if (not treesit-aggregated-simple-imenu-settings)
      (treesit--generate-simple-imenu
       (treesit-parser-root-node treesit-primary-parser)
       treesit-simple-imenu-settings)
    ;; Use `treesit-aggregated-simple-imenu-settings'.  Remove languages
    ;; that doesn't have any Imenu entries.
    (seq-filter
     #'cdr
     (mapcar
      (lambda (entry)
        (let* ((lang (car entry))
               (settings (cdr entry))
               (global-parser (car (treesit-parser-list nil lang)))
               (local-parsers
                (treesit-parser-list nil lang 'embedded)))
          (cons (treesit-language-display-name lang)
                ;; No one says you can't have both global and local
                ;; parsers for the same language.  E.g., Rust uses
                ;; local parsers for the same language to handle
                ;; macros.
                (treesit--imenu-merge-entries
                 (mapcan (lambda (parser)
                           (treesit--generate-simple-imenu
                            (treesit-parser-root-node parser) settings))
                         (cons global-parser local-parsers))))))
      treesit-aggregated-simple-imenu-settings))))