次なるエンハンス - マクロ++No.00929
番頭++ さん 98/04/27 16:20
 
番頭++ の作成したマクロ「マクロ機動隊」一機、二機 (未発表)、はいまでも強
化されない「秀丸エディタ」マクロ作成機能への単なる提案です。助言、とんで
もない。お願いです。

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.

以上ですが、何とかなりませんか ...


「まくろ屋」の「番頭++」でした。

[ ]
RE:00929 次なるエンハンス - マクロ++No.00944
秀丸担当 さん 98/04/28 19:18
 
>番頭++ の作成したマクロ「マクロ機動隊」一機、二機 (未発表)、はいまでも強
>化されない「秀丸エディタ」マクロ作成機能への単なる提案です。助言、とんで
>もない。お願いです。

というわけでざっと見てみましたが、ちょっと良く意味がわかりません。
もうすこし、...いやもっともっと分かりやすく説明していただけないでしょうか。

いちおう、秀丸マクロはいままでのマクロと互換をとっていきたいので、
一気に仕様を変えてしまうのは避けたいです。

[ ]