Vi Input Manager の実装を見てみよう
MYCOM の vi GeekなOS Xユーザに! Cocoaアプリで"vi風"キーバインド で紹介されていた Vi Input Manager のコードを見てみた。
見る前に実装を想像。
- NSTextView をポージングで差し替え
- コマンドモードと入力モードを保持する状態値を追加
- プロトコル NSTextInput をオーバーライドして、NSResponder のアクションを利用してコマンドモードの動作を実装
てなとこだろうか。ポージングだとインスタンス変数を追加できないので、モードの状態をどこに保存するかってのが興味あるところ。
というわけで拝見。
って vi モードで入力するのって NSTextView 上じゃなくて別ウインドウじゃん!ちゃんと記事読んでなかった。
知らなかったけど、DefaultKeyBinding.dict って勝手にアクション名追加してもいいんだね。なんとなく NSResponder で宣言されてるアクションのみが有効だと思ってた。覚えておくといつか役に立つやもしれん。
(2006/09/26 追記:お試しで EditCast 用に "editWithTextEditor:" アクションを追加してみた。いい感じ)