From 8df7e3df446a7145134b46e257304954923d8376 Mon Sep 17 00:00:00 2001 From: John Howard Date: Thu, 24 Mar 2016 15:37:47 -0700 Subject: [PATCH] Windows: Native console disableNewlineAutoReturn Signed-off-by: John Howard --- term/term_windows.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/term/term_windows.go b/term/term_windows.go index 3101c80..a02e681 100644 --- a/term/term_windows.go +++ b/term/term_windows.go @@ -31,6 +31,7 @@ const ( // https://msdn.microsoft.com/en-us/library/windows/desktop/ms683167(v=vs.85).aspx enableVirtualTerminalInput = 0x0200 enableVirtualTerminalProcessing = 0x0004 + disableNewlineAutoReturn = 0x0008 ) // usingNativeConsole is true if we are using the Windows native console @@ -146,8 +147,14 @@ func probeNativeConsole(state State) error { // enableNativeConsole turns on native console mode func enableNativeConsole(state State) error { - if err := winterm.SetConsoleMode(uintptr(state.outHandle), state.outMode|enableVirtualTerminalProcessing); err != nil { - return err + // First attempt both enableVirtualTerminalProcessing and disableNewlineAutoReturn + if err := winterm.SetConsoleMode(uintptr(state.outHandle), + state.outMode|(enableVirtualTerminalProcessing|disableNewlineAutoReturn)); err != nil { + + // That may fail, so fallback to trying just enableVirtualTerminalProcessing + if err := winterm.SetConsoleMode(uintptr(state.outHandle), state.outMode|enableVirtualTerminalProcessing); err != nil { + return err + } } if err := winterm.SetConsoleMode(uintptr(state.inHandle), state.inMode|enableVirtualTerminalInput); err != nil {