「R」という関数に、「以下のように、コメントを内側に書いた関数そのものを渡す」ことで、
ヒアドキュメント化された文字列が返るようになっています。
JavaScriptそのものには、ヒアドキュメントが存在しないため、このように「R」という関数を設けています。
var str = R( f => { /* あいうえお かきくけこ \n\n */ } ); // /*~*/が「書いたままの文字列である」ヒアドキュメント化される。 hm.debuginfo(str) hm.Macro.Var['$str'] = str; // 秀丸マクロの方に伝達
JavaScriptやnodeのライブラリを生かしつつ、秀丸マクロの機能や各種値もほぼ全て使えるところが、
hmEdgeJSが優れている所以です。
の2つの手段で秀丸マクロを取り扱うことが出来ます。
引数の文字列を、「秀丸マクロ」として実行する。
「Eval関数」には「R関数」の機能が内包されています。
対象の「秀丸マクロ」としてのシンボル名に対応する値を取得する。
対象の「秀丸マクロ」としてのシンボル名に、新たな値を設定する。
(読み取り専用の値には設定出来ません)
[...]ではなく(...)による、記述方法も提供しています。
対象の「秀丸マクロ」としてのシンボル名に対応する値を取得する。
対象の「秀丸マクロ」としてのシンボル名に、新たな値を設定する。
(読み取り専用の値には設定出来ません)
// 秀丸マクロの「#aaa」という変数に3を設定。 hm.Macro.Var['#aaa'] = 3; // こちらの書き方でもOK hm.Macro.Var('#aaa', 3 ); // 秀丸マクロの「$bbb」という変数に「あいうえお」を設定。 hm.Macro.Var['$bbb'] = "あいうえお。"; // こちらの書き方でもOK hm.Macro.Var('$bbb', "あいうえお。" ); // 秀丸マクロとして一連の文字列を実行 hm.Macro.Eval( f => { /* 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'] ); var hmdate = hm.Macro.Var['date']; hm.debuginfo( hmdate );
hmEdgeJSはほぼすべてが秀丸とは別スレッドで実行されているため、
秀丸の一部のマクロ命令文(menuやmenuarray)などが実行できません。
これらはマクロファイル内に直接記述してください。