3行で説明
- 秀スクリプト、面白そうですよね。
- 秀丸で秀スクリプトを開いて(書いて)F5を押したら、自動でビルドして実行までしてくれると楽なこともあるかもしれません。
- というわけで秀丸マクロを書きました。
hidescript_build_and_run.mac
/*
秀スクリプト ビルド & 実行
機能
秀スクリプトを秀丸マクロにトランスパイルのち、
秀スクリプトのあるディレクトリに移動し、
秀丸マクロを実行します
前提
hs.macと、当ファイルは、macro/ 直下に配置すること
*/
disabledraw; // 高速化用
$firstMacroDir=currentmacrodirectory;
$hsDir=directory;
// ファイル名から主ファイル名(拡張子を含まない)を得る
$hsBase=basename;
#pIndex=strstr($hsBase, ".");
$hsNode=leftstr($hsBase, #pIndex);
// 現在位置を保存する
#x = x; // hs.macによるカーソル強制移動から復帰する用
#y = y;
// 秀スクリプトファイルをトランスパイルし、トランスパイル結果(秀丸マクロファイル)を得る
execmacro "hs.mac";
// トランスパイル結果を移動する:
// 当マクロのあるディレクトリ(macro/直下を想定)から、マクロ実行時に開いていたファイルのディレクトリへ
runsync2 "cmd /c move " + $firstMacroDir + "\\" + $hsNode + ".mac" + " " + $hsDir + "\\" + $hsNode + ".mac";
// トランスパイル結果を閉じる
$macDir=directory;
setactivehidemaru findhidemaru($hsDir + "\\" + $hsNode + ".hs");
closehidemaru findhidemaru($macDir + "\\" + $hsNode + ".mac");
// トランスパイル結果を実行する
escape; // hs.macによる範囲選択を解除する用
moveto #x, #y; // hs.macによるカーソル強制移動から復帰する用
execmacro directory + "\\" + $hsNode + ".mac";
上記マクロを秀丸マクロのディレクトリ直下に配置して、
以下のようなマクロをF5キーに割り当てればOKです。
F5.mac
if (filetype == ".hs") {
execmacro currentmacrodirectory + "\\hidescript_build_and_run.mac";
endmacro;
}
特徴
-
macro/hidescript/
のようなディレクトリに秀スクリプトファイルを配置しても動きます。
使用上の注意
- 例えば
selectall(); insert(""); save();
のような、編集中テキストを書き換えて保存する可能性があるスクリプトを書く場合は、このマクロのかわりに別のものを使うことを推奨します。- なぜなら、
selectall(); insert(""); save();
を実行した場合、書いたスクリプト自身を全消去して保存する
ことになるためです。短いマクロであればアンドゥでなんとかなるかもしれません。
- なぜなら、