こういうハック好きです、やっぱりコード書く人にとってエディタはダイジ、いやオオゴトというか…
少々意地悪なものも含まれていますが、いくつか気づいた事を次に
1.複数行文字列中におけるユーザー定義関数
// 再現コード
#deffunc foo
return
mes "foo"// ハイライトされない
mes {"
foo// ハイライトされる
"}
本家エディタも複数行中のキーワードや組み込み命令のハイライトはないですね
また、同じ文字列でも単一文字列中ではハイライトされないことから、意図した通りの動作ではないと思われるので書いときます
2.#funcのglobal指定
// 再現コード
#func global foo "foo"
#funcはデフォルトでモジュール空間外へは影響がないため、グローバル空間へも定義するオプション「global」がくる可能性があります
モジュール空間内での#deffunc後の「local」は対策してあったので、こっちも対応抜けですかね
3.モジュール内ラベル
// 再現コード
foo
stop
*bar
mes "global"
return
#module
#deffunc foo
gosub *bar
return
*bar
mes "module"
return
#global
モジュール空間内でのラベルのスコープは閉じています
この状態でfoo内の「gosub *bar」の「*bar」をクリックすると、グローバル空間の方の「*bar」に飛びます
ローカルラベルについては対応しない、という仕様でいいんですよねきっと
とりあえずそのような感じです
モジュール空間とかコンテキストのブロック解析が必要になる箇所ら辺がアレですが(「#deffunc local foo」とか)
でも現時点でも後方参照の関数についてもハイライトされるのでよく出来ていますね
ただ、初回起動時ものすごい不安定(ファイルを読もうとするとエラー落ち)で、再起動したらまともに動くようになったので、動作安定性という点ではまだ不安が残りますが…
ところで、機能としてはかなり便利な改良だと思うので、本家にコードの変更をマージしてもらってはどうでしょうか
ユーザー視点としては、いちいち別の場所からダウンロードして上書きするよりは、最初から本家に入っていてもいいレベルだと思うのですが
実際はメンテナンスの関係もあるので、そうすると長期的には大変な作業量になってしまいますが、是非考えていただけると有り難いなーと思いました