last updated:2023/12/27

Hidemaru Q and A

第III部〜秀丸マクロのいろはにほへと
 秀丸エディタVer.3.00 マクロ関連の変更履歴


秀丸エディタ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 の仕様変更

gokakko      対応する括弧に移動
goleftkakko  '{'に移動
gorightkakko '}'に移動

これらの 3 個のマクロ、コマンドは Ver. 3.00 から仕様が変更されました。
「ファイルタイプ別の設定」で「コメント/文字定数のカラー表示」を指定しない場合には従来の移動と同じです。また、これを指定した場合には、以下の動作になります。

  1. gokakko は、「コメント/文字定数」の中にある括弧では移動しません。
  2. 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の内容を元に書かれています。
今後のバージョンアップによっては、上記の内容が必ずしも当てはまらない場合もあるかもしれません。


ページトップ 目次に戻る