ido-modeでmigemoれる ido-migemo.el作りました


Emacsでの候補選択のインターフェイス、まあ いろいろあります。

それぞれ、一長一短あり、好みの別れるところだとは思いますが、最近は、Helm, popup, Idoをそれぞれ使い分けるようになってきました。

なかでも、ido-modeは、smexido-vertical-modeなどの素敵アプリが出てきて、俄然使用頻度が増えてきました。

ただ、残念なことにmigemoがききません。一方、Helmにはhelm-migemoがあり、日本語まじりの候補選択ではとても便利です。

ido-modeでmigemoれれば、さぞかし便利だろうに。。。と常々思っていたこともあり、ido-modeでmigemoれるアプリを作ってみました。

デモ

まずは、デモを。

demo.gif

インストール

MELPAに登録してもらいましたので、package.elとかからインストールできます。

MELPA

手動派の方はGitHubのリポジトリからダウンロードをお願いします。

myuhe/ido-migemo.el

使い方

ido-migemo.el は、 ido-migemo-mode というマイナーモードを提供しています。 ido-migemo-mode を有効にすることでido-modeでmigemoがきくようになります。

カスタマイズ

ido-migemo-mode はmigemoがきくというメリットはあるものの、idoのメリットでもあるflex matchやregexp matchを犠牲にしてしまいます。適材適所でmigemoの有効無効を変えたいものです。

そこで、 ido-migemo-mode では ido-migemo-exclude-command-list というリストにより、ido-migemoがきかないコマンドを指定することができます。デフォルトでは smex が無視されるようになっています。 好みに応じて、適宜変えてください。

他のカスタマイズ変数など諸々設定すると、次のような感じになると思います。

(require 'ido-migemo)
(ido-mode 1)
(ido-migemo-mode 1)
(setq ido-migemo-exclude-command '(smex ido-switch-buffer)
      ido-migemo-prompt-string "Migemo|")

Appendix

今回のアプリを作るうえで、ido.elで定義されている関数をまるごと横取りするという危なっかしい方法をとっています。いろいろ問題ありそうな気もするので、何か不具合が起きたら まず ido-migemo-mode を無効にすることをおすすめします :p

作りたてホヤホヤということもあり、いろいろバグあると思います。気づいた方は、GitHubのissueに投げてください。ぷるりく投げてもらうと、とても助かります。