@ 261105.1

260516.2 · a346044f2a9697788ff976917f18d9b174781e33

vt: prune tab stops after resize (#1105)

reading declarations

vt/emulate.go

@@ -2403,6 +2403,7 @@ func (em *emulator) ResizeEvent(size Coord) { func (em *emulator) applyResize(size Coord) { 	// resize clobbers our content, until it is redrawn 	em.size = size+	em.tabStops = slices.DeleteFunc(em.tabStops, func(x Col) bool { return x >= em.size.X }) 	// resizing resets the margins 	em.topMargin = 0 	em.botMargin = em.size.Y - 1

vt/emulate_internal_test.go

@@ -132,6 +132,25 @@ func TestMockBackendHelpers(t *testing.T) { 	MockOptNoBlit{}.SetMockOpt(mb) } +func TestApplyResizePrunesTabStops(t *testing.T) {+	em := NewEmulator(NewMockBackend(MockOptSize{X: 80, Y: 24})).(*emulator)+	em.tabStops = []Col{8, 16, 24, 32, 40, 48}++	em.applyResize(Coord{X: 32, Y: 24})++	if got, want := em.tabStops, []Col{8, 16, 24}; !slices.Equal(got, want) {+		t.Fatalf("unexpected tab stops after resize: got %v, want %v", got, want)+	}++	em.setPosition(Coord{X: 0, Y: 0})+	for _, want := range []Col{8, 16, 24, 31} {+		em.nextTab()+		if got := em.getPosition().X; got != want {+			t.Fatalf("unexpected tab position after resize: got %d, want %d", got, want)+		}+	}+}+ func TestPutRuneGraphemeExtensions(t *testing.T) { 	t.Parallel()