From a761595ce3bd3b06cc8fc7f8878a9d4172c39fe4 Mon Sep 17 00:00:00 2001 From: Liam Galvin Date: Fri, 26 Oct 2018 09:46:43 +0100 Subject: [PATCH] Add tabbing support --- buffer/buffer.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/buffer/buffer.go b/buffer/buffer.go index 079a770..1ee1d77 100644 --- a/buffer/buffer.go +++ b/buffer/buffer.go @@ -554,6 +554,9 @@ func (buffer *Buffer) Write(runes ...rune) { } else if r == 0x0d { buffer.CarriageReturn() continue + } else if r == 0x9 { + buffer.Tab() + continue } line := buffer.getCurrentLine() @@ -638,6 +641,18 @@ func (buffer *Buffer) CarriageReturn() { buffer.cursorX = 0 } +func (buffer *Buffer) Tab() { + defer buffer.emitDisplayChange() + tabSize := 4 + shift := int(buffer.cursorX) % tabSize + if shift == 0 { + shift = tabSize + } + for i := 0; i < shift; i++ { + buffer.Write(' ') + } +} + func (buffer *Buffer) NewLine() { defer buffer.emitDisplayChange()