自動リロードで開発をアジャイルにするたったひとつの方法!や萌ディタで保存と同時にSafariをリロードするデモと似たようなものをWSH with JScriptと秀丸マクロで泥臭く実現してみようとかいう話。やろうと思えばいろんな環境で実現できそうてなもんだ。
ブラウザのリロードは魔法のメソッドSendKey
でF5を送ってやれば良し。ただ、SendKey
はアクティブなウィンドウにしか効果が無いので、
- CSSファイルを保存
- ブラウザをアクティブに
- F5をSendKey
- エディタをアクティブに
としてやる必要がある。エディタをアクティブにするのはPIDさえ知ってればJScriptでいけるけど、調べるのはちょっと面倒。しかしながらほとんどのエディタは「既に開いているファイルを開こうとすると、既にそのファイルを開いているウィンドウ(とかタブ)を最前面にする」という動作をするので、保存したCSSファイルを開こうとしてやればエディタがアクティブになってくれる。
JScriptは
filename = WScript.Arguments(0);
var oShell = WScript.CreateObject("WScript.Shell");
oShell.AppActivate("Mozilla Firefox");
WScript.Sleep(100);
oShell.SendKeys("{F5}");
oShell.Run("hidemaru.exe " + filename);
こんなんで。秀丸側は保存時フックのためにはCtrl+Sに、
$fExt = filetype + "."; if (strstr(".css.", $fExt) != -1) { save; run "wscript.exe D:\\Development\\wsh\\reload-firefox.js " + filename2; } else { save; } endmacro;
とかいうマクロを割り当てるとかで!!! 保存時フックとは言いません。