summary refs log tree commit diff stats
path: root/lib/pure
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pure')
-rw-r--r--lib/pure/terminal.nim17
1 files changed, 12 insertions, 5 deletions
diff --git a/lib/pure/terminal.nim b/lib/pure/terminal.nim
index 9d1d055fd..e798bbaf1 100644
--- a/lib/pure/terminal.nim
+++ b/lib/pure/terminal.nim
@@ -458,6 +458,11 @@ proc eraseScreen*(f: File) =
   else:
     f.write("\e[2J")
 
+when not defined(windows):
+  var
+    gFG {.threadvar.}: int
+    gBG {.threadvar.}: int
+
 proc resetAttributes*(f: File) =
   ## Resets all attributes.
   when defined(windows):
@@ -468,6 +473,8 @@ proc resetAttributes*(f: File) =
       discard setConsoleTextAttribute(term.hStdout, term.oldStdoutAttr)
   else:
     f.write(ansiResetCode)
+    gFG = 0
+    gBG = 0
 
 type
   Style* = enum        ## different styles for text output
@@ -481,11 +488,6 @@ type
     styleHidden,       ## hidden text
     styleStrikethrough ## strikethrough
 
-when not defined(windows):
-  var
-    gFG {.threadvar.}: int
-    gBG {.threadvar.}: int
-
 proc ansiStyleCode*(style: int): string =
   result = fmt"{stylePrefix}{style}m"
 
@@ -938,6 +940,11 @@ when not defined(testing) and isMainModule:
   stdout.styledWriteLine(" ordinary text ")
   stdout.styledWriteLine(fgGreen, "green text")
 
+  writeStyled("underscored text", {styleUnderscore})
+  stdout.styledWrite(fgRed, " red text ")
+  writeStyled("bright text ", {styleBright})
+  echo "ordinary text"
+
   stdout.styledWrite(fgRed, "red text ")
   stdout.styledWrite(fgWhite, bgRed, "white text in red background")
   stdout.styledWrite(" ordinary text ")