diff options
-rw-r--r-- | win32/winansi.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/win32/winansi.c b/win32/winansi.c index e2e7010fb..51bfad67c 100644 --- a/win32/winansi.c +++ b/win32/winansi.c | |||
@@ -91,6 +91,24 @@ static void erase_in_line(void) | |||
91 | NULL); | 91 | NULL); |
92 | } | 92 | } |
93 | 93 | ||
94 | static void erase_till_end_of_screen(void) | ||
95 | { | ||
96 | CONSOLE_SCREEN_BUFFER_INFO sbi; | ||
97 | COORD pos; | ||
98 | |||
99 | if (!console) | ||
100 | return; | ||
101 | |||
102 | GetConsoleScreenBufferInfo(console, &sbi); | ||
103 | FillConsoleOutputCharacterA(console, ' ', | ||
104 | sbi.dwSize.X - sbi.dwCursorPosition.X, sbi.dwCursorPosition, | ||
105 | NULL); | ||
106 | |||
107 | pos.X = 0; | ||
108 | for (pos.Y = sbi.dwCursorPosition.Y+1; pos.Y < sbi.dwSize.Y; pos.Y++) | ||
109 | FillConsoleOutputCharacterA(console, ' ', sbi.dwSize.X, | ||
110 | pos, NULL); | ||
111 | } | ||
94 | 112 | ||
95 | static const char *set_attr(const char *str) | 113 | static const char *set_attr(const char *str) |
96 | { | 114 | { |
@@ -230,6 +248,9 @@ static const char *set_attr(const char *str) | |||
230 | 248 | ||
231 | set_console_attr(); | 249 | set_console_attr(); |
232 | break; | 250 | break; |
251 | case 'J': | ||
252 | erase_till_end_of_screen(); | ||
253 | break; | ||
233 | case 'K': | 254 | case 'K': |
234 | erase_in_line(); | 255 | erase_in_line(); |
235 | break; | 256 | break; |