＞秀丸マクロのいろはにほへと

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

## 秀丸エディタVer.3.00 マクロ関連の変更履歴

秀丸 ver.3.00になって、機能強化に伴いマクロ文が追加されたり仕様変更が行われました。また、いくつかのバグ修正も行われています。
そのため、裏を返せば ver.2.xとの間でマクロに一部非互換が発生しています。
この章では、マクロの非互換情報を中心にマクロ関連の変更履歴の情報を集めました。

【１】マクロ関連の変更履歴 - 「秀丸エディタ」Ver. 3.00
【２】gokakko, goleftkakko, gorightkakko の仕様変更
【３】ステルス秀丸の処理
【４】escape;のresult
【５】hidemaruhandle(0) の取り違え

### 【１】マクロ関連の変更履歴 - 「秀丸エディタ」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; が \" でエスケープ処理を間違えるバグを修正。
- その他、マクロのバグが修正された。

### 【２】gokakko, goleftkakko, gorightkakko の仕様変更

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

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

1. gokakko は、「コメント/文字定数」の中にある括弧では移動しません。
2. goleftkakko, gorightkakko は、「コメント/文字定数」の中にある括弧 { } を無視して移動します。

### 【３】ステルス秀丸の処理

マクロが終了したとき、 /h でオープンされた窓が開かれる仕様になりました。

ちなみにこの仕様については、マクロのバグでマクロが異常終了したときは、有効ではありません。

「入力補完」とか「辞書引き」のマクロ等では、意図して /h で残す場合がありましたが、Ver. 3.0x ではそれができません。

### 【４】escape;のresult

    escape;
    message str(result);

現在 (Ver. 3.0x) でも、escape; は result = 0 となります。
偶然、この仕様であるが将来は不明です、
マクロのテストにはべんりですが、恒久的なコードをすることはお勧めではないです。

### 【５】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の内容を元に書かれています。
今後のバージョンアップによっては、上記の内容が必ずしも当てはまらない場合もあるかもしれません。

ページトップ 目次に戻る