色々やりとりしてみた所、何やら思いがけない方向に進んだ。
まず、wasavi 側で VimFx を意識した処理をする必要はなくなった。逆に、VimFx 側で wasavi の iframe を contenteditable な要素として扱ってもらえるようになった。のだが、途中から wasavi が起動中に blur させる方法がないのが問題、という話になり、正直なところへぁ? なんのこと? という気分に。
どうも VimFx の作法として、編集可能な要素がフォーカスを持っている場合は VimFx は自身のキーバインドを使用しないというものがあるようだ(逆に言うと、編集可能な要素の振る舞いを上書くことは VimFx ではできない)。ただし、編集可能な要素上で esc キーを押すとフォーカスを外す、つまり VimFx のキーバインドが再度有効になるようにはなっている。したがって、例えば通常の textarea で編集中に他のタブに切り替え、必要なものをコピー、戻って貼り付けなどという一連の動作をすべてキーボードで行うには、
- textarea 上で esc
- gt (次のタブへ)
- yf 等々で必要なものをコピー
- gT (前のタブへ)
- gi (先頭、あるいは最後にフォーカスした編集可能要素に再度フォーカス)
- wasavi 上で [cci]”*p[/cci]
というようなキーボード操作になる。で、これを可能とするために、wasavi も esc で blur して欲しいということのようだ。
というわけで、そういう風にした。ただ、この常にこの仕様で動作させて良いのか? という懸念はある。
- vi 使いの中にはノーマルモードに戻るために esc を連打する人もいる
- そうでなくても、うっかりノーマルモード上で esc を押してしまうことは有り得る
- あくまで VimFx の作法である。VimFx がインストールされていれば、wasavi がフォーカスを失っても即 [cci]gi[/cci] で戻すことはできるが、インストールされていなければポインティングデバイスで wasavi をクリックし直すしかない
なので、新しいオプション [cci]esctoblur[/cci] を導入し、これがオンの場合のみに blur 処理を行うようにした。