diff --git a/buffer/buffer.go b/buffer/buffer.go index 1ee1d77..c66adc1 100644 --- a/buffer/buffer.go +++ b/buffer/buffer.go @@ -644,7 +644,7 @@ func (buffer *Buffer) CarriageReturn() { func (buffer *Buffer) Tab() { defer buffer.emitDisplayChange() tabSize := 4 - shift := int(buffer.cursorX) % tabSize + shift := int(buffer.cursorX-1) % tabSize if shift == 0 { shift = tabSize } diff --git a/terminal/output.go b/terminal/output.go index 1ff4d10..11dd77b 100644 --- a/terminal/output.go +++ b/terminal/output.go @@ -26,11 +26,15 @@ var escapeSequenceMap = map[rune]escapeSequenceHandler{ } func newLineSequenceHandler(pty chan rune, terminal *Terminal) error { - terminal.logger.Debugf("New line!") terminal.ActiveBuffer().NewLine() return nil } +func tabSequenceHandler(pty chan rune, terminal *Terminal) error { + terminal.ActiveBuffer().Tab() + return nil +} + func carriageReturnSequenceHandler(pty chan rune, terminal *Terminal) error { terminal.ActiveBuffer().CarriageReturn() return nil @@ -61,11 +65,6 @@ func shiftInSequenceHandler(pty chan rune, terminal *Terminal) error { return nil } -func tabSequenceHandler(pty chan rune, terminal *Terminal) error { - terminal.logger.Errorf("Received tab") - return nil -} - func (terminal *Terminal) processInput(ctx context.Context, pty chan rune) { // https://en.wikipedia.org/wiki/ANSI_escape_code