From 291bbdf9c7f75cbc106905c7194e990f4e87748f Mon Sep 17 00:00:00 2001 From: Marcin Kulik Date: Sun, 4 Dec 2011 23:28:45 +0100 Subject: [PATCH] Fix CUU and CUD cursor handling --- .../javascripts/ansi-interpreter.js.coffee | 2 +- app/assets/javascripts/terminal.js.coffee | 30 ++++++++++--------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/app/assets/javascripts/ansi-interpreter.js.coffee b/app/assets/javascripts/ansi-interpreter.js.coffee index adcdbf2..32a8ee6 100644 --- a/app/assets/javascripts/ansi-interpreter.js.coffee +++ b/app/assets/javascripts/ansi-interpreter.js.coffee @@ -6,7 +6,7 @@ class AsciiIo.AnsiInterpreter PATTERNS: "\x07": (data) -> # bell "\x08": (data) -> @terminal.bs() - "\x0a": (data) -> @terminal.cursorDown() + "\x0a": (data) -> @terminal.cursorDown 1 "\x0d": (data) -> @terminal.cr() "\x0e": (data) -> "\x0f": (data) -> diff --git a/app/assets/javascripts/terminal.js.coffee b/app/assets/javascripts/terminal.js.coffee index 4b25398..5c0fd89 100644 --- a/app/assets/javascripts/terminal.js.coffee +++ b/app/assets/javascripts/terminal.js.coffee @@ -156,20 +156,22 @@ class AsciiIo.Terminal @cursorX += 1 @updateLine() - cursorUp: -> - if @cursorY > 0 - @cursorY -= 1 - @updateLine @cursorY - @updateLine @cursorY + 1 - - cursorDown: -> - if @cursorY + 1 < @lines - @cursorY += 1 - @updateLine @cursorY - 1 - @updateLine @cursorY - else - @lineData.splice 0, 1 - @updateScreen() + cursorUp: (n) -> + for i in [0...n] + if @cursorY > 0 + @cursorY -= 1 + @updateLine @cursorY + @updateLine @cursorY + 1 + + cursorDown: (n) -> + for i in [0...n] + if @cursorY + 1 < @lines + @cursorY += 1 + @updateLine @cursorY - 1 + @updateLine @cursorY + else + @lineData.splice 0, 1 + @updateScreen() cursorForward: (n) -> i = 0