expand wasavi beyond a textarea

今まで wasavi を起動させる要素は、textarea か特定の input 要素か、あるいは contentEditable 属性がオンになってる要素であった。つまるところ、編集できるのはあくまで実質的な木構造の終端の要素であった。

試験的にこれに document.body を含めてみたい。そうするとどうなるのかといえば、つまり何かテキストを編集しているわけではない状態で [cci]Ctrl+Enter[/cci] を押せば wasavi を起動させられるようになる。この時の編集対象要素が document.body ということだ。しかしこれは実質的な終端の要素ではないので、その内容を編集・上書きできるというわけではない(もし上書き可能にすると、とても危険だ。wasavi 上で編集するものはあくまでプレーンテキストなので、その上書きによって失われるかもしれない子要素があまりに多すぎる)。

一方で、save 動作に対する load 動作も特殊だ。document.body の内容全体をプレーンテキストに変換したとしてもあまり意味があるとは思えない。したがって初期内容はページのサマリの体裁が良いと思う。つまり

[title 要素か最初の h1 要素の内容]
[URL]
[meta[name="description"] 要素があれば、その content 属性の内容]
[wasavi 起動直前に範囲選択されていれば、その内容]

という感じだ。イメージとしてはこんな感じにページ全体に覆いかぶさるように起動する。
wasavi-on-a-page

このサマリ自体は、いかにも twitter とか、あるいはソーシャルブックマークに登録されるそれっぽい感じだ。であれば、まさにその用途に使うようにすればよいのではないか? つまりユーザが任意のページを開いて、これを SBM に登録したいと考える。その過程でちょっとしたコメントなんかも追記したい(しかも、vi のインターフェースで)。この一連の作業を wasavi が面倒を見ればよいのではないかということだ。

しかし、SBM サービスというのは非常にたくさんあるわけで全てに対応するのは無理だ。また、登録処理自体はテキストエディタの仕事の範疇から外れているし、やるとしたらエディタ内蔵のプラグインやスクリプティング機構が受け持つべきだけど、wasavi はまだどちらも持ち合わせていない。

とりあえず document.body 上でも起動できるようにして、それをどうするかは懸案事項としておこう。

Leave a Reply

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