@@ -10,16 +10,21 @@ import (
10
10
11
11
func init () {
12
12
var inMode , outMode uint32
13
- if err := windows .GetConsoleMode (windows .Stdin , & inMode ); err == nil {
14
- inMode |= windows .ENABLE_VIRTUAL_TERMINAL_INPUT
15
- if err := windows .SetConsoleMode (windows .Stdin , inMode ); err != nil {
16
- fmt .Fprintf (os .Stderr , "Failed to set console mode: %v" , err )
13
+ maj , _ , build := windows .RtlGetNtVersionNumbers ()
14
+ if maj < 10 || (maj == 10 && build <= 14393 ) {
15
+ // the Windows 10 Anniversary Edition added VT100 support
16
+ // enable vterm support in older versions of the Windows terminal
17
+ if err := windows .GetConsoleMode (windows .Stdin , & inMode ); err == nil {
18
+ inMode |= windows .ENABLE_VIRTUAL_TERMINAL_INPUT
19
+ if err := windows .SetConsoleMode (windows .Stdin , inMode ); err != nil {
20
+ fmt .Fprintf (os .Stderr , "Failed to set console mode: %v" , err )
21
+ }
17
22
}
18
- }
19
- if err : = windows .GetConsoleMode ( windows . Stdout , & outMode ); err == nil {
20
- outMode | = windows .ENABLE_VIRTUAL_TERMINAL_PROCESSING
21
- if err := windows . SetConsoleMode ( windows . Stdout , outMode ); err != nil {
22
- fmt . Fprintf ( os . Stderr , "Failed to set console mode: %v" , err )
23
+ if err := windows . GetConsoleMode ( windows . Stdout , & outMode ); err == nil {
24
+ outMode | = windows .ENABLE_VIRTUAL_TERMINAL_PROCESSING
25
+ if err : = windows .SetConsoleMode ( windows . Stdout , outMode ); err != nil {
26
+ fmt . Fprintf ( os . Stderr , "Failed to set console mode: %v" , err )
27
+ }
23
28
}
24
29
}
25
30
}
0 commit comments