hmPSが持つ特別な関数一覧 その②

編集中エディタに対する関数

現在秀丸エディタで開いているテキストに対して、以下の関数を利用することが出来ます。

  • テキスト全体

    • $hm::Edit::TotalText

      現在編集中の秀丸エディタのテキスト全体を得る

    • $hm::Edit::TotalText = "文字列"

      現在編集中の秀丸エディタのテキスト全体を、文字列へと変更する

    #PS = loaddll( hidemarudir + @"\hmPS.dll" );
    
    #_ = dllfuncw( #PS, "DoString", R"PowerShell(
    $totaltext = $hm::Edit::TotalText;
    $hm::debuginfo($totaltext);
    
    $hm::Edit::TotalText = "あいうえお";
    )PowerShell");
    
    freedll( #PS );
    
  • 選択中のテキスト

    (単純選択のみが対象となります。ボックス選択や複数選択は対象にはなりません)

    • $hm::Edit::SelectedText

      現在編集中の秀丸エディタの「選択している」テキストを得る。

    • $hm::Edit::SelectedText = "文字列"

      現在編集中の秀丸エディタの「選択している」テキストを、"文字列"へと置き換える。

    #PS = loaddll( hidemarudir + @"\hmPS.dll" );
    
    #_ = dllfuncw( #PS, "DoString", R"PowerShell(
    # 何かを単純選択していたら、テキストが得られる
    $selectedtext = $hm::Edit::SelectedText;
    $hm::debuginfo($selectedtext);
    
    $hm::Edit::SelectedText = "選択しているテキストをこの文字列に置き換えた";
    
    )PowerShell");
    
    freedll( #PS );
    
  • カーソルがある行のテキスト

    • $hm::Edit::LineText

      現在編集中の秀丸エディタの「カーソルがある行」のテキストを得る。

    • $hm::Edit::LineText = "文字列"

      現在編集中の秀丸エディタの「カーソルがある行」のテキストを、文字列へと置き換える。

    #PS = loaddll( hidemarudir + @"\hmPS.dll" );
    
    #_ = dllfuncw(  #PS, "DoString", R"PowerShell(
    $linetext = $hm::Edit::LineText;
    $hm::debuginfo($linetext);
    
    # 行のテキストを入れ替える感じにするなら、最後に「\n」を付けること。
    $hm::Edit::LineText = "カーソル行のテキストをこれに変更\n";
    )PowerShell");
    
    freedll( #PS );
    
  • カーソルの位置

    • $hm::Edit::CursorPos.lineno

      現在選択中の秀丸エディタのカーソル位置の行番号を得る。
      秀丸マクロのlinenoと同じ値。

    • $hm::Edit::CursorPos.column

      現在選択中の秀丸エディタのカーソル位置のカラム値を得る。
      秀丸マクロのcolumnと同じ値。

    #PS = loaddll( hidemarudir + @"\hmPS.dll" );
    
    #_ = dllfuncw(  #PS, "DoString", R"PowerShell(
    $lineno = $hm::Edit::CursorPos.lineno;
    $column = $hm::Edit::CursorPos.column;
    $hm::debuginfo( [string]$lineno + "," + [string]$column );
    )PowerShell");
    
    freedll( #PS );
    
  • マウスの位置に対応するカーソルの位置(秀丸エディタ v8.73以上)

    • $hm::Edit::MousePos.lineno

      現在選択中の秀丸エディタの「マウスの位置に対応するカーソル位置」の行番号を得る。

    • $hm::Edit::MousePos.column

      現在選択中の秀丸エディタの「マウスの位置に対応するカーソル位置」のカラム値を得る。

    #PS = loaddll( hidemarudir + @"\hmPS.dll" );
    
    #_ = dllfuncw( #PS, "DoString", R"PS(
    $lineno = $hm::Edit::MousePos.lineno;
    $column = $hm::Edit::MousePos.column;
    $x = $hm::Edit::MousePos.x; # マウスのスクリーン座標
    $y = $hm::Edit::MousePos.y; # マウスのスクリーン座標
    $hm::debuginfo( $lineno, $column );
    )PS");
    
    freedll( #PS );
    

簡易なHTMLエンコードの例

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

if (! #PS) {
  message("hmPSが導入されいません。");
  endmacro;
}

#_ = dllfuncw( #PS, "DoString", R"PowerShell(
[System.Reflection.Assembly]::LoadWithPartialName("System.Web")

$html = [System.Web.HttpUtility]::HtmlEncode($hm::Edit::TotalText)
$html = $html.Replace("\r\n", "\r")
$html = $html.Replace("\n", "\r")
$html = $html.Replace("\r", "<br>\r\n")
$html = $html.Replace("  ", " &nbsp;")

$hm::Edit::TotalText = $html

)PowerShell"
);

freedll( #PS );