diff options
author | Johannes Schindelin <johannes.schindelin@gmx.de> | 2009-03-10 22:58:09 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-03-10 23:23:02 -0700 |
commit | 1897713fbd96229f3581b8e8a5653da917882195 (patch) | |
tree | f152aa5152a5ffba679fc7925248172569faf5b4 /compat/winansi.c | |
parent | 34df8abaf358c83cc1447d0a81bda7848685a1c9 (diff) | |
download | git-1897713fbd96229f3581b8e8a5653da917882195.tar.gz |
winansi: support ESC [ K (erase in line)
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'compat/winansi.c')
-rw-r--r-- | compat/winansi.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/compat/winansi.c b/compat/winansi.c index e2d96dfe6f..44dc293ad3 100644 --- a/compat/winansi.c +++ b/compat/winansi.c @@ -18,8 +18,6 @@ This file is git-specific. Therefore, this file does not attempt to implement any codes that are not used by git. - - TODO: K */ static HANDLE console; @@ -79,6 +77,20 @@ static void set_console_attr(void) SetConsoleTextAttribute(console, attributes); } +static void erase_in_line(void) +{ + CONSOLE_SCREEN_BUFFER_INFO sbi; + + if (!console) + return; + + GetConsoleScreenBufferInfo(console, &sbi); + FillConsoleOutputCharacterA(console, ' ', + sbi.dwSize.X - sbi.dwCursorPosition.X, sbi.dwCursorPosition, + NULL); +} + + static const char *set_attr(const char *str) { const char *func; @@ -218,7 +230,7 @@ static const char *set_attr(const char *str) set_console_attr(); break; case 'K': - /* TODO */ + erase_in_line(); break; default: /* Unsupported code */ |