たぶん読んでもまったく面白くありません。
ええと、もうひとつの解りにくさに、拡張子クラス間の継承関係があると思います。自分で作っておいてなんですが、解りにくい。。。というか GUI との相性があまりよくない。この継承関係というのは 2 つあって、
- イベントハンドラの継承
- プロパティの継承
前者は、実際に使う上でそれほど問題にはならないかもしれないですが(スクリプトをいじり始める段階になるまではユーザが意識することはないでしょうから)。後者、例えば linenumber-width というプロパティがあって、これは行番号領域の幅を保持しているのですが。で、ルーラ上のマーカーをドラッグした場合にこのプロパティを更新するのですが、標準のスクリプトではクラスローカルにしていないのでテキストファイルだろうがソースファイルだろうが変更の影響を受けます(プロパティの実体を定義している拡張子クラスについて、変更が行われるため)。
これをユーザが「なんで XX のソースだけ変更できるようにならねーんだボユゲ」と思ったとき。。。
- 環境設定画面を開いて、変更したい拡張子クラスをアクティブにして、linenumber-width を選択して、メニューから「値をローカルにする」というのを選んで、値を入力する
- srcfile.javascript.txt なり何なりを開いて、onInitProp イベントハンドラで linenumber-width を明示して指定する
- ctrl+E を押して、App.Prop('srcfile', 'linenumber-width') = 0; とかを評価する
のどれかの手順を踏めば、解決するわけですが。
はたしてこの作業を、ついさっき萌ディタを落としてきたばかりのユーザが行えるかどうか。きっと無理でしょう。少なくとも「プロパティの値がクラス間で継承される」「継承を切って独自の値を与えることができる」という知識が必要です。
とまあ根幹の部分に複雑さを抱えているわけです。ドキュメントを整備するとかの方法でこの問題をフォローしたことになるのか、あるいはプロパティの継承という仕様自体を変えるべきなのか。
仮に継承というものをなくしてしまうと、それぞれの拡張子クラスの初期化時にだらだらとプロパティに値を入れるコードを書くことになってしまうし、新しいプロパティを付け足したらすべてのスクリプトを更新しなくてはいけません。つまりプロパティの継承という仕様はスクリプトで環境設定を行うという仕様と深く関係しているということです。
設定をスクリプトで行うプログラムというのは、どこか unix の香りがするというか、どうしてもユーザにある程度の知識を要求することになるので、それを単純に GUI に持ってくるととでどうしても逃れられない不自然さがつくことになるようです。
といいつつ、変更するとあまりに影響が及びすぎるので、若干の懸念を残しつつ、このまま。