backtrace が読めない

emacs でエラーが出たときに *Backtrace* バッファに表示されるトレース,日本語の部分が読めないのが前から気になってたので調べた。

debug-on-error を有効にして M-: から (error "えらー") を評価してみると

Debugger entered--Lisp error: (error "\x3048\x3089\x30fc")
  signal(error ("\x3048\x3089\x30fc"))
  error("\x3048\x3089\x30fc")
  eval((error "\x3048\x3089\x30fc"))
  eval-expression((error "\x3048\x3089\x30fc") nil)
  call-interactively(eval-expression nil nil)

こんなのが出る。

ソースコード追いかけてみたところ,debug.el で定義されている debugger-setup-buffer の中で (set-buffer-multibyte nil) しているので,そのせいで日本語はエスケープされてしまうらしい。

で,どう対処すればいいのかよくわからないけど,"\x3048\x3089\x30fc" みたいなところをコピーして別のバッファに移動して eval-expression するなりなんなりすれば "えらー" みたいに表示されて読めることに気付いた(multibyte なバッファでやらないと読めない)。これでいいことにしようか。