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> "]]
みたいな。
前回の情報が必要なんだ。なぜかは分かっていない。