|
あと、
■filter
特に「引数4つ以上の方」は非同期実行が出来たほうが、jsの考え方や実装と相性がよくなるかと。
「変換モジュール」をJSの比較的強力なマッチング機構とコールバックの仕組みに自然な形で乗せやすくなります。
var rs = s.replace(/あああ/g, function(ma) {
return filter("module", "method", "opt", ma);
// 現在のような同期関数だと「うーん」だが、
// 非同期&ネイティブならマッチ時のコールバックと相性がかなり良くなる
});
■begingroupundo endgroupundo 相当のもの
今のままだと個々の関数を非同期にしても、
「CTRL+Zで元に戻る」の辻褄を考えると
begingroupundo endgroupundo を利用しておきたいがために、
同期実行が必要になるので、postExecしがちになるかと。
そこで、これを非同期にする感じ。
(とはいえ、原則、下のfinallyのように必ず挟み込んで確実に実行されるスタイルの記述が要求されるかとは思います)
try {
begingroupundo();
・・・なんか秀丸の編集エリアに関わる複数の処理
}
finally {
endgroupundo();
}
マクロの仕様として、「同期」実行中に「非同期」functionが実行されないことが担保されているので、
・「同期」は「同期内でbegin/end」しろ、
・「非同期」は「非同期内でbegin/end」しろ、
という記述側でのカバーは必要になるかとは思います。
|
|