hmPython3が持つエディタ編集領域の関数

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

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

  • テキスト全体

    • hm.Edit.TotalText

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

    • hm.Edit.TotalText = "文字列"

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

    #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 );
    
  • 選択中のテキスト

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

    • hm.Edit.SelectedText

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

    • hm.Edit.SelectedText = "文字列"

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

    #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 );
    
  • カーソルがある行のテキスト

    • hm.Edit.LineText

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

    • hm.Edit.LineText = "文字列"

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

    #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 );
    
  • カーソルの位置

    • hm.Edit.CursorPos.lineno

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

    • hm.Edit.CursorPos.column

      現在選択中の秀丸エディタのカーソル位置のカラム値を得る。
      秀丸マクロの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 );
    
  • マウスの位置に対応するカーソルの位置(秀丸エディタ v8.73以上)

    • hm.Edit.MousePos.lineno

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

    • hm.Edit.MousePos.column

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

    #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的ソースの中に、hmPython3の関数が混じる例

以下は、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 );