X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=terminal.coffee;h=37d3971b4fba9f787c9169b92bfae71d9d85e5a3;hb=d9b7866716ffba8f58845b7b864d8a0ee1c3d4b1;hp=abc006a42e3a528f339bb57317dc998201f31c2a;hpb=790fe120c484c9bc3736aacc1fdaa9904177e383;p=watch-my-terminal.git diff --git a/terminal.coffee b/terminal.coffee index abc006a..37d3971 100644 --- a/terminal.coffee +++ b/terminal.coffee @@ -83,10 +83,12 @@ class Terminal when '\x0d' # cr @x = 0 when '\x08' # backspace - if @x > 0 + if @x is 0 + @x = @width - 1 + if @y > 0 + @y -= 1 + else @x -= 1 - @text[@y][@x] = ' ' - # should this set the attribute too? when '\x0a', '\x0b' # lf, vertical tab (same thing) @wrap_to_next_line() else @@ -132,15 +134,21 @@ class Terminal @x = column @y = row - # clear lines (implemented inclusive of the current line) + # clear to screen edge(es) csi_J: (direction) -> switch @fix_esc_arg direction, '0' when '0' # erase down + # rest of current line + @csi_K direction + # rest of lines for row in [@y...@height] for i in [0...@width] @text[row][i] = ' ' @attributes[row][i] = @a when '1' # erase up + # beginning of current line + @csi_K direction + # all previous lines for row in [0..@y] for i in [0...@width] @text[row][i] = ' ' @@ -161,7 +169,7 @@ class Terminal @text[@y][i] = ' ' @attributes[@y][i] = @a when '1' # erase to left - for i in [0...@x] + for i in [0..@x] @text[@y][i] = ' ' @attributes[@y][i] = @a when '2' # erase whole line