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