Signed-off-by: John Howard <jhoward@microsoft.com>
| ... | ... |
@@ -31,6 +31,7 @@ const ( |
| 31 | 31 |
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms683167(v=vs.85).aspx |
| 32 | 32 |
enableVirtualTerminalInput = 0x0200 |
| 33 | 33 |
enableVirtualTerminalProcessing = 0x0004 |
| 34 |
+ disableNewlineAutoReturn = 0x0008 |
|
| 34 | 35 |
) |
| 35 | 36 |
|
| 36 | 37 |
// usingNativeConsole is true if we are using the Windows native console |
| ... | ... |
@@ -146,8 +147,14 @@ func probeNativeConsole(state State) error {
|
| 146 | 146 |
|
| 147 | 147 |
// enableNativeConsole turns on native console mode |
| 148 | 148 |
func enableNativeConsole(state State) error {
|
| 149 |
- if err := winterm.SetConsoleMode(uintptr(state.outHandle), state.outMode|enableVirtualTerminalProcessing); err != nil {
|
|
| 150 |
- return err |
|
| 149 |
+ // First attempt both enableVirtualTerminalProcessing and disableNewlineAutoReturn |
|
| 150 |
+ if err := winterm.SetConsoleMode(uintptr(state.outHandle), |
|
| 151 |
+ state.outMode|(enableVirtualTerminalProcessing|disableNewlineAutoReturn)); err != nil {
|
|
| 152 |
+ |
|
| 153 |
+ // That may fail, so fallback to trying just enableVirtualTerminalProcessing |
|
| 154 |
+ if err := winterm.SetConsoleMode(uintptr(state.outHandle), state.outMode|enableVirtualTerminalProcessing); err != nil {
|
|
| 155 |
+ return err |
|
| 156 |
+ } |
|
| 151 | 157 |
} |
| 152 | 158 |
|
| 153 | 159 |
if err := winterm.SetConsoleMode(uintptr(state.inHandle), state.inMode|enableVirtualTerminalInput); err != nil {
|