rcmdnk's blog

Requester: Websters Timeline History, 1586 - 2007

Windows 10でFirefoxを使っていて、プラグインのVimperatorを入れて さらにVimperatorの multi_requester.js を入れて使おうとしたところエラーが出て使えなくなっていました。

Windows 10のせいかと思って面倒そうなので放っておきましたが 意外と簡単なところで治ったのでそれについて。

Vimperator

VimperatorはFirefox上で Vimライクなキーバインドを実現してくれるプラグインですが、 hjklで移動、等の他にもキー操作で色々なことを実現できます。

他にも似たようなものがありますが、単にVimライクな移動を出来る様になるだけのものや 拡張が少なかったりするので、未だにVimperatorが一番良いです。 最近ちょっとプラグインの方も含めあまり活発な感じはしませんが。

単にVimライクな移動をするだけであれば、 WindowsならAutohotKey、MacならKarabinerを使えば OS全体でその様な動きは実現できます。

話が逸れましたがVimperatorではVimの様にプラグインを追加して 機能を拡張することが出来ます。

vimpr/vimperator-plugins: for Vimperator plugins

ここに一通りのものが揃っています。

今入れているのは

  • vimperator-plugins: :ancコマンドを打つとリンクになっていないURLな文字列をリンクにしてくれる(アンカーを付ける)。let g:auto_append_anchor = "true".vimperatorrcに設定しておけばHit a Hint(f)時に自動で付与。
  • caret-hint.js: ;cで文字単位でcaret選択して飛べる様になる。
  • multi_requester.js: コマンドライン(下のステーターすバー)からいろいろ参照できるようになる。アルクとかで辞書を登録しておくと便利
  • _libly.js: multi_requester.jsに必要。

multi_requesterでのエラー

この中でmulti_requesterを使おうとしたところ、

Exception... "Component returned failure code: 0x80520015 (NS_ERROR_FILE_ACCESS_DENIED) [nsFileOutputStream.init]" nsresult "0x80520015 (NS_ERROR_FILE_ACCESS_DENIED)" location: "JS frame :: resource://librator/storage.jsm :: writeFile :: line 1 data: no]

と言った感じのエラーが出て使えてませんでした。

検索してもそれっぽいのは出てこないので、 Vimperatorを使ってる人がもう少なすぎて情報が無いのかな、、、とも思ってましたが、 よく見てみると

NS_ERROR_FILE_ACCESS_DENIED

という文字列があるので何らかのアクセスが制限されてる様子。

最初はプラグインのあるディレクトリとかのパーミッションかと思いましたが、 正解はコマンドヒストリーなどを保存している ~/vimperatorディレクトリでした。(MacやLinuxなら~/.vimperator。)

この中に、 ~/vimperator/info/defaultというフォルダがあってここに history-command等のファイルが入っていますが、ここにある プラグイン用の記録ファイルの plugins-multi_requesterの所有権がAdministratorsになってました。

このフォルダもファイルもFirefox(Vimperator)使用時に自動的に出来るものですが、 なぜのファイルの所有権がこうなってるのかちょっと不明。 (history-commandなどはユーザー所有。)

そこで、Firefoxを閉じて、一度このフォルダを消して再起動してみたところ plugins-multi_requesterの所有権はユーザーのものになり、 multi_requesterは使えるようになりました。

しばらく使えないでストレスがありましたが、さっさと試して見ればよかった。。。 こんなところとは。。。。

Sponsored Links
Sponsored Links

« BatteryBar: Windowsでタスクバーにバッテリーの残り時間表示 Vimの'set'の使い方(イコールの右側だけスペース禁止) »

}