人気ブログランキング | 話題のタグを見る
複数言語下での補完

ところで html 中のスクリプトやスタイルシートをいじっているときは、それぞれの補完が効いてくれた方がよいのですが、どうしたものか。


スクリプト側で振り分けることもできますが、そうすると拡張子クラスが他の拡張子クラスの面倒を見なければいけないので、あまり良くないです。補完のためだけなら onKeySpace() と onKeyPrintable() あたりで対応するだけですが、他のキーバインドについても各々の拡張子クラスに固有のそれを有効にしたいとかになったら、html クラスに逐一振り分ける処理を書かなければならなくなる。


となるとキー入力系のイベントを起こす前に、萌ディタ側で実際にどの拡張子クラスに対してイベントを起こすかの判断をしてもらうのがよさそうですが。。。これもまたむずかしい。ある字句解析器がどの拡張子クラスに参照されているか、というのを持っていないのです(逆の接続は、プロパティ 'lex' で持ってる)。というか、持っていたとしても、字句解析器 1 つに対し複数の拡張子クラスから参照されていたら結局どの拡張子クラスかを特定できない。


よい考えが思いつかないので、ひとまず html の拡張子クラスで振り分けるようにしておきます。




キー入力系のイベントを起こす直前に、キャレット位置についてどの拡張子クラスのイベントを起こすかを問い合わせるイベントを起こせばいいのかなあ。


ということで、そうしてみました。なにかキー入力されると onQueryKeyContext というイベントが起こって、スクリプト側では App.Caret.LexState をみて実際にどの拡張子クラスの onKey なんとかイベントを起動するかを返す。。。という感じです。


by knife37 | 2004-12-09 02:38 | 妄想を申そう  | Top  | 
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
検索
最新のコメント
Hi! Good stu..
by lacedkl at 10:19
i think abou..
by MaybridabanTy at 06:31
Thank you!
by Roy at 20:27
Thank you!
by Patrick at 20:26
Great work!
by Andy at 20:25
Thank you!
by Rex at 20:23
Great work!
by Maggie at 20:23
I love it: ..
by siljb at 15:51
Keep up t..
by reizomo at 15:40
http://0buyp..
by affomfobe at 02:56
最新のトラックバック
フォロー中のブログ
ファン
記事ランキング
ブログジャンル
画像一覧