hmEdgeJSが秀丸マクロへアクセスする関数

ヒアドキュメント用の関数「R」

「R」という関数に、「以下のように、コメントを内側に書いた関数そのものを渡す」ことで、
ヒアドキュメント化された文字列が返るようになっています。
JavaScriptそのものには、ヒアドキュメントが存在しないため、このように「R」という関数を設けています。

var str = R( f => { /*
    あいうえお
    かきくけこ
    \n\n
*/ } ); // /*~*/が「書いたままの文字列である」ヒアドキュメント化される。

hm.debuginfo(str)

hm.Macro.Var['$str'] = str; // 秀丸マクロの方に伝達
    

JSから秀丸マクロへアクセスする関数

JavaScriptやnodeのライブラリを生かしつつ、秀丸マクロの機能や各種値もほぼ全て使えるところが、
hmEdgeJSが優れている所以です。

  • 秀丸マクロをそのまま実行
  • 「秀丸マクロの変数」⇔「JSの変数」を相互にやり取り。

の2つの手段で秀丸マクロを取り扱うことが出来ます。

  • JSから秀丸マクロを実行

    • hm.Macro.Eval( ヒアドキュメント or 文字列)

      引数の文字列を、「秀丸マクロ」として実行する。

      「Eval関数」には「R関数」の機能が内包されています。

  • JSから秀丸マクロの変数の読み書き

    • hm.Macro.Var['変数名']

      対象の「秀丸マクロ」としてのシンボル名に対応する値を取得する。

    • hm.Macro.Var['変数名'] = 新たな値

      対象の「秀丸マクロ」としてのシンボル名に、新たな値を設定する。
      (読み取り専用の値には設定出来ません)

  • JSから秀丸マクロの変数の読み書き ~別の記述方法~

    [...]ではなく(...)による、記述方法も提供しています。

    • hm.Macro.Var( 変数名 )

      対象の「秀丸マクロ」としてのシンボル名に対応する値を取得する。

    • hm.Macro.Var( 変数名 , 新たな値 )

      対象の「秀丸マクロ」としてのシンボル名に、新たな値を設定する。
      (読み取り専用の値には設定出来ません)

    // 秀丸マクロの「#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 );
            

「menuやmenuarray」などGUI関連は表示できない

hmEdgeJSはほぼすべてが秀丸とは別スレッドで実行されているため、
秀丸の一部のマクロ命令文(menuやmenuarray)などが実行できません。

これらはマクロファイル内に直接記述してください。