From 03fd345079916ec4a5498453ace93466504c4acd Mon Sep 17 00:00:00 2001 From: Liam Galvin Date: Mon, 3 Dec 2018 12:00:36 +0000 Subject: [PATCH] fix tabbing --- buffer/buffer.go | 5 +---- buffer/buffer_test.go | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/buffer/buffer.go b/buffer/buffer.go index dcfcc07..f5c4c01 100644 --- a/buffer/buffer.go +++ b/buffer/buffer.go @@ -709,10 +709,7 @@ func (buffer *Buffer) CarriageReturn() { func (buffer *Buffer) Tab() { tabSize := 4 - shift := int(buffer.cursorX-1) % tabSize - if shift == 0 { - shift = tabSize - } + shift := tabSize - (int(buffer.cursorX+1) % tabSize) for i := 0; i < shift; i++ { buffer.Write(' ') } diff --git a/buffer/buffer_test.go b/buffer/buffer_test.go index e95bc7a..7ee3bfb 100644 --- a/buffer/buffer_test.go +++ b/buffer/buffer_test.go @@ -9,6 +9,35 @@ import ( "github.com/stretchr/testify/assert" ) +func TestTabbing(t *testing.T) { + b := NewBuffer(30, 3, CellAttributes{}) + b.Write([]rune("hello")...) + b.Tab() + b.Write([]rune("x")...) + b.Tab() + b.Write([]rune("goodbye")...) + b.CarriageReturn() + b.NewLine() + b.Write([]rune("hell")...) + b.Tab() + b.Write([]rune("xxx")...) + b.Tab() + b.Write([]rune("good")...) + b.CarriageReturn() + b.NewLine() + expected := ` +hello x goodbye +hell xxx good +` + + lines := b.GetVisibleLines() + strs := []string{} + for _, l := range lines { + strs = append(strs, l.String()) + } + require.Equal(t, strings.TrimSpace(expected), strings.Join(strs, "\n")) +} + func TestOffsets(t *testing.T) { b := NewBuffer(10, 3, CellAttributes{}) b.Write([]rune("hello")...)