第III部〜秀丸マクロのいろはにほへと
|
●秀丸エディタVer.3.00 マクロ関連の変更履歴
秀丸 ver.3.00になって、機能強化に伴いマクロ文が追加されたり、仕様変更が行われました。また、いくつかのバグ修正も行われています。
そのため、裏を返せば ver.2.xとの間でマクロに一部非互換が発生しています。
この章では、マクロの非互換情報を中心に、マクロ関連の変更履歴の情報を集めました。【1】マクロ関連の変更履歴 - 「秀丸エディタ」Ver. 3.00
【2】gokakko, goleftkakko, gorightkakko の仕様変更
【3】ステルス秀丸の処理
【4】escape;のresult
【5】hidemaruhandle(0) の取り違え
【1】マクロ関連の変更履歴 - 「秀丸エディタ」Ver. 3.00
- loadhilight 文、hilighttitle 関数、colorcode 関数、copy2 文、openbyhidemaru 文、openbyshell 文、nextmark 文、prevmark 文 が追加された。
- ファイル系文の result に関して、true で初期値を与え、エラー処理も統一された。
( saveas, insertfile, changename, appendsave, etc. )- ダイアログボックスを出力するファイル系文で、失敗したり、キャンセルされた場合は、result は false を返すように統一された。
( CHANGENAME, INSERTFILE, etc. )- gokakko, goleftkakko, gorightkakko に関して、「コメント/文字定数」内の考慮が加えられた。
- 剰余 % に関して、符号を考慮した計算方法に変更された。
- マクロが終了したとき、 /h でオープンされた窓が開かれる仕様になった。
- config を実行すると、disabledraw が無効になるバグを修正。
- totab; が \" でエスケープ処理を間違えるバグを修正。
- その他、マクロのバグが修正された。
【2】gokakko, goleftkakko, gorightkakko の仕様変更
これらの 3 個のマクロ、コマンドは Ver. 3.00 から仕様が変更されました。
gokakko 対応する括弧に移動 goleftkakko '{'に移動 gorightkakko '}'に移動
「ファイルタイプ別の設定」で「コメント/文字定数のカラー表示」を指定しない場合には従来の移動と同じです。また、これを指定した場合には、
- gokakko は、「コメント/文字定数」の中にある括弧では移動しません。
- goleftkakko, gorightkakko は、「コメント/文字定数」の中にある括弧 { } を無視して移動します。
【3】ステルス秀丸の処理
マクロが終了したとき、 /h でオープンされた窓が開かれる仕様になりました。ちなみにこの仕様については、マクロのバグでマクロが異常終了したときは、有効ではありません。
「入力補完」とか「辞書引き」のマクロ等では、意図して /h で残す場合がありましたが、Ver. 3.0x ではそれができません。
【4】escape;のresult
escape;
message str(result);現在 (Ver. 3.0x) でも、escape; は result = 0 となります。
偶然、この仕様であるが、将来は不明です、
マクロのテストにはべんりですが、恒久的なコードをすることはお勧めではないです。
【5】hidemaruhandle(0) の取り違え
下記のような例で発生する hidemaruhandle(0) の取り違えは治っていませんが、大きな問題ではありません。仕様にも見えるでしょう。
「常駐秀丸の終了 (C) 」の後に、マクロ c1. mac を「マクロ実行」する、
その後で、c2.mac で確認すると、hidemaruhandle(0) の矛盾がわかります。
// c1.mac saveas "a1.txt";
$wk1 = filename;
#ii = hidemaruhandle(0);
message str(#ii);
$wk2 = "a2.txt";
openfile "/h " + $wk2;
#jj = hidemaruhandle(0); // おいおい !!!
message str(#jj);
#kk = hidemaruhandle(findhidemaru($wk1)); // ナイナイ !!!
message str(#kk);endmacro;
// c2.mac #i = hidemaruhandle(0);
message str(#i);endmacro;
※この内容は秀丸エディタ ver.3.01の内容を元に書かれています。
今後のバージョンアップによっては、上記の内容が必ずしも当てはまらない場合もあるかもしれません。