秀丸マクロの「(関数のような)命令文」を文字列で実行

概要

この機能を利用する場合、秀丸エディタ v8.98 (正式版 or β9以上)を強く推奨します。
そうでない場合、数値と文字列の型を間違えて実行すると秀丸が不正な状態となります。

$hm::Macro::Eval(...)を「命令向けに特化」したものとして、「$hm::Macro::Statement」が用意されています。

秀丸マクロにおいて「(関数のような)文」や「(関数のような)命令文」とは

moveto X座標, Y座標

のように呼び出しに「( )」が使われず、かつ、返り値を受け取らないものです。

一方、文と類似ですが「返り値」があり、「( )」を付けて呼び出すものを「関数」としています。

秀丸マクロの(関数のような)文を実行可能です。

$hm::Macro::Statement("秀丸マクロの文名", ...引数);
  • PowerShellのソース

    コード
    $ret = $hm::Macro::Statement("moveto", 10, 2); // X:10, Y:2 の位置に移動
    
    # $ret.Result > 0 という判定でも同一の意味
    if ($ret.Error -eq $null ) 
    {
        $hm::OutputPane::Output("実行成功`r`n");
    }
    else
    {
        $hm::OutputPane::Output("実行失敗`r`n");
    }
    

$hm::Macro::Statement(...) 返り値

  • Resultプロパティ

    実行した秀丸マクロ文が無事成功したなら「1」失敗したなら「0」以下がint型で入っています。
    0とは限らないので注意してください。

  • Argsプロパティ

    秀丸マク関数を実行した後、秀丸マクロ関数に渡した引数が最終的にどういった値になったかを取得できます。
    List<Object>型で、関数に渡した最初の引数が[0], 次の引数が[1], ... といった形で格納されています。

  • Errorプロパティ

    何か明確な例外が発生した場合はErrorプロパティにException型の例外インスタンスが入っています。
    エラーがなければnullが入っています。

  • Messageプロパティ

    基本的には特になにもはいっておらず、空文字が入っています。

「menuやmenuarray」などGUI関連は表示できない

hmPSはほぼすべてが秀丸とは別スレッドで実行されているため、
秀丸の一部のマクロ命令文(menuやmenuarray)などが実行できません。

これらはマクロファイル内に直接記述してください。