現在秀丸エディタで開いているテキストに対して、以下の関数を利用することが出来ます。
現在編集中の秀丸エディタのテキスト全体を得る
現在編集中の秀丸エディタのテキスト全体を、引数の文字列にする。
#Perl = loaddll( hidemarudir + @"\hmPerl.dll" ); #_ = dllfuncw( #Perl, "DoString", R"PERL( my $totaltext = hm->TotalText; hm->debuginfo($totaltext); hm->TotalText("あいうえお"); )PERL"); freedll( #Perl );
(単純選択のみが対象となります。ボックス選択や複数選択は対象にはなりません)
現在編集中の秀丸エディタの「選択している」テキストを得る。
現在編集中の秀丸エディタの「選択している」テキストを、引数の文字列へと置き換える。
#Perl = loaddll( hidemarudir + @"\hmPerl.dll" ); #_ = dllfuncw( #Perl, "DoString", R"PERL( # 何かを単純選択していたら、テキストが得られる my $selectedtext = hm->SelectedText; hm->debuginfo($selectedtext); hm->SelectedText("選択しているテキストをこの文字列に置き換えた"); )PERL"); freedll( #Perl );
現在編集中の秀丸エディタの「カーソルがある行」のテキストを得る。
現在編集中の秀丸エディタの「カーソルがある行」のテキストを、引数の文字列へと置き換える。
#Perl = loaddll( hidemarudir + @"\hmPerl.dll" ); #_ = dllfuncw( #Perl, "DoString", R"PERL( my $linetext = hm->LineText; hm->debuginfo($linetext); # 行のテキストを入れ替える感じにするなら、最後に「\n」を付けること。 hm->LineText("カーソル行のテキストをこれに変更\n"); )PERL"); freedll( #Perl );
現在選択中の秀丸エディタのカーソル位置の行番号を得る。 秀丸マクロのlinenoと同じ値。
現在選択中の秀丸エディタのカーソル位置のカラム値を得る。 秀丸マクロの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 );
現在選択中の秀丸エディタの「マウスの位置に対応するカーソル位置」の行番号を得る。
現在選択中の秀丸エディタの「マウスの位置に対応するカーソル位置」のカラム値を得る。
#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 );