X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=terminal.coffee;h=913d87485b3c3da388b29df276b5bff0a479f16c;hb=4260b6a221b4d36c1611171e658243b03d597dc9;hp=751a53accdc55c5960b863221e0b0b94294c5694;hpb=0f402aa0d82fb36bdbd48bf29c1f20d962ac9078;p=watch-my-terminal.git diff --git a/terminal.coffee b/terminal.coffee index 751a53a..913d874 100644 --- a/terminal.coffee +++ b/terminal.coffee @@ -83,18 +83,20 @@ 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 + if @x >= @width + @wrap_to_next_line() @text[@y][@x] = c @attributes[@y][@x] = @a @x += 1 - if @x is @width - @wrap_to_next_line() return set_attribute_bits: (mask, value) -> @@ -167,7 +169,12 @@ class Terminal @text[@y][i] = ' ' @attributes[@y][i] = @a when '1' # erase to left - for i in [0..@x] + # @x can equal @width (after printing to right-most column) + if @x < @width + max = @x + else + max = @width - 1 + for i in [0..max] @text[@y][i] = ' ' @attributes[@y][i] = @a when '2' # erase whole line