aboutsummaryrefslogtreecommitdiff
path: root/win32/winansi.c
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2016-04-26 13:13:59 +0100
committerRon Yorston <rmy@pobox.com>2016-04-26 13:48:18 +0100
commitaa3595b3d38ecc6b86b351ac215829f0de58d911 (patch)
tree2f78acabf0a2babca275f0ef4d32ad9cd1968b43 /win32/winansi.c
parentfd476d8629d489245e18ec278d3c846ab1359eec (diff)
downloadbusybox-w32-ansi.tar.gz
busybox-w32-ansi.tar.bz2
busybox-w32-ansi.zip
winansi: add a routine to clear the screen bufferansi
And use it to restore the old behaviour of vi and less: they reset the cursor to the top of the buffer and clear it.
Diffstat (limited to 'win32/winansi.c')
-rw-r--r--win32/winansi.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/win32/winansi.c b/win32/winansi.c
index ebe831593..d61e8a2cf 100644
--- a/win32/winansi.c
+++ b/win32/winansi.c
@@ -122,7 +122,25 @@ static void erase_till_end_of_screen(void)
122 &dummy); 122 &dummy);
123 FillConsoleOutputAttribute(console, plain_attr, len, sbi.dwCursorPosition, 123 FillConsoleOutputAttribute(console, plain_attr, len, sbi.dwCursorPosition,
124 &dummy); 124 &dummy);
125}
126
127void reset_screen(void)
128{
129 CONSOLE_SCREEN_BUFFER_INFO sbi;
130 COORD pos;
131 DWORD dummy, len;
125 132
133 if (!console)
134 return;
135
136 /* move to start of screen buffer and clear it all */
137 GetConsoleScreenBufferInfo(console, &sbi);
138 pos.X = 0;
139 pos.Y = 0;
140 SetConsoleCursorPosition(console, pos);
141 len = sbi.dwSize.X * sbi.dwSize.Y;
142 FillConsoleOutputCharacterA(console, ' ', len, pos, &dummy);
143 FillConsoleOutputAttribute(console, plain_attr, len, pos, &dummy);
126} 144}
127 145
128void move_cursor_row(int n) 146void move_cursor_row(int n)