μ΄ λ²νΌ ν¬κΈ°κ° <viewport rows> + <scrollback>
κ° λκΈ°λ₯Ό μνλ κ²μΌλ‘ 보μ΄μ§λ§ vscodeμμ 10
λλλ‘ μ°κ²°νλ©΄ μ 곡λ μ€ν¬λ‘€λ°± μμ΄ 10μ΄ μλλ©° 2 κ°.
ll
λ₯Ό μ€ννμ¬ μΆλ ₯ λ©μ΄λ¦¬λ₯Ό μ»μΌλ©΄ μ²μμλ 6μ€, λ λ²μ§Έμλ 8μ€, μΈ λ²μ§Έμλ 5μ€, λ€ λ²μ§Έ μ€μλ 7μ€μ΄ λμ΅λλ€. λ§€λ² μ νν 10μ€μ΄μ΄μΌ ν©λλ€.
μ΄κ²μ scroll
λ
Όλ¦¬ λλ¬Έμ λ°μνλ κ² κ°μ΅λλ€.
if (++this.ybase === this.scrollback) {
this.ybase = this.ybase / 2 | 0;
this.lines = this.lines.slice(-(this.ybase + this.rows) + 1);
}
λ€μμ λͺ κ°μ§ κ΄μ°°/μ§λ¬Έμ λλ€.
| 0
)scrollback
μ λλ¬νλ©΄ ν λ©μ΄λ¦¬κ° μ립λλ€.scroll
μμ ν μλ₯΄κΈ°κ° μνλλ μ΄μ λ 무μμ
λκΉ? this.lines
κ° μΆκ°λ λ νν΄μλ μ λ©λκΉ?slice
λ μ μ΄λ μ΄λ₯Ό μμ±νκ³ μ΄μ μ΄λ μ΄λ₯Ό νκΈ°νλ―λ‘ μ±λ₯ λ¬Έμ κ° λ°μν μ μμ΅λλ€.Terminal.lines
κ° κ³μν΄μ μ¬κ΅¬μΆλλ μ΄ λͺ¨λΈ λμ μ μν λ°°μ΄μ ꡬννκ³ ν΄λμ€ λ΄λΆμ 볡μ‘μ±μ μΆμννλ©΄ μ΄λ»κ² λ κΉμ? λ°λΌμ λ°°μ΄μ ν¬κΈ°λ νμ Terminal.rows + Terminal.scrollback
. μ¦, λ°°μ΄ μ¬κ΅¬μ±μ΄λ shift
ing(μΆ©λΆν ν° λ°°μ΄μμ λ¬Έμ κ° λ°μν μ μμ)μ΄ μκ³ scrollback
κ° λ€μκ³Ό κ°μ΄ μ²λ¦¬λ©λλ€. μ΄μ λ°°μ΄ νλͺ©μ΄ 무μλ©λλ€.
Terminal.scrollback
μ¬μ©νλ κ²μ΄ ν¨μ¬ λ λμ κ²μ
λλ€. κ·Έλ κ² νλ©΄ Terminal.scrollback
κ° λ³κ²½λ λλ§ Terminal.lines
ν¬κΈ°λ₯Ό μ‘°μ νλ©΄ λ©λλ€( Terminal.rows
κ²½μ°μ λ°λ) bufferSize
λλ bufferLength
λ‘ λ³κ²½νλ κ²μ΄ μ’μ΅λλ€.
CircularList
ν΄λμ€λ₯Ό μ¬μ©νμ¬ μ΄ μ λͺ¨λΈμ ꡬννλ WIP λΆκΈ°κ° μμ΅λλ€. μμ§ 100% μλνμ§ μμΌλ©° λ€λ₯Έ μμ
μ μ§μ€νκΈ° μν΄ μ μ 보λ₯νκ² μ΅λλ€. https://github.com/Tyriar/xterm.js/tree/361_circular_list_scrollback
@Tyriar κ·νμ μ§μ μμ λͺ κ°μ§ ν μ€νΈλ₯Ό μννκ³ μκΈ°κ° πλΌκ³ μκ°νμλ©΄ κΈ°κΊΌμ΄ νΌλλ°±μ μ 곡νκ² μ΅λλ€.
νμ¬λ λ무 λ§κ°μ Έμ μμ±νλλ° μκ°μ΄ μ’ κ±Έλ¦΄ κ²μ λλ€