imenu-anywhere 20160831.356(in MELPA)
ido/ivy/helm imenu across same mode/project/etc buffers

概要

<2015-04-09 Thu> imenus.el の方がoccur/helm-swoopもできたりとより便利です。

<2014-12-22 Mon>バグ修正!

imenu-anywhere.el は、 M-x imenu を大きく進化させます。

imenu は、 TAGS ファイルを作らなくても
気楽にタグジャンプできますが、
現在のファイルに限定されています。

タグファイル なしで関数定義にジャンプできるのは、とても手軽だし、
外部プログラムのインストールに手間取る Windows 環境だと嬉しいものです。

Windowsじゃなくてもわざわざ手動で
タグファイルを作るのが面倒な場合もあります。

そういう場合にimenuは特効薬となります。

しかし…

複数のファイルにまたがるタグジャンプが
できないのは不便ですね。

しかも標準のimenuは候補選択がしづらいです。

そこでimenu-anywhere.elはこの2つの欠点を排除します!

第一にimenu-anywhere.elは同一メジャーモードの
すべてのバッファまでimenuの範囲を広げます。

第二に、imenuを ido / helm インターフェースにして
候補選択しやすくします。

特にidoのあいまいマッチは強力
各文字間のに任意の文字が入ることを許されています。

しかもウィンドウ構成を変更しないので
目線が移動しないメリットもあります。

候補が比較的少数で、
単一の情報源で、
ひとつのアクションで、
Migemo らないならば、
helmよりもidoの方が優れていると僕は考えています。

helmはあくまで複数の情報源を同時に扱えることが魅力なんですから。

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.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-anywhereを使う方は
以下のコマンドを実行します。

M-x package-install imenu-anywhere

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

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

<2014-12-17 Wed>バグあり→<2014-12-22 Mon>修正

<2014-12-22 Mon>このバグは修正されましたが、
imenuをrequireする必要があります。

<2015-01-17 Sat>現時点ではバグにより.elを読み込まないと
M-x helm-imenu-anywhere は動作しません。

imenu-anywhere.elで

(eval-when-compile (require 'helm))

が入っていないせいで、
マクロ with-helm-current-buffer が関数として
バイトコンパイルされているからです。

M-x ido-imenu-anywhere を使う人はrequireは不要です。

@yewtonさん、情報提供ありがとうございます。

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

(require 'imenu)
(setq ido-enable-flex-matching t)       ;あいまいマッチ
(global-set-key (kbd "C-.") 'ido-imenu-anywhere)

実行方法

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

20141217073454.png
Fig1: idoのあいまいマッチでimenu!

20141217075121.png
Fig2: 他バッファの関数を選択!

20141217121147.png
Fig3: M-x helm-imenu-anywhere

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


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