hmPSが持つ特別な関数一覧

ヒアドキュメント

hmPSの機能ではなく、秀丸マクロの機能となりますが、hmPSと関係が深いものとして、
秀丸エディタ 8.66では、C++の「R""」やC#の「@」のようなものが秀丸マクロで利用可能となっています。

このため、秀丸マクロ内に、PowerShellをそのまま直接書き込めるようになりました。
これは非常に大きなメリットと言えるでしょう。

又、8.66以前のバージョンでは秀丸マクロの文字列リテラル(べた書きの文字列)の最大長は4Kバイトでしたが、
8.66以降では、64Kバイトとなりました。
これは、「連続1500行程度のPowerShellをマクロ内に直接張り付けることが出来る」ことを意味します。

デバッグ用途関数

デバッグ用途として以下の関数を利用し、「秀丸デバッグモニター」などに値や文字列を表示することが出来ます。

  • $hm::debuginfo( 文字列 )

    対象の文字列を、システムデバッガへと文字列を転送します。
    「秀丸デバッグモニター」などに値や文字列を確認することが可能です。

秀丸本体のバージョン

秀丸本体のバージョンを数値として取得します。

  • $hm::version

    秀丸 8.7.3.β3 の場合は、873.03、
    秀丸 8.7.3.β10 の場合は、873.10、
    秀丸 8.7.3 正式版 の場合は、873.99、
    といったような値が返ってきます。

#PS = loaddll( hidemarudir + @"\hmPS.dll" );

#_ = dllfuncw( #PS, "DoString", R"PS(

$hm::debuginfo($hm::version);

)PS"
);

freedll(#PS);

$hmはグローバル

「$hm::Edit::***」や「$hm::Macro::***」ではアクセスできない場合、 「::$hm::Edit::***」や「::$hm::Macro::***」など、頭に「::」を付け、
大域変数へのアクセスであることを明示する必要があります。

DestroyScope関数

PowerShell内に「DestroyScope」という名前の関数を用意しておくと、
マクロ終了時に自動的にその関数が実行されます。

#PS = loaddll( hidemarudir + @"\hmPS.dll" );

#_ = dllfuncw( #PS, "DoString", R"PS(
function DestroyScope() {
  $hm::debuginfo("マクロ終了する直前に自動的にこの関数が呼び出される。");
}

)PS"
);

freedll(#PS);