Pythonの機能をフルに生かしつつ、秀丸マクロの機能や各種値もほぼ全て使えるところが、
hmPython3が優れている所以です。
の2つの手段で秀丸マクロを取り扱うことが出来ます。
秀丸エディタ 8.66以降では、Hidemaru_EvalMacroという関数が秀丸本体からエキスポートされたため、
マクロ実行中であれば、秀丸マクロ以外の場所からでもマクロを記述し、実行することが可能となりました。
引数の文字列を、「秀丸マクロ」として実行する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #PY = loaddll( hidemarudir + @"\hmPython3.dll" ); if ( ! #PY ) { message( "hmPython3.dllが導入されていません" ); endmacro; } #_ = dllfuncw(#PY, "DoString", R"PY( from hmPython import * py_x = 100 #Pythonの中で、hm.Macro.Eval関数を使って、秀丸のマクロを書くことが出来る hm.Macro. Eval ( r ''' #a = 3; debuginfo 1; showvars; message("あいうえお"); showvars; ''' ) )PY" ); freedll( #PY ); |
対象の「秀丸マクロ」としてのシンボル名に対応する値を取得する。
対象の「秀丸マクロ」としてのシンボル名に、新たな値を設定する。
(読み取り専用の値には設定出来ません)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #PY = loaddll( hidemarudir + @"\hmPython3.dll" ); #_ = dllfuncw( #PY, "DoString", R"PY( from hmPython import * # 秀丸マクロの「#aaa」という変数に3を設定。 hm.Macro.Var[ '#aaa' ] = 3 ; # 秀丸マクロの「$bbb」という変数に「あいうえお」を設定。 hm.Macro.Var[ '$bbb' ] = "あいうえお。" # 秀丸マクロとして一連の文字列を実行 hm.Macro. Eval ( r ''' message($bbb); $$message = $bbb + $bbb; message($$message); // アウトプット枠へ出力 #OP = loaddll("HmOutputPane.dll"); #ret = dllfunc(#OP, "Output",hidemaruhandle(0), $$message); freedll(#OP); ''' ); hm.debuginfo( hm.Macro.Var[ '$bbb' ] ); hm.debuginfo( hm.Macro.Var[ 'filename' ] ); hmdate = hm.Macro.Var[ 'date' ]; hm.debuginfo( hmdate ); )PY" ); freedll( #PY ); |