- imenu-anywhere 20170805.1155(in MELPA)
- ido/ivy/helm imenu across same mode/project/etc buffers
概要
imenus.el の方がoccur/helm-swoopもできたりとより便利です。
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
バグあり→ 修正
imenuをrequireする必要があります。
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
Fig1: idoのあいまいマッチでimenu!
Fig2: 他バッファの関数を選択!
Fig3: M-x helm-imenu-anywhere
本サイト内の関連パッケージ
- helm - Helm is an Emacs incremental and narrowing framework
- imenu-list - Show imenu entries in a seperate buffer
- ido-vertical-mode - Makes ido-mode display vertically.
- imenus - Imenu for multiple buffers and without subgroups
- idomenu - imenu tag selection a la ido
本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。