現在秀丸エディタで開いているテキストに対して、以下の関数を利用することが出来ます。
現在編集中の秀丸エディタのテキスト全体を得る
現在編集中の秀丸エディタのテキスト全体を、文字列へと変更する
#PY = loaddll( hidemarudir + @"\hmPython3.dll" ); #_ = dllfuncw( #PY, "DoString", R"PY( from hmPython import * totaltext = hm.Edit.TotalText; hm.debuginfo(totaltext); hm.Edit.TotalText = "あいうえお"; )PY"); freedll( #PY );
(単純選択のみが対象となります。ボックス選択や複数選択は対象にはなりません)
現在編集中の秀丸エディタの「選択している」テキストを得る。
現在編集中の秀丸エディタの「選択している」テキストを、"文字列"へと置き換える。
#PY = loaddll( hidemarudir + @"\hmPython3.dll" ); #_ = dllfuncw( #PY, "DoString", R"PY( from hmPython import * # 何かを単純選択していたら、テキストが得られる selectedtext = hm.Edit.SelectedText; hm.debuginfo(selectedtext); hm.Edit.SelectedText = "選択しているテキストをこの文字列に置き換えた"; )PY"); freedll( #PY );
現在編集中の秀丸エディタの「カーソルがある行」のテキストを得る。
現在編集中の秀丸エディタの「カーソルがある行」のテキストを、文字列へと置き換える。
#PY = loaddll( hidemarudir + @"\hmPython3.dll" ); #_ = dllfuncw( #PY, "DoString", R"PY( from hmPython import * linetext = hm.Edit.LineText; hm.debuginfo(linetext); # 行のテキストを入れ替える感じにするなら、最後に「\n」を付けること。 hm.Edit.LineText = "カーソル行のテキストをこれに変更\n"; )PY"); freedll( #PY );
現在選択中の秀丸エディタのカーソル位置の行番号を得る。
秀丸マクロのlinenoと同じ値。
現在選択中の秀丸エディタのカーソル位置のカラム値を得る。
秀丸マクロのcolumnと同じ値。
#PY = loaddll( hidemarudir + @"\hmPython3.dll" ); #_ = dllfuncw( #PY, "DoString", R"PY( from hmPython import * pos = hm.Edit.CursorPos hm.debuginfo( str(pos.lineno) + "," + str(pos.column) ); )PY"); freedll( #PY );
現在選択中の秀丸エディタの「マウスの位置に対応するカーソル位置」の行番号を得る。
現在選択中の秀丸エディタの「マウスの位置に対応するカーソル位置」のカラム値を得る。
#PY = loaddll( hidemarudir + @"\hmPython3.dll" ); #_ = dllfuncw( #PY, "DoString", R"PY( from hmPython import * mpos = hm.Edit.MousePos hm.debuginfo( str(mpos.lineno) + "," + str(mpos.column) ); )PY"); freedll( #PY );
以下は、Pythonスクリプト全体の中で、秀丸専用関数となるhm.Edit.TotalTextを利用した例となります。
スクリプト全体の中で、hmPython3専用関数が使われるイメージのようなものの参考としてください。
#PY = loaddll( hidemarudir + @"\hmPython3.dll" ); if (! #PY) { message("hmPython3が導入されいません。"); endmacro; } #_ = dllfuncw( #PY, "DoString", R"PY( from hmPython import * from html.parser import HTMLParser class MyHTMLParser(HTMLParser): def handle_starttag(self, tag, attrs): hm.debuginfo("Encountered a start tag:" + ',' + str(tag)) def handle_endtag(self, tag): hm.debuginfo("Encountered an end tag :" + ',' + str(tag)) def handle_data(self, data): hm.debuginfo("Encountered some data :" + ',' + str(tag)) parser = MyHTMLParser() parser.feed(hm.Edit.TotalText) )PY" ); freedll( #PY );