Pale MoonFirefoxの旧アドオンの仕組みに対応していると聞いて。

Pale Moon用にフォークしているGitHubリポジトリがあったのでclone + Make + インストールしてみた。

インストール自体はできてしまい、おぉ!!と思ったものの、 上記リポジトリは更新が6年前で終わっているし、いろいろ動かなかった。

ということで、エラーコンソールとにらめっこしつつ、フォークして動くようにしたよ。

Build & Install

以下でビルド

$ cd vimperator-pm
$ (cd vimperator/; make xpi)
Building XPI...
Including en-US documentation
Including ja documentation
Replacing UUID, VERSION, DATE and UPDATEURL tags
Packaging up vimperator-3.15.0.xpi
SUCCESS: ../downloads/vimperator-3.15.0.xpi

downloadディレクトリに xpi ファイルが作成されるので、ドラッグ&ドロップでインストールできるよ。

(↑↑普段、こんな丁寧な解説は書かないんだけど、自分が久々すぎて戸惑いながらやったのでw)

雑感

7~8年ぶりくらいにJavaScriptとかXULとかXPCOMを触った。 このあたりはもう完全にいにしえの技術だね。 JavaScriptは現役とはいえ、Vimperatorの中のJavaScriptは昔のMozilla JSの方言が大量に入っていて今のEMCAScript 6thとは別物と言ってよい。

例えば、こんなコードがわりと頻繁に出てくる。

{
    __iterator__: function() {
        for (let [k, v] in Iterator(obj)) {
            // do something
            yield v;
        }
    }
}
  • __iterator__は特殊なメソッドでECMAScriptでいうところの *[Symbol.iterator]() {}
  • Mozilla JSでは*をつけてジェネレータであることを宣言しなくても良い
  • Iterartor(obj)obj の各キー、および値の配列を返すイテレータを生成する
  • for-in で回す! (for-ofではない)

等々

昔は先進的だったのだが……。