util.termcolours: Added setstyle(str), which works on Windows too.

vault/0.11
Waqas Hussain 15 years ago
parent 2b65d66589
commit a0f4376c78
  1. 37
      util/termcolours.lua

@ -10,6 +10,14 @@
local t_concat, t_insert = table.concat, table.insert;
local char, format = string.char, string.format;
local ipairs = ipairs;
local io_write = io.write;
local windows;
if os.getenv("WINDIR") then
windows = require "util.windows";
end
local orig_color = windows and windows.get_consolecolor and windows.get_consolecolor();
module "termcolours"
local stylemap = {
@ -19,6 +27,13 @@ local stylemap = {
bold = 1, dark = 2, underline = 4, underlined = 4, normal = 0;
}
local winstylemap = {
["0"] = orig_color, -- reset
["1"] = 7+8, -- bold
["1;33"] = 2+4+8, -- bold yellow
["1;31"] = 4+8 -- bold red
}
local fmt_string = char(0x1B).."[%sm%s"..char(0x1B).."[0m";
function getstring(style, text)
if style then
@ -39,4 +54,26 @@ function getstyle(...)
return t_concat(result, ";");
end
local last = "0";
function setstyle(style)
style = style or "0";
if style ~= last then
io_write("\27["..style.."m");
last = style;
end
end
if windows then
function setstyle(style)
style = style or "0";
if style ~= last then
windows.set_consolecolor(winstylemap[style] or orig_color);
last = style;
end
end
if not orig_color then
function setstyle(style) end
end
end
return _M;

Loading…
Cancel
Save