Emacs 26.1のc-modeのFont Lockが重い問題に立ち向かう

最近、c-modeが超絶重い問題にぶち当たるファイルを弄ってる事が多くストレスマッハなので真面目に調べることにした。といっても、調べだすとキリがないので深みにはまらないように気を付ける。

まずはfont-lock-support-mode変数を評価して、Font Lockの現在の動作モードを調べる。デフォルトではjit-lock-modeになっているハズ。歴史的(?)に他のモードもあるようだけど、今は殆どJit Lockのようだ。詳細→emacs/font-lock.el

JIT Lockはその名の通り、バッファに表示中の部分のみハイライト処理を行う。M-x customize-apropos RET jit RETでJIT関連の設定項目を表示してみる。

更にそこから関係ありそうな設定を抜き出したのが以下。

説明を読んでjit-lock-context-timejit-lock-defer-timeが効きそうかなーと思い適当に値設定してみたけど、目立った改善は見られず…。前回のプロファイル結果と合わせて考えると、Font Lockが重いのではなくFont Lockに付随するc-modeの構文解析が重い予感?

ここまでで2時間ほど費やしてしまったので、今日はここまで。仕事しないと…。