ほとんどのマクロの文、マクロのキーワード、マクロの関数を、だいたいそのままで表記できるようになっています。(一部例外はあります)
文でもキーワードでも関数でも、全て関数の書き方(メソッドの書き方)になります。
この機能を利用する場合、秀丸エディタ v8.98 (正式版 or β9以上)を強く推奨します。
そうでない場合、数値と文字列の型を間違えて実行すると秀丸が不正な状態となります。
from hmPy import *
DLL読み込み関連は、「loadDllなど、jsmode独特のDllマネージ機能」は実装されていません。
こちらについては、
秀丸マクロと同一の使用感の関数群がすべて使用できます。
COM読み込み関連は、「createObjectなど、jsmode独特のcreateObject」は実装されていません。
こちらは、普通にhmPyでは、.NETのdllが読み込めるため、そちらの機能で対応したほうが自然な実装となりエレガントでしょう。
又、最低限の関数として
のみが用意されています。
jsmodeの非同期関連、例えば、postExecMacroFileやpostExecMacroMemoryは実装されていません。
こちらはhmPyでの記述にはやや難がありますので、
常駐コンポーネントを作るのに適した、hm.NETや、Hm.NetCOMを利用することをオススメします。
execjsで動作するわけではないため、currentjsfilenameは機能しません。
(常にcurrentmacrofilenameと同じものを返します)
getresultex.rstr(...)、geteventparam.rstr(...)、getconfig.rnum(...)、method.rnum(...)、method.rstr(...)など、
返り値の型を「取得したいのは文字列(rstr)、あるいは数値(rnum)」と明示する必要があります。
これらは、jsmodeとは異なり、2つの値を返します。
より自然な形で実装されています。
from hmPy import * nLine, nColumn = getlinecount("ABCD\nXYZ",7, 0); # 最後の引数は不要なので、ダミーの0を入れておく hm.OutputPane.Output([nLine, nColumn])
from hmPy import * openreg("CURRENTUSER", "Software\\Hidemaruo\\Hidemaru"); i = 0; while( 1 ): strVal, nRegType = enumregvalue( i, 0 ); # 最後の受け取り用の引数は不要なので、ダミーの0を入れておく if strVal=="": break; hm.OutputPane.Output(str(strVal) + "\t" + str(nRegType) + "\r\n"); i = i + 1; closereg();
後述の書き方が変わるものやサポートしていないもの以外は、文/キーワード/関数をそのままの名前で、パラメータ全体に()を付けるだけでメソッドとして使用可能です。
同じ名前でありながら文/キーワード/関数で用途が違うものがありますが、パラメータの指定が適切であれば()を付けるだけでいいです。
キーワードで[]で表すようなものも、()にすればできます。
文の結果コードはresult()でも取得できますが、関数の返り値としても取得できます。
()を付けずに関数名だけで書いてしまう場合、エラーにならないので注意が必要です。
同名の変数として上書きしたりすると、使用できなくなってしまうので注意が必要です。
import hmPy as hg
openfile等の予約語パラメータはencode相当の数値になります。
searchdown等の予約語パラメータはsearchoption相当の数値になります。
getconfigでできるキーワードの多くはサポートせず、getconfigで取得します。
getconfigcolorでできるキーワードはサポートせず、getconfigcolorで取得します。
fontname()とfontsize()だけはキーワード相当でも可能です。
getlinecount、enumregvalueは返り値の他にパラメータで結果を受け取る特殊な使い方ですが、オブジェクトを渡して結果を受け取ります。
find文はfind1()、replace文はreplace1()、escape文はescapeselect()に名前を変更しています。
print文はprint2()、ascii関数はascii2()など、いくつかの関数が変更されています。
hmPy.pyの中身を見れば、もとの関数名はすぐにわかりますので、そちらで判断してください。
以下のものは()を付けるだけの書き換えする方法はサポートしません。
execmacro js execjs jsmode call refcall setactivehidemaru nexthidemaru prevhidemaru nexthidemaruicon prevhidemaruicon nexttab prevtab GREP FIND ENV exit系、quit系 COM関係 (getobject callmethod callmethod_returnstr callmethod_returnnum callmethod_returnobj getpropstr getpropnum getpropobj setpropstr setpropnum setpropobj getcollection allowobjparam setcomdetachmethod) getconfigでできるキーワード (fontcharset boldstate width kinsokustate correctlineno linespace freecursor tabcount indentstate showtab showruler tabruler linenostate pagestate formwidth hilightstate hilighttitle savewitheof ignoreeof backup) getconfigcolorでできるキーワード (tcolor bcolor lcolor ccolor rcolor rulercolor rulerbackcolor) encodeuri decodeuri split join DDE関係全部 return(キーワード) true(キーワード) false(キーワード) yes no eof