Vimperatorのecho/echoerr/echomsgの履歴をFirefoxのエラーコンソールで見る

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にも欲しいです….