自動起動マクロとhmJavaVMによるイベントハンドラ
秀丸マクロで一番困る現象が、
「マクロは実行した短時間に変数を構築し、終わったら全て破棄される」
という「変数や処理の情報が揮発する」作りになっていることです。
このためマクロ間の「時間間隔を置いた」情報の共有は、
不可能でこそないものの、
自然な記述では実現しにくい、という大きな問題がありました。
しかし、hmJavaVMではそのようなことに困ることはありません。
なぜなら、
1つのプロセス内であれば、マクロ実行中だろうと、そうでなかろうと、「情報が継続している」
からです。
イベントハンドラ的な記述をJavaで組んでみることにより、
如実に秀丸マクロとは異なる感触を実感出来ることでしょう。
Java側
Java側では全く普通のプログラムを書くことができます。
下の「各々のメソッド」は、呼び出されるタイミングは異なりますが、
「クラス内の変数」は「該当の秀丸プロセス」が生き続けている限り、継続しているため、
クラス全体としてイベントハンドラを彷彿とさせる自然で常識的な記述になっています。
秀丸の自動起動マクロをイベントハンドラの契機とする
以下のように、秀丸マクロの自動起動マクロをイベントハンドラの替わりとしてみましょう
自動マクロとして.macを登録する
下図のように自動マクロとして
- 「ファイルを開いた直後」
- 「新規作成直後」
- 「保存直前と直後」
- 「ファイルを閉じる直前」
で、
HidemaruAutoLaunch.macを呼び出すようにしてみましょう。
動作確認
何か適当にファイルを開き、
そのファイルを次々に「異なるファイル名」や「異なる文字コード」で
セーブし続けてください。
一番最後にそのファイルを閉じた時、「これまでにどのようなファイル名」や「文字コード番号」で保存してきたのか、
すべての情報がアウトプット枠に出ることでしょう。
まとめ
このように、本来のマクロでは、「実行して終了」したら情報が揮発してしまいますが、
hmJavaVMでは、プロセス単位で情報が継続しているため、
Javaの「必ず全てがクラスになっている」という特性との相性の良さも働き、
非常に自然な形でイベントハンドラ的に記述出来ます。