2024-02-28

modified_lines を見た。これはIRBから使われるときには色つけProcに行を渡して色付けてもらったやつを返してもらってそう。色つけは重い処理(具体的にはどこが重いんだろう?)とのことでキャッシュしていて、キャッシュのチェックなどを行っているのが modified_lines で実際にProcに引き渡しているのが modify_lines だった。Procの中をdebug.gemで眺めていたら気がついたらRipperの中にいた。

prev_cache_keyは前回のキャッシュキー [1, [""], ["irb(main):001> "], 174] みたいな。左から、@buffer_of_lines.size modified_lines prompt_list screen_width cached_value は前回キャッシュしたときの値。[["irb(main):001> "]] みたいな。 前回の情報が必要なんだ。なぜかは分かっていない。