Function: treemacs--get-imenu-index

treemacs--get-imenu-index is a byte-compiled function defined in treemacs-tags.el.

Signature

(treemacs--get-imenu-index FILE)

Documentation

Fetch imenu index of FILE.

Source Code

;; Defined in ~/.emacs.d/elpa/treemacs-20251226.1307/treemacs-tags.el
(defun treemacs--get-imenu-index (file)
  "Fetch imenu index of FILE."
  (let ((buff)
        (result)
        (mode)
        (existing-buffer (get-file-buffer
                          (or (file-symlink-p file) file)))
        (org-imenu-depth (max 10 (or 0 (and (boundp 'org-imenu-depth) org-imenu-depth)))))
    (ignore org-imenu-depth)
    (if existing-buffer
        (setq buff existing-buffer)
      (cl-letf (((symbol-function 'run-mode-hooks) (symbol-function 'ignore)))
        (setq buff (find-file-noselect file))))
    (condition-case e
        (when (buffer-live-p buff)
          (with-current-buffer buff
            (let ((imenu-generic-expression
                   (if (eq major-mode 'emacs-lisp-mode)
                       (or treemacs-elisp-imenu-expression
                           imenu-generic-expression)
                     imenu-generic-expression))
                  (imenu-create-index-function
                   (if (eq major-mode 'org-mode)
                       #'org-imenu-get-tree
                     imenu-create-index-function)))
              (setf result (and (or imenu-generic-expression imenu-create-index-function)
                                (imenu--make-index-alist t))
                    mode major-mode)))
          (unless existing-buffer (kill-buffer buff))
          (when result
            (when (string= "*Rescan*" (caar result))
              (setf result (cdr result)))
            (unless (equal result '(nil))
              (treemacs--post-process-index result mode))))
      (imenu-unavailable (ignore e))
      (error (prog1 nil (treemacs-log-err "Encountered error while following tag at point: %s" e))))))