diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2016-11-29 01:57:14 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-11-29 01:57:14 +0100 |
commit | ab43ad13dc0bcab9d0120175dc2e35446cd2c571 (patch) | |
tree | 55fa7ca025087429a63df0f28a3c7aaaf46fedc6 /lib/pure | |
parent | 6a83306b5fdc7c90ae98a2142d5600ca0ada4a25 (diff) | |
parent | 64dd3eb9c1ac0358e0be3ce037c73e83d4b947c8 (diff) | |
download | Nim-ab43ad13dc0bcab9d0120175dc2e35446cd2c571.tar.gz |
Merge pull request #5058 from johnnovak/terminal-win-fix
Fix setStyle for Windows
Diffstat (limited to 'lib/pure')
-rw-r--r-- | lib/pure/terminal.nim | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/pure/terminal.nim b/lib/pure/terminal.nim index 0a2c92bbf..16cf91d40 100644 --- a/lib/pure/terminal.nim +++ b/lib/pure/terminal.nim @@ -31,6 +31,8 @@ when defined(windows): BACKGROUND_GREEN = 32 BACKGROUND_RED = 64 BACKGROUND_INTENSITY = 128 + FOREGROUND_RGB = FOREGROUND_RED or FOREGROUND_GREEN or FOREGROUND_BLUE + BACKGROUND_RGB = BACKGROUND_RED or BACKGROUND_GREEN or BACKGROUND_BLUE type SHORT = int16 @@ -407,12 +409,13 @@ proc setStyle*(f: File, style: set[Style]) = ## Sets the terminal style. when defined(windows): let h = conHandle(f) + var old = getAttributes(h) and (FOREGROUND_RGB or BACKGROUND_RGB) var a = 0'i16 if styleBright in style: a = a or int16(FOREGROUND_INTENSITY) if styleBlink in style: a = a or int16(BACKGROUND_INTENSITY) if styleReverse in style: a = a or 0x4000'i16 # COMMON_LVB_REVERSE_VIDEO if styleUnderscore in style: a = a or 0x8000'i16 # COMMON_LVB_UNDERSCORE - discard setConsoleTextAttribute(h, a) + discard setConsoleTextAttribute(h, old or a) else: for s in items(style): f.write("\e[" & $ord(s) & 'm') @@ -461,7 +464,7 @@ proc setForegroundColor*(f: File, fg: ForegroundColor, bright=false) = ## Sets the terminal's foreground color. when defined(windows): let h = conHandle(f) - var old = getAttributes(h) and not 0x0007 + var old = getAttributes(h) and not FOREGROUND_RGB if bright: old = old or FOREGROUND_INTENSITY const lookup: array[ForegroundColor, int] = [ @@ -483,7 +486,7 @@ proc setBackgroundColor*(f: File, bg: BackgroundColor, bright=false) = ## Sets the terminal's background color. when defined(windows): let h = conHandle(f) - var old = getAttributes(h) and not 0x0070 + var old = getAttributes(h) and not BACKGROUND_RGB if bright: old = old or BACKGROUND_INTENSITY const lookup: array[BackgroundColor, int] = [ |