きりかノート 3冊め

おあそびプログラミング

Vi Input Manager の実装を見てみよう

MYCOMvi GeekなOS Xユーザに! Cocoaアプリで"vi風"キーバインド で紹介されていた Vi Input Manager のコードを見てみた。

見る前に実装を想像。

  • NSTextView をポージングで差し替え
  • コマンドモードと入力モードを保持する状態値を追加
  • プロトコル NSTextInput をオーバーライドして、NSResponder のアクションを利用してコマンドモードの動作を実装

てなとこだろうか。ポージングだとインスタンス変数を追加できないので、モードの状態をどこに保存するかってのが興味あるところ。

というわけで拝見。

って vi モードで入力するのって NSTextView 上じゃなくて別ウインドウじゃん!ちゃんと記事読んでなかった。

知らなかったけど、DefaultKeyBinding.dict って勝手にアクション名追加してもいいんだね。なんとなく NSResponder で宣言されてるアクションのみが有効だと思ってた。覚えておくといつか役に立つやもしれん。

(2006/09/26 追記:お試しで EditCast 用に "editWithTextEditor:" アクションを追加してみた。いい感じ)