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

  • 概要

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

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

  • ダウンロード

    hmPerl.zipファイル。ver 1.551
    └更新日 2017/09/04
  • 動作環境

    • 秀丸

      秀丸エディタ x86版(32bit版) ver8.66以上

    • ActivePerl x86版(32bit版)

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

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

      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にソースがあります。
      • コンパイルするのにActivePerlの「***perl\lib\CORE\PerlEz.h」を参照するので、
        インクルードパスとして「***perl\lib\CORE」を追加してください。