mcomplete.el にmcomplete-history.elをうまく取り込むには

mcomplete.elを使ってくれている人はakihisaさん作のmcomplete-history.elも一緒に

使っているという人が多いことがGoogleで調べてわかった。

mcomplete-history.elは使ったことがなかったので初めてインストールしてみた。

まだ詳しくは分からないが、mcomplete.elの補完ターゲットとなる集合をヒストリ

からもってくるというアイデアだと思う。

mcomplete-history.elを使っている人はM-xすなわちexecute-extended-command

でのキー入力が短縮できるのが気に入っているみたいだ。

mcomplete-history.elは、ターゲットをヒストリから本来の集合にもどすのに

マッチングメソッドの切り替えで行っているみたいだけど、マッチングメソッドの

切り替えとターゲット集合の切り替えはお互いに直交する行為なのでターゲット集合を

切り替える独自のキーバインディングたとえばC-M-Pでターゲット集合の切り替えを

行うのはどうだろうと考えた。標準バインディングがM-Pでヒストリから1つ文字列を

もってくるので分かりやすい気がするからだ。で、ミニバッファを使うコマンドごとに

最初にどの集合をターゲットにするのかカスタマイズできるようにすれば、M-X用の

設定を書いておけばmcomplete-history.elの機能をきれいに吸収できる気がする。

                          history set

                                 ^

                                 |

prefix-matching <—–+——>substring matching

                                 |

                                v

                         completions set

とはいうものの、なんとかGNU Emacs23からの内部関数名変更に由来するバグを

やっとつぶしたばかりなので、まずはelispマニュアルのminibufferの項目をよく読んで

頭の内部の状態ができあがるまでコードに手を加えるのは控えたい。elispも大分

忘れているし。

mcomplete.elのバグ発見

*Completions*バッファ中でのアイテム選択がサブストリングマッチだと失敗するというバグ。

GNU Emacs24.1 Windows7で確認

mcompleteモードが有効な状態で、M-x でミニバッファに行って、substringマッチモードにする。conと入力したあと?で*Completions*バッファを表示させる。*Completions*バッファの中のiconifty-frameをマウスクリックすると、coniconifty-frameコマンドはないというエラーがでる。

今日、一日中このバグをつぶそうとがんばったが失敗。