萌ディタのスレに、現在行の文字列の取得と、現在カーソル位置の文字の取得のメソッドをお願いしてみたら作者さんがすぐに対応してくれた。かなり感動したので、早速JScript用のスマートインデント(中カッコのみ)を書いてみた。個人的な需要としてはPython用の方が高いのだけれど、Python用拡張子クラスは先に名乗りをあげた人がいるみたいなので期待して見守ることにした。
jscript.javascript.txtに以下を追記。あんまりテストしてない。


f.onKeyPrintable = function (arg, classname, methodname) {
//表示可能文字が入力されるごとに呼ばれる
if (App.Prop('plaintext', '$multi-stroke') == '') {

//閉じカッコ用スマートインデント
//行頭で閉じカッコを入力すると、インデントが一段戻る
if (arg == '}') {
var ls = App.Caret.LeadingSpaces;
if (ls.length > 0) {
if (App.Caret.Col == ls.length) {
// Do unindent
if (ls.slice(-1) == '\t') {
App.Caret.Delete(-1);
} else {
if (ls.length >= 4) {
App.Caret.Delete(-4);
}
}
}
}
}
App.Caret.Send(arg);
}
}

f.onKeyReturn = function (arg, classname, methodname) {
if (arg & KEYMASK_SHIFT) {
App.Caret.Send('\n');
}else{
var s = App.Caret.Paragraph.slice(-1);
var ls = App.Caret.LeadingSpaces;
if ( (s == '{') && (App.Caret.Col == App.Caret.Paragraph.length) ) {
ls += '\t';
}
App.Caret.Send('\n' + ls);
}
};