From 8e82934389a8bb1b9ea4e1d784bd163d29a7e48f Mon Sep 17 00:00:00 2001 From: Jason Woofenden Date: Wed, 30 Jan 2013 17:47:47 -0500 Subject: [PATCH] handle 256-color change sequences --- index.html | 4 ++-- terminal.coffee | 24 ++++++++++++++++++++++-- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index a7f1978..25fdb39 100644 --- a/index.html +++ b/index.html @@ -272,9 +272,9 @@ var $body = $('body'); var socket = io.connect('http://localhost'); var color_to_css = function(i) { - index = i & 0xff + index = 0xff & i; // lighten the basic 8 colors when they're bold - if (i & 0x10000 && index < 8) { + if ((i & 0x10000) && index < 8) { index += 8; } return 'color: #' + palette[index] + '; '; diff --git a/terminal.coffee b/terminal.coffee index e9cf540..75afdc5 100644 --- a/terminal.coffee +++ b/terminal.coffee @@ -105,14 +105,20 @@ 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) + when '0' @set_attribute_bits 0xffffff, 0x000007 # style attributes @@ -158,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 @@ -178,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 -- 1.7.10.4