hmPeach 秀丸マクロ用 スクリプト via PHP

概要

秀丸マクロで「PHPと秀丸マクロをシームレスに近い形で利用する」ためのライブラリとなります。

PHPの記述をベースとしつつ、秀丸マクロとの変数値のやりとりや、PHPの中で秀丸マクロを実行することも簡単になっています。

ダウンロード

動作環境

  • 秀丸

    秀丸エディタ x86版(32bit版) ver 8.73以上
    (秀丸エディタ 64bit 版は動作対象ではありません)

  • Microsoft VC++ 再頒布可能パッケージ

    Visual Studio 2019 C++ ランタイム
    x86版をインストールしたことが無い方はインストールしてください。
    お手持ちのOSが64bitか32bitかには関わりなく、x86版 (vc_redist.x86.exe) のインストールが必要です。

  • 備考

    あなたのPCにすでにPHPがインストールされていたとしても、
    そのPHPとは一切干渉しません。
    又、既存のPHP環境の妨げになるようなこともありません。

インストール先は秀丸のフォルダ

  • hmPeach_setup_x86.msiをダウンロードする。
  • ダウンロードした hmPeach_setup_x86.msi を実行。
    インストール先は、「必ず秀丸があるフォルダ(hidemaru.exeがあるフォルダ)と同じフォルダにする必要があります。
    サブフォルダや別フォルダでは動作しません。
  • インストールすると、 秀丸直下に「php8ts.dll」がコピーされます。
    又、「phpというサブフォルダ」が出来上がり、
    その中にphpインタプリタが「フルライブラリ」込みでまるまる配置
    されます。

VC++ 2019 ランタイムも忘れずに

ソース例

  • (DoFile関数の中身の記述は)PHPで動作するソースは原則的には動作します。
  • PHP内から秀丸マクロが実行可能です。
  • PHPと秀丸マクロとの変数のやり取りも、PHPで記述します。
  • .macと.phpの2つのファイルに分ける

    mytest.mac
    #PHP = loaddll( hidemarudir + @"\php\hmPeach.dll" );
    #_ = dllfuncw( #PHP, "DoFile", currentmacrodirectory +@"\mytest.php" );
    freedll(#PHP);
     
    message($ddd + $ddd); // 秀丸マクロへと伝達されたものは、秀丸マクロ側からも見える。
    
    mytest.php
    <?php
    # 現在秀丸編集中のテキスト内容。テキストの取得だけではなく、テキストの設定も可能。
    $text = $Hm->Edit->getTotalText();
    echo $text;
    
    list($lineno, $column) = $Hm->Edit->getCursorPos();
    echo "($lineno,$column)";
    
    # 秀丸マクロの「date」のシンボルの内容をこのPHPに持ってくる
    $date = $Hm->Macro->getVar('date');
    echo $date;
     
    $Hm->Macro->setVar('$bbb', "PHPから秀丸マクロへと変数値を書き出す");
    $Hm->Macro->setVar('#ccc', 3000);
    $Hm->Macro->setVar('$ddd', "★★");
      
    $Hm->Macro->doEval(<<<'MACRO'
        message($bbb); // PHPの中で秀丸マクロを実行する。
        message(str(#ccc));
    MACRO
    );
    ?>
    

ライセンス

  • hmPeach.dll、php_hidemaru.dll、hmPeach.php

    全て Apache License 2.0となります。

    ソースの場所

    • Githubにソースがあります。
  • 上記以外の「PHP」関連ファイルについて

    PHP for windows 8.0.3 (スレッドセーフ版)と同一のバイナリです。
    PHP License 3.1、 Zend Engine については Zend Engine License、
    その他については、それぞれのライセンスに従います。