hmPerlが持つ特別な関数一覧

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

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

  • テキスト全体

    • hm->Edit->TotalText

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

    • hm->Edit->TotalText( 文字列 )

      現在編集中の秀丸エディタのテキスト全体を、引数の文字列にする。

    #Perl = loaddll( hidemarudir + @"\hmPerl.dll" );
    
    #_ = dllfuncw( #Perl, "DoString", R"PERL(
    my $totaltext = hm->TotalText;
    hm->debuginfo($totaltext);
    
    hm->TotalText("あいうえお");
    )PERL");
    
    freedll( #Perl );
    
  • 選択中のテキスト

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

    • hm->Edit->SelectedText

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

    • hm->Edit->SelectedText( 文字列 )

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

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

    • hm->Edit->LineText

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

    • hm->Edit->LineText( 文字列 )

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

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

    • hm->Edit->CursorPos->{lineno}

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

    • hm->Edit->CursorPos->{column}

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

    #Perl = loaddll( hidemarudir + @"\hmPerl.dll" );
    
    #_ = dllfuncw( #Perl, "DoString", R"PERL(
    my $lineno = hm->Edit->CursorPos->{lineno};
    my $column = hm->Edit->CursorPos->{column};
    hm->debuginfo( "($lineno, $column)" );
    )PERL");
    
    freedll( #Perl );
    
  • マウスの位置に対応するカーソルの位置(秀丸エディタ v8.73以上)

    • hm->Edit->MousePos->{lineno}

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

    • hm->Edit->MousePos->{column}

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

    #Perl = loaddll( hidemarudir + @"\hmPerl.dll" );
    
    #_ = dllfuncw( #Perl, "DoString", R"PERL(
    my $lineno = hm->Edit->MousePos->{lineno};
    my $column = hm->Edit->MousePos->{column};
    my $x = hm->Edit->MousePos->{x}; // マウスのスクリーン座標
    my $y = hm->Edit->MousePos->{y}; // マウスのスクリーン座標
    hm->debuginfo( "($lineno, $column)" );
    )PERL");
    
    freedll( #Perl );
    
  • 関数で扱うのがまどろっこしいということであれば…

    hmPerl.pmを見ればわかるように、値は「$::hm_Edit_TotalText」等に対して行っているわけですから、
    それを直接取り扱っても良いでしょう。(むしろその方が記述が単純です)

    #Perl = loaddll( hidemarudir + @"\hmPerl.dll" );
    
    #_ = dllfuncw( #Perl, "DoString", R"PERL(
    
    
    # テキストを選択中だったら
    if ( hm->Macro->Var('selecting') ) {
      # 選択範囲の「テキスト」という文字を「トスキテ」に置き換え
      $::hm_Edit_SelectedText =~ s/テキスト/トスキテ/g;
    
    } else {
      # テキスト全体の「テキスト」という文字を「トスキテ」に置き換え
      $::hm_Edit_TotalText =~ s/テキスト/トスキテ/g;
    }
    
    )PERL");
    
    freedll( #Perl );