ところで html 中のスクリプトやスタイルシートをいじっているときは、それぞれの補完が効いてくれた方がよいのですが、どうしたものか。
スクリプト側で振り分けることもできますが、そうすると拡張子クラスが他の拡張子クラスの面倒を見なければいけないので、あまり良くないです。補完のためだけなら onKeySpace() と onKeyPrintable() あたりで対応するだけですが、他のキーバインドについても各々の拡張子クラスに固有のそれを有効にしたいとかになったら、html クラスに逐一振り分ける処理を書かなければならなくなる。
となるとキー入力系のイベントを起こす前に、萌ディタ側で実際にどの拡張子クラスに対してイベントを起こすかの判断をしてもらうのがよさそうですが。。。これもまたむずかしい。ある字句解析器がどの拡張子クラスに参照されているか、というのを持っていないのです(逆の接続は、プロパティ 'lex' で持ってる)。というか、持っていたとしても、字句解析器 1 つに対し複数の拡張子クラスから参照されていたら結局どの拡張子クラスかを特定できない。
よい考えが思いつかないので、ひとまず html の拡張子クラスで振り分けるようにしておきます。
キー入力系のイベントを起こす直前に、キャレット位置についてどの拡張子クラスのイベントを起こすかを問い合わせるイベントを起こせばいいのかなあ。
ということで、そうしてみました。なにかキー入力されると onQueryKeyContext というイベントが起こって、スクリプト側では App.Caret.LexState をみて実際にどの拡張子クラスの onKey なんとかイベントを起動するかを返す。。。という感じです。