JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
handle 256-color change sequences
authorJason Woofenden <jason@jasonwoof.com>
Wed, 30 Jan 2013 22:47:47 +0000 (17:47 -0500)
committerJason Woofenden <jason@jasonwoof.com>
Wed, 30 Jan 2013 22:47:47 +0000 (17:47 -0500)
index.html
terminal.coffee

index a7f1978..25fdb39 100644 (file)
                        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] + '; ';
index e9cf540..75afdc5 100644 (file)
@@ -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