From 2a11d1421c9ef9f175b646cd1c5d0ce30e93044d Mon Sep 17 00:00:00 2001 From: gwenn <gtreguier@gmail.com> Date: Sun, 10 Jul 2016 12:25:59 +0200 Subject: [PATCH] Fix clear_screen on windows --- src/lib.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index a93edaa3..ae572d13 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -332,8 +332,19 @@ fn clear_screen(out: &mut Write) -> Result<()> { write_and_flush(out, b"\x1b[H\x1b[2J") } #[cfg(windows)] -fn clear_screen(out: &mut Write) -> Result<()> { - unimplemented!() +fn clear_screen(_: &mut Write) -> Result<()> { + let handle = unsafe { kernel32::GetStdHandle(STDOUT_FILENO) }; + let mut info = unsafe { mem::zeroed() }; + check!(kernel32::GetConsoleScreenBufferInfo(handle, &mut info)); + let coord = winapi::COORD { X: 0, Y: 0 }; + check!(kernel32::SetConsoleCursorPosition(handle, coord)); + let mut _count = 0; + check!(kernel32::FillConsoleOutputCharacterA(handle, + ' ', + info.dwSize.X * info.dwSize.Y, + coord, + &mut _count)); + Ok(()) } /// Beep, used for completion when there is nothing to complete or when all -- GitLab