From de3f07897fa9a26e0929c4fba42b63fee8ca638a Mon Sep 17 00:00:00 2001 From: Liam Galvin Date: Sun, 4 Nov 2018 18:58:12 +0000 Subject: [PATCH] fix apt scrollbars --- buffer/buffer.go | 11 +++++++++++ buffer/buffer_test.go | 37 ++++++++++++++++++++++++++++++++----- sixel/img.bmp | Bin 614 -> 418 bytes 3 files changed, 43 insertions(+), 5 deletions(-) diff --git a/buffer/buffer.go b/buffer/buffer.go index c66adc1..4a62a95 100644 --- a/buffer/buffer.go +++ b/buffer/buffer.go @@ -638,6 +638,17 @@ func (buffer *Buffer) Backspace() { func (buffer *Buffer) CarriageReturn() { defer buffer.emitDisplayChange() + for { + line := buffer.getCurrentLine() + if line == nil { + break + } + if line.wrapped && buffer.cursorY > 0 { + buffer.cursorY-- + } else { + break + } + } buffer.cursorX = 0 } diff --git a/buffer/buffer_test.go b/buffer/buffer_test.go index 330b06e..6b36b6d 100644 --- a/buffer/buffer_test.go +++ b/buffer/buffer_test.go @@ -223,11 +223,39 @@ func TestClearWithFullView(t *testing.T) { func TestCarriageReturn(t *testing.T) { b := NewBuffer(80, 20, CellAttributes{}) - b.Write([]rune("hello!\rsecret")...) + b.Write([]rune("hello!")...) + b.CarriageReturn() + b.Write([]rune("secret")...) lines := b.GetVisibleLines() assert.Equal(t, "secret", lines[0].String()) } +func TestCarriageReturnOnFullLine(t *testing.T) { + b := NewBuffer(20, 20, CellAttributes{}) + b.Write([]rune("abcdeabcdeabcdeabcde")...) + b.CarriageReturn() + b.Write([]rune("xxxxxxxxxxxxxxxxxxxx")...) + lines := b.GetVisibleLines() + assert.Equal(t, "xxxxxxxxxxxxxxxxxxxx", lines[0].String()) +} + +func TestCarriageReturnOnOverflowedLine(t *testing.T) { + b := NewBuffer(20, 20, CellAttributes{}) + b.Write([]rune("abcdeabcdeabcdeabcdezzzzz")...) + b.CarriageReturn() + b.Write([]rune("xxxxxxxxxxxxxxxxxxxx")...) + lines := b.GetVisibleLines() + assert.Equal(t, "xxxxxxxxxxxxxxxxxxxx", lines[0].String()) +} + +func TestCarriageReturnOnFullLastLine(t *testing.T) { + b := NewBuffer(20, 2, CellAttributes{}) + b.Write([]rune("\nabcdeabcdeabcdeabcde\rxxxxxxxxxxxxxxxxxxxx")...) + lines := b.GetVisibleLines() + assert.Equal(t, "", lines[0].String()) + assert.Equal(t, "xxxxxxxxxxxxxxxxxxxx", lines[1].String()) +} + func TestCarriageReturnOnWrappedLine(t *testing.T) { b := NewBuffer(80, 6, CellAttributes{}) b.Write([]rune("hello!\rsecret")...) @@ -253,11 +281,10 @@ func TestCarriageReturnOnOverWrappedLine(t *testing.T) { b := NewBuffer(6, 10, CellAttributes{}) b.Write([]rune("hello there!\rsecret sauce")...) lines := b.GetVisibleLines() - require.Equal(t, 3, len(lines)) - assert.Equal(t, "hello", lines[0].String()) - assert.Equal(t, "secret", lines[1].String()) + require.Equal(t, 2, len(lines)) + assert.Equal(t, "secret", lines[0].String()) assert.True(t, b.lines[1].wrapped) - assert.Equal(t, " sauce", lines[2].String()) + assert.Equal(t, " sauce", lines[1].String()) } func TestCarriageReturnOnLineThatDoesntExist(t *testing.T) { diff --git a/sixel/img.bmp b/sixel/img.bmp index db1ba25054665c4c8271a2a12e829c64986f2871..d475fa529ac66ae80a7b19bd790a75713b2a276d 100644 GIT binary patch literal 418 zcmZ?rUBt)$24+A~1BiKnm>q~285Dpd149l}9?XFeDJlOMz?cC@gD|mtkUC2A!1Tgs WT=r6G4=!`j?S-i$l7@vJ2{Ztn3xHJs literal 614 zcmZ?rO=DsJ12Z700mQsO%m>7b3=%++fx!SO59Yv#loSSH5K)SN2Eo(;8F<-)LmkAG a*xZWhK4R5D!jiCg^jAkHmSO%Sqz(YDb9U?i