JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
run.sh: complain if not passed width/height
[watch-my-terminal.git] / htmlterm.coffee
index 829f757..1cfef45 100644 (file)
@@ -60,6 +60,7 @@ class HTMLTerminal
                ]
 
                @parent_element.css backgroundColor: "##{@palette[0]}", color: "##{@palette[7]}"
+               @redraw()
 
        color_to_css: (i) ->
                # handle inverse bit
@@ -90,14 +91,13 @@ class HTMLTerminal
                return $('<span style="'+css+'"></span>').text(txt)
 
        redraw_now: ->
-               console.log('redraw_now')
                @parent_element.empty()
                # cursor can be just off the right side, but we draw it on the last column in that case
                if @term.x >= @term.width
                        cursor_x = @term.width - 1
                else
                        cursor_x = @term.x
-               # invert the cursor TODO: make it blink
+               # invert the cursor
                if @term.cursor_visible
                        @term.attributes[@term.y][cursor_x] ^= 0x080000
                for i in [0...@term.text.length]
@@ -112,14 +112,27 @@ class HTMLTerminal
                                        a = @term.attributes[i][j]
                                txt += @term.text[i][j]
                        if txt.length
-                               div.append(@stylize(txt, a))
+                               if a is 0x000007
+                                       # don't output spaces at the end, for better copy/paste
+                                       ns = txt.length - 1
+                                       while ns >= 0 and txt.charAt(ns) is ' '
+                                               ns -= 1
+                                       if ns >= 0
+                                               if ns < txt.length - 1
+                                                       txt = txt.substr 0, ns + 1
+                                               div.append(@stylize(txt, a))
+                                       else
+                                               # if entire line is spaces
+                                               if txt.length is @term.width
+                                                       div.append('<br>')
+                               else
+                                       div.append(@stylize(txt, a))
                        @parent_element.append(div)
                if @term.cursor_visible
                        @term.attributes[@term.y][cursor_x] ^= 0x080000
 
        # limit to 50fps
        redraw: ->
-               console.log('redraw')
                if (@redraw_wait)
                        @redraw_again = true
                else