imenu-list 20170728.632(in MELPA)
Show imenu entries in a seperate buffer

概要

Emacsには元々 imenu という、
多言語対応の関数・変数定義をリストする機能があります。

対応している言語は本当にたくさんあり、
プログラミング言語はもちろんのこと、
HTMLやorg-modeなどの文書にも使えます。

しかし、素の M-x imenu はEmacsの元々の補完が使われるので
使い勝手はイマイチです。

そこで helmido を使った M-x helm-imenu や、
imenu-anywhere(レビュー)idomenu(レビュー) があります。

helmやidoのおかげでカレントバッファ内の関数定義へ
ジャンプしやすくなりました。

imenu-list.el は、imenuの定義を一覧します。

M-x imenu-list はimenuの各エントリを*Ilist*バッファで一覧します。

このバッファでRETを押すと関数定義に移動します。

さらに、 M-x imenu-list-minor-mode を使うとIDEっぽい挙動になります。

このマイナーモードを有効にすると、*Ilist*が1秒ごとに更新され、
カーソル位置に対応するimenuエントリを自動で指し示してくれます。

いってみればimenuによる簡易IDEでしょうか。

ソースコードや文書の全体像を見たいけれどhelmはちょっと…
という方はおすすめです。

3/1に開発されたばかりなので、発展が楽しみです。

20150303055929.png
Fig1: カーソル行に対応したimenuエントリを自動で指し示すよ!

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。

(package-initialize)
(setq package-archives
      '(("gnu" . "http://elpa.gnu.org/packages/")
        ("melpa" . "http://melpa.org/packages/")
        ("org" . "http://orgmode.org/elpa/")))

初めてimenu-listを使う方は
以下のコマンドを実行します。

M-x package-install imenu-list

アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。

M-x package-install package-utils (初めてアップグレードする場合のみ)
M-x package-utils-upgrade-by-name imenu-list

設定 150303055659.imenu-list.1.el(以下のコードと同一)

ここではjとkで上下移動できるようにしていますが、
設定しなくてもそのまま使えます。

(with-eval-after-load "imenu-list"
  (define-key imenu-list-major-mode-map (kbd "j") 'next-line)
  (define-key imenu-list-major-mode-map (kbd "k") 'previous-line))

実行方法

$ wget http://rubikitch.com/f/150303055659.imenu-list.1.el
$ emacs -Q -f package-initialize -l 150303055659.imenu-list.1.el

本サイト内の関連パッケージ


本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。