LoginSignup
1
1

More than 1 year has passed since last update.

秀スクリプトを楽にビルドして実行する方法

Last updated at Posted at 2022-04-05

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(); を実行した場合、書いたスクリプト自身を全消去して保存することになるためです。短いマクロであればアンドゥでなんとかなるかもしれません。
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1