読者です 読者をやめる 読者になる 読者になる

Emacsで右クリックメニューのようなコンテキストメニューを表示するctxmenu.elを作りました

Emacs Elisp

これは何?

Emacsの壁のひとつにキーバインドがあるかと思います。
凡人では覚えきれない、その無数のキーバインドを把握するために、以下の便利な拡張があります。

また、上記one-key.elを使いやすくする拡張を私も以前作りました。

これらにより、大分軽減はされたんですが、依然として、

ポップアップさせるためのキーを忘れる。
例えば、string-rectangle(C-x r t)を探したいが、"C-x r"というストロークを既に忘れている。
かといって、"C-x r"よりもっと短いストローク(例えばC-x)で全体のマップをポップアップさせると、
結局情報が多くて見つけにくい。

という問題を抱えたままでした。

そこで、一般的なアプリケーションで大抵できる、
右クリックで表示されるメニューを選択することで処理を実行する。
というインタフェースと同じようなコンテキストメニューを提供する拡張を作りました。

スクリーンショット

f:id:aki2o:20140209161801p:plain

特徴

モードに合わせたメニュー

メニューはモード毎に変えることができます。
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!!!