X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=terminal.coffee;h=75afdc53c4441d450bf8d53ccd742b2a9f942d97;hb=2123b27defd2e348562d9bc725449dd5a987e450;hp=7f80a76d2e548f61257d5e4004c1de59d0f02c90;hpb=862f2bc18b59cf4481e6b6609bea537b2a349f4b;p=watch-my-terminal.git diff --git a/terminal.coffee b/terminal.coffee index 7f80a76..75afdc5 100644 --- a/terminal.coffee +++ b/terminal.coffee @@ -16,7 +16,7 @@ class Terminal @attributes = [] @x = 0 @y = 0 - @a = 0 # cursor attributes + @a = 0x000007 # cursor attributes @partial = '' @resize width, height @@ -105,15 +105,21 @@ class Terminal @a = (@a & ~mask) | value csi_m: default: "0", go: -> + args = [] for i in arguments - fixed = i + args.push i + + while args.length > 0 + fixed = args.shift() while fixed[0] is '0' fixed = fixed.substr 1 + if fixed is '' + fixed = '0' switch fixed # remove all style/color - when '' # leading zeros are removed (even if that's all of them) - @set_attribute_bits 0xffffff, 0 + when '0' + @set_attribute_bits 0xffffff, 0x000007 # style attributes when '1' # bold @@ -137,6 +143,9 @@ class Terminal when '28' # not invisible @set_attribute_bits 0x80000, 0 + when '100' # reset colors but not other attributes + @set_attribute_bits 0xffff, 0x0007 + # 8 fg colors when '30' # fg black @set_attribute_bits 0xff, 0x00 @@ -155,6 +164,13 @@ class Terminal when '37', '39' # fg white (39 is default) @set_attribute_bits 0xff, 0x07 + when '38' + if args.length >= 2 and args[0] is '5' + args.shift() + @set_attribute_bits 0xff, (0xff & args.shift()) + else + @set_attribute_bits 0x20000, 0x20000 + # 8 bg colors when '40' # bg black @set_attribute_bits 0xff00, 0x0000 @@ -175,6 +191,13 @@ class Terminal when '49' # bg default @set_attribute_bits 0xff00, 0x0000 + when '48' + if args.length >= 2 and args[0] is '5' + args.shift() + @set_attribute_bits 0xff00, ((0xff & args.shift()) << 8) + else + @set_attribute_bits 0x20000, 0x20000 + # bright fg colors when '90' # fg bright black @set_attribute_bits 0xff, 0x08