Imenu for multiple buffers
Emacs Lisp Makefile
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


This Emacs package provides a way to use imenu indexes on multiple buffers (or files) and without subsections.

Above that, imenus may be used to perform isearch or occur on specified buffers by pressing an according key binding.



This package can be installed from MELPA (with M-x package-install or M-x list-packages).


For the manual installation, clone the repo, add the directory to load-path and add autoloads for the commands/functions you need:

(add-to-list 'load-path "/path/to/imenus-dir")
(autoload 'imenus "imenus" nil t)
(autoload 'imenus-mode-buffers "imenus" nil t)


  • M-x imenus

    This command behaves almost the same as M-x imenu. The differences are:

    • If it is called with a prefix argument, you will be prompted for several buffers for searching.
    • You may use the following additional key bindings while you are in a minibuffer prompt (the bindings may be changed in imenus-minibuffer-map):
      • M-r - Rescan the current index.
      • M-s - Start Isearch with the current input string.
      • M-o - Start Occur with the current input string.
    • There are no additional groups (sections), like “Variables” or “Types”. All items are placed in the top level and optionally have a group prefix (i.e., “Variables ⇨ imenus-delimiter”). The difference is shown in the following screenshots:
  • M-x imenus-mode-buffers

    Perform imenus on all buffers with a particular major mode (there is also imenu-anywhere package for the same purpose).

  • imenus-files

    This is not an interactive command; it is a function that may be used to perform imenus on files. For example, I use it to search my elisp files (see al-imenus.el).