summaryrefslogtreecommitdiff
path: root/compat/winansi.c
diff options
context:
space:
mode:
authorJohannes Schindelin <johannes.schindelin@gmx.de>2009-03-10 22:58:09 +0100
committerJunio C Hamano <gitster@pobox.com>2009-03-10 23:23:02 -0700
commit1897713fbd96229f3581b8e8a5653da917882195 (patch)
treef152aa5152a5ffba679fc7925248172569faf5b4 /compat/winansi.c
parent34df8abaf358c83cc1447d0a81bda7848685a1c9 (diff)
downloadgit-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.c18
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 */