hmPerl 秀丸マクロ用 スクリプト via ActivePerl

概要

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

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

ダウンロード

動作環境

  • 秀丸

    秀丸エディタ x86版(32bit版) ver 8.73以上

  • ActivePerl x86版(32bit版)

    ActivePerl ver 5.10 ~ ver 5.26 まで。
    このバージョンの範囲のみ動作します。

  • 秀丸エディタ ストアアプリ版について

    hmPerlは秀丸ストアアプリ版でも利用することが出来ます。
    (但しデスクトップ版に比べてhmPerlの起動が少し遅くなります。)
    詳細は左メニューのストアアプリ版での利用などを参照してください。

    古いActivePerlの場所

    https://xray-engine.org/index.php?title=ActivePerl

  • PATH

    ActivePerlは、「インストーラー」によってインストールしていること。
    別のマシンからやzipなどを、手コピで持って来ただけ、などではないこと。
    Perlにパス等が通っていること。

    PATHを通したくはないという場合、
    別途hmPerl.xmlを用意することで、PATHの替わりとすることが可能です。

インストール

  • hmPerl.zipを解凍する。
  • 「hmPerl.dll」と「hmPerl.pm」を秀丸エディタのディレクトリ内(hidemaru.exeと同じ場所)へと コピーする。

ソース例

  • (DoString関数の中身の記述は)ActivePerlで動作するソースは原則的には動作します。
  • Perl内から秀丸マクロが実行可能です。
  • Perlと秀丸マクロとの変数のやり取りも、Perlで記述します。
  • 秀丸マクロとPerlで値をやりとりする以上、グローバル変数が比較的頻繁に出現しますので、
    「use strict」などは無理のあるオプションとなります。
    #Perl = loaddll( hidemarudir + @"\hmPerl.dll" );
    
    #_ = dllfuncw( #Perl, "DoString", R"PERL(
    use Win32;
    use Encode;
    
    # 現在秀丸編集中のテキスト内容。テキストの取得だけではなく、テキストの設定も可能。
    my $text = hm->Edit->TotalText();
    
    if ("表示" =~ /表/) {
      hm->debuginfo("表示という文字列がマッチ")
    }
    
    my $a = hm->Edit->CursorPos->{lineno};
    hm->debuginfo("現在のカーソルのlineno:".$a);
    my $b = hm->Edit->CursorPos->{column};
    
    for (1..10) {
        hm->debuginfo("現座のカーソルのcolumn:".$b);
    }
    
    # 秀丸マクロの「filename」のシンボルの内容をこのPerlに持ってくる
    my $filename = hm->Macro->Var('filename');
    hm->debuginfo($filename);
    
    my $title = '質問';
    my $decoded_title = Encode::decode('utf-8', $title);
    my $decoded_text = Encode::decode('utf-8', $text);
    
    $reply = Win32::MsgBox($decoded_text, 4, $decoded_title);
    
    hm->Macro->Var('$bbbbb', "Perlから秀丸マクロへと出す");
    hm->Macro->Var('$ccccc', "Perlの外の秀丸マクロ空間へ");
    
    hm->Macro->Eval(<<'MACRO'
        message($bbbbb); // Perlの中で秀丸マクロを実行する。
    MACRO
    );
    )PERL");
    
    message($ccccc); // 秀丸マクロへと伝達されたものは、Perlの外からも見える
    
    freedll( #Perl );
    

ライセンス

  • hmPerl.dll、hmPerl.dllのソース、hmPerl.pmのソース

    全て Apache License 2.0となります。

    ソースの場所

    • Githubにソースがあります。

      (※ Githubでリポジトリの「サブディレクトリ」だけをダウンロードする簡単な方法は、こちら)

    • コンパイルするのにActivePerlの「***perl\lib\CORE\PerlEz.h」を参照するので、
      インクルードパスとして「***perl\lib\CORE」を追加してください。