エディタで保存時にブラウザをオートリロードするやつ
好きなエディタで保存と同時にFirefoxをリロードするAHKスクリプト - AUSGANG SOFT
のNILScript版というか。
NILScript書いたの初めてなので、なんか間違えてるかも。
var Window = require('Window').Window; var Hotstrokes = require('Hotstrokes').Hotstrokes; var reload = (function () { var signal = new Signal(); var thread = Thread.create(function () { while (true) { signal.wait(); var ie = Window.find('IEFrame'); if (!!ie) { sleep(200); //環境によってエディタが保存失敗することがある ie.sendKeys('F5'); } } }); return function () { signal.pulse(); }; })(); Hotstrokes .defineConditions({ 'Editor': function () { return /^jEdit/.test(this.activeWindow.text); } }) .map('Editor', { 'Ctrl+S': reload }) .register(); Main.createNotifyIcon();
要点
- エディタ(jEdit)でCtrl-S押したときだけIEがリロードされる(というかF5キーを送る)
- F5キーを送るだけの処理がわざわざThread+Signalになっている(処理をシリアル化している)のは、そうしないと高速にCtrl+Sが送られたときにスクリプトが死んでしまうため
- ネタ元のAutoHotKeyスクリプトでもたまに死ぬことがあったので、同じことが発生してたのかも