Firefox44からES6の準拠するためにconstとletの挙動が変更された1 2

アドオンが影響を受けたので使えるようにする。

Vimperaterはすでに修正版がAMO(Mozilla Add-ons)に上がっているようなのでなにもしなくてもよいが、上る前だと、Releases · vimperator/vimperator-labsに最新版のxpiがあるのでそこからダウンロードするか、gitレポジトリをcloneしてmakeして、downloadsディレクトリ以下にできたxpiをインストールする必要があった。

一方、はてなブックマークFirefox拡張は修正のプルリクが来ている。

ただ、こちらのプルリクだけだと、Vimperatorからの呼び出し3がうまくいかず、

ReferenceError: CompletionContext is not defined

というエラーが出る。原因は、chrome/content/vimperator/plugin/hatenabookmark.js#L305で補完候補のソートにVimperator内で宣言されたCompletionContext.Sort.unsortedを使用しているが、CompletionContextがconstで宣言されているため。

constをvarに変更しても直りそうだけどCompletionContext.Sort.unsortedはnullなようなので、はてブの拡張の方をnullに変更した。

こちらはプルリク中(Fix ReferenceError: CompletionContext is not defined by tmsanrinsha · Pull Request #18 · hatena/hatena-bookmark-xul

それとversionも上げておかないとFirefoxがAMO版に自動更新してしまう4

これらを修正したコードを、forkして、devブランチに置いた。

インストールするにはまず、Firefoxのabout:configでxpinstall.signatures.requiredをfalseにする。

リポジトリをcloneして、devブランチをチェックアウトする。

$ git clone [email protected]:tmsanrinsha/hatena-bookmark-xul.git
$ cd hatena-bookmark-xul
$ git checkout dev

READMEにはrake installと書いてあるけれども、rake installをすると

$ rake install
rake aborted!
Errno::EISDIR: Is a directory @ rb_sysopen - /Users/tmsanrinsha/Library/Application [email protected]ena.ne.jp
/Users/tmsanrinsha/tmp/hatena-bookmark-xul/Rakefile:107:in `initialize'
/Users/tmsanrinsha/tmp/hatena-bookmark-xul/Rakefile:107:in `open'
/Users/tmsanrinsha/tmp/hatena-bookmark-xul/Rakefile:107:in `block in <top (required)>'
Tasks: TOP => install
(See full trace by running task with --trace)
zsh: exit 1     rake install

というエラーが出るので

$ rake

する。xpiディレクトリ以下にhatenabookmark-2.3.8.2.xpiができるので、Firefoxにドラッグ&ドロップするか、macなら

open -a Firex hatenabookmark-2.3.8.2.xpi

などしてやるとインストールできる。

ちなみに、はてなブックマークVimperator拡張のソースは

${HOME}/Library/Application [email protected]ena.ne.jp/chrome/content/vimperator/plugin/hatenabookmark.js

にある

  • Breaking changes in let and const in Firefox Nightly 44 | Mozilla Add-ons Blog 
  • const や let で定義された変数は window 上のプロパティとならなくなり、let による再宣言は例外が投げられます | Firefox サイト互換性情報 
  • Vimperator ではてなブックマーク拡張を使う · hatena/hatena-bookmark-xul Wiki 
  • Firefox 44にアップデートするとはてなブックマーク拡張が動作しない(追記あり) – Mozilla Flux