あるJavaのソースコードを開くと、Emacsのプロセスが100% CPUを使ってしまい、カーソル移動もしにくくなってしまうことがありました。
調査方法
- M-: で (setq debug-on-quit t) と入力してください
- CPU 100%つかう状況になったらC-gを押してください(Quit)
- *Backtrace* バッファにQuitされたEmacs Lispのバックトレースが出ます。それをヒントに原因を見つけます。
今回遭遇した事象
Ubuntu 14.04のEmacs 24.3.1 で
which-function-mode を有効にした状態であるJavaファイルを開くと起きました。 Mac版の Eamcs 24.5.1では再現しないので、Emacsのバージョンをあげると回避できるかもしれません。
EmacsでCPUを食うことはあまりなかったので、結構驚きました。
後日談: Emacsにprofiler機能があったのか...
M-x profiler-start で開始して、 M-x profiler-report で結果が見られます。 M-x profiler-stop で終了。これで、Emacsが遅い原因がわかるかも。