|
番頭++ の作成したマクロ「マクロ機動隊」一機、二機 (未発表)、はいまでも強
化されない「秀丸エディタ」マクロ作成機能への単なる提案です。助言、とんで
もない。お願いです。
while( updated ){
undo;
if( ! result ){
message "undo failed !"; endmacroall;
}
}
endmacro;
// Debug - endmacroall
pk_endmacroall_3:
escape;
if( x != 0 ){ endmacroall; }
selectword;
$str_wk2 = gettext(seltopx,seltopy,selendx,selendy);
escape; golinetop2;
if( $str_wk2 == "endmacroall" ){
deleteline;
} else if ( code == 0x0D ){
insert "endmacroall;\t//\tDebug !\n"; // break exec macro
}
escape;
endmacroall;
この辺は「まくろ屋」の都合で [Fxx] に割り当てありますが、
ある幾つかの機能はぜひとも「文 - statement 」にして頂きたいものです。
// ghost macro. - マジで、テストしないでください !
ercord;
while( ! iskeydown( 0x1B ) ){ // [Esc]
execcommand; // with record_mode operand, or dummy operand.
}
record;
saverecord; // temp1.mac - with filename operand.
$wk1 = getinistr("hidemaru.ini","Env","MacroPath");
if( $wk1 == "" ){ $wk1 = hidemarudir; }
openfile $wk1 + "\\temp1.mac";
loadrecord; // temp1.mac - with filename operand.
message "ghost macro ! - Ver. 00.00 α";
endmacro;
いつもこんな処理でマクロを作成したいとか ...
せめて execstatement S1; があると便利なんですけど、配列に分岐を入れたい
んです。index 処理とでも呼んでおきます。M-code (P-code) が内部的に存在し
ていて、(ソースの) encoder を独立して呼び出せるように設計されていると可
能でしょう。if, else, while 等は出来なくてもよいのですが。
すでに、400 位の token が (記号を除いて) 「秀丸エディタ」マクロにはあり
ます。CompuServe のフォーラム名は英単語で作成され、Nifty-serve のそれは
記号で作成されています。例: Fwinal 、フォーラムの増加を気にして、ある技
術者が prefix である F を設けたと思われます。「秀丸エディタ」の token
もそんな時期に来ています。たとえば、 env などの prefix を動作環境関連に
用意してもよいのではないでしょうか。
envset... statement と, envref... imediate function の名前です。まだまだ
「内部的な値を表現するキーワード」は増えそうです。それとも statement の
command を階層化して sub_command を設ける token にするとか。
「ウィンドウ関連キーワード」には役目を終えたものもあるのではないでしょう
か。
【仮仮移行計画】 phase 1-3
・その一
token 変更のアナウンスをする。この時に新しい token の仕様は決まっている。
・その二
envoldtokenwsw, envoldtokenwdate を設けて、その token は今後の version
では変更になることを促す。envoldtokenwdate の日付と envoldtokenwsw フラ
グで管理する。これらは old_token と呼ぶ。「この token は古い version の
機能です、まだ稼動しますが ... 」とワーニングメッセージを、週に一度くら
い出してみる。
conversion utility の作成。「秀丸エディタ」のマクロはオブジェクトではな
くソースですからマクロでも修正可能ですが。recursive statement, function
も無いので楽かな、replaceallfast [,word] [,casesense] でいけるでしょう。
・その三
old_token は、その次の新しい version では old_old_token と呼ばれて、「こ
の token は古い古い version の機能です ... 」とエラーにする。dead token.
始めないと、終わりません。 ...
それとも思い切って「マクロ++」にして「それなりの差額」を頂くとかの案を検
討してもよいのではないでしょうか。
token は「秀丸エディタ」作者の決めることですが ...
【まとめ】
1. execstatement S1; の追加
2. saverecord S1; オペランドの追加
3. loadrecord S1; オペランドの追加
4. execcommand; // with record_mode operand, or dummy operand.
以上ですが、何とかなりませんか ...
「まくろ屋」の「番頭++」でした。
|
|