Emacsで右クリックメニューのようなコンテキストメニューを表示するctxmenu.elを作りました
これは何?
Emacsの壁のひとつにキーバインドがあるかと思います。
凡人では覚えきれない、その無数のキーバインドを把握するために、以下の便利な拡張があります。
- Emacs 初心者必見! one-key.el はキーバインドが覚えられない人への特効薬だ - (rubikitch loves (Emacs Ruby CUI Books))
- Emacs で自動的にキーバインドをポップアップする guide-key - 備忘録
また、上記one-key.elを使いやすくする拡張を私も以前作りました。
これらにより、大分軽減はされたんですが、依然として、
ポップアップさせるためのキーを忘れる。
例えば、string-rectangle(C-x r t)を探したいが、"C-x r"というストロークを既に忘れている。
かといって、"C-x r"よりもっと短いストローク(例えばC-x)で全体のマップをポップアップさせると、
結局情報が多くて見つけにくい。
という問題を抱えたままでした。
そこで、一般的なアプリケーションで大抵できる、
右クリックで表示されるメニューを選択することで処理を実行する。
というインタフェースと同じようなコンテキストメニューを提供する拡張を作りました。
スクリーンショット
特徴
モードに合わせたメニュー
メニューはモード毎に変えることができます。
EmacsHelpは常に表示、Diredはdired-modeだけ表示、など
キーボード操作
本拡張の機能は、popup.elを利用して実現しています。
popup.elによるポップアップメニュー、カスケードポップアップメニュー、ツールチップの実現 - Monthly Emacs
お使いの方はご存知かと思いますが、キーボードでメニュー要素の移動/選択/絞込みが行えます。
メニューのカスタマイズ
メニューの要素/表示形式は、柔軟に設定できるように心掛けました。
また、自分が欲しいメニューや、必要と思われるメニューは既にある程度定義してあります。
インストール/設定など
以下にまとめました。
https://github.com/aki2o/emacs-ctxmenu/blob/master/README-ja.md
popup.elについて
本拡張を動作させるためには、2014/02/11時点で、最新のpopup.elを使う必要があります。
しかし、そのバージョンを使ったとしても、メニュー要素が多くなるとフリーズする現象が起こる場合があります。
現在、その問題を解消するプルリクエストを作成し、本家に申請中です。
もし、この問題が本家で解消されるまで時間がかかる場合、以下の私のフォーク版を使うことで回避することができます。
https://github.com/aki2o/popup-el/tree/fix-freeze-cascade
その他
- 動作確認したEmacsは、GNU Emacs 24.2.1 (i386-mingw-nt5.1.2600) of 2012-12-08 on GNUPACK です。
- 最近のEmacsはメニューバーからいろいろなコマンドを実行できるようでしたが、キーボード操作はできないようでした。
Enjoy!!!