エディタで保存時にブラウザをオートリロードするやつ

好きなエディタで保存と同時に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スクリプトでもたまに死ぬことがあったので、同じことが発生してたのかも