Przeglądaj źródła

Fix eraseDisplayFromCursor() behavior

xuty 3 lat temu
rodzic
commit
e0d824f7c9

+ 1 - 1
lib/src/core/buffer/buffer.dart

@@ -146,7 +146,7 @@ class Buffer {
   void eraseDisplayFromCursor() {
     eraseLineFromCursor();
 
-    for (var i = absoluteCursorY; i < height; i++) {
+    for (var i = absoluteCursorY + 1; i < height; i++) {
       final line = lines[i];
       line.isWrapped = false;
       line.eraseRange(0, viewWidth, terminal.cursor);

+ 15 - 0
test/src/core/buffer/buffer_test.dart

@@ -164,4 +164,19 @@ void main() {
     expect(terminal.buffer.lines[8].toString(), 'line9');
     expect(terminal.buffer.lines[9].toString(), 'line10');
   });
+
+  group('Buffer.eraseDisplayFromCursor()', () {
+    test('works', () {
+      final terminal = Terminal();
+      terminal.resize(3, 3);
+      terminal.write('123\r\n456\r\n789');
+
+      terminal.setCursor(1, 1);
+      terminal.buffer.eraseDisplayFromCursor();
+
+      expect(terminal.buffer.lines[0].toString(), '123');
+      expect(terminal.buffer.lines[1].toString(), '4');
+      expect(terminal.buffer.lines[2].toString(), '');
+    });
+  });
 }