Vimperator起動時によくプラグインや.vimperatorrcまわりでエラーが起こったりするんだけど,起動時にステータスラインが一瞬だけ赤くなって,エラーメッセージがすぐに流れてしまって読めないことが結構多い上に,メッセージログが残らない(よね?)ので,結局どんなエラーが起こったのか把握できなくて困る.
これでは不便なので,liberator.echo()系のコマンドが実行されたときに,その出力のログをFirefoxのエラーコンソールに残す設定を作ってみた.
以下を.vimperatorrcの最初の方に書いておけばOK.当たり前だけど,この設定よりも前のところでliberator.echo()系のコマンドが実行されてもエラーコンソールに出力されないので注意.
javascript <<EOM // for liberator.echo() let (echo_old = liberator.echo) { liberator.echo = function(str, flags) { liberator.log("echo: " + str, 0); return echo_old(str, flags); } } // for liberator.echoerr() let (echoerr_old = liberator.echoerr) { liberator.echoerr = function(str, flags) { liberator.log("echoerr: " + str, 0); return echoerr_old(str, flags); } } // for liberator.echomsg() (only for Vimperator 2.0pre or later) let (echomsg_old = liberator.echomsg) { liberator.echomsg = function(str, flags) { liberator.log("echomsg: " + str, 0); return echomsg_old(str, flags); } } EOM
これでエラーコンソールにecho/echoerr/echomsgのログが表示されるようになるはず.あまりJavaScriptを理解してないから変な書き方になってるかも.
ちなみにechomsgはVimperator2.0pre以降にしかないコマンドなので,1.2以前を使っているときはechomsgに関する設定を書いても無意味なので注意.
エラーコンソールを表示させる方法は以下の5通り.
- :javascript!
- :dialog console
- :emenu ツール.エラーコンソール
- Ctrl-Shift-J (Win & Linux),Command-Shift-J (Mac)
- Firefoxメニューの「ツール」→「エラーコンソール」をクリック
設定やプラグインを更新した後に発生したエラーのログをじっくり眺められるようになったおかげで,デバッグがかなり楽になった.今までエラーが発生したときは何度もVimperatorを再起動して一瞬しか表示されないメッセージを読もうと頑張ってたからなー.笑
一瞬だけ赤くなるステータスラインに悩まされている人はぜひ試してみてはいかが?
改善したい点をいくつか.
- echo/echoerr/echomsg全てがエラーコンソールの「メッセージ」欄に表示される
- echoerrは「エラー」欄に表示させるなどしたい.
- エラーコンソールで保持しておけるログの数に上限がある?
- ログの数が多くなるとどんどん流れてしまう様子.
- その場でエラーを確認しながら作業するときは問題ないけど….
もっといい方法を知っている方はぜひ教えてください.
(追記 2008/12/12 15:26)
id:tsukkeeさんから:messagesコマンドを教えていただきました.どうもありがとうございます.
- messagesは
- bold;">Vimperator 2.0pre以降のみ使えるコマンドで,ステータスラインでechoerrの履歴を見ることができて便利です.
オプション'messages'で履歴の表示件数を指定できます.
また,オプション'verbose'の値を変更すれば,echomsgの履歴も全て見ることができるようになります(echoは無理?).
" 表示する履歴の件数を設定する(デフォルトは100) set messages=500 " verboseレベルを設定し,全てのechoerr/echomsgの履歴を見られるようにする(デフォルトは0) set verbose=15
このコマンド,Vimperator 1.2にも欲しいです….