quick activating

コンシューマキー/シークレットを blowfish で暗号化して保存するようにしたバージョンで dropbox へ再申請した。

0.4.163 を某所でアナウンスしたところ

Ctrl+enter無しでデフォでオンになると嬉しい

というコメントがあった。

これはつまり、textarea 要素にフォーカスを移した時点で自動的に wasavi が起動してほしいということだと思う。確かにそのほうが、いちいち ctrl+enter するよりも使いやすい場面はたくさんあるだろう。textarea そのものが vi のインターフェースを備えたものとして扱えた方が、vi に慣れきった層にとってはこの上ないメリットになると考えられる。よしやろう是非やろう。

しかし隠れたデメリットをあげてみると、意外に少なくない:

  1. 実際の web ページ上の textarea 要素は、実際に送信されるフォームの部品である。一方、wasavi の実体は textarea の上にかぶせた完全に別の要素である。wasavi が起動してテキストを編集したとしても、それを :write するまでは textarea の値は更新されない。シームレスに起動したとしても、あくまでも別の要素の別の内容を編集していることには変わらない。もしシームレスに wasavi を起動させると、適当にテキストを編集 -> おもむろに送信ボタンをクリック -> 内容が送信されてねぇ! という事故が非常に高い確率で起こりうる。
  2. web ブラウザネイティブのフォーム部品は、tab キーを押すことでフォーカスを順繰りに遷移させることができる。wasavi が自動的に起動する際、すべてのキー入力は wasavi が処理する。マップされていないキー入力は何も起こらないとしても、wasavi が消費する。この動作はフォーカスの遷移とかち合うわけだが、どうするか?

1. 自動起動させる設定にした場合、wasavi 上で編集するごとに即 textarea 要素を更新する。あるいは wasavi がフォーカスを失ったら即 textarea 要素を更新する。いずれにしても :write は意味を持たなくなる。
2. 自動起動させる設定にした場合、wasavi のコマンドモードでの tab キーは予約される。標準のマップも、リマップもできなくなる。tab キーを押すと wasavi は終了し、対象の textarea 要素の次のフォーム部品へフォーカスが移動する。

こんな感じで解決できるかな?

Leave a Reply

Your email address will not be published. Required fields are marked *