Readline: use tty methods instead of control sequences
authorBert Belder <bertbelder@gmail.com>
Wed, 12 Jan 2011 03:13:41 +0000 (04:13 +0100)
committerRyan Dahl <ry@tinyclouds.org>
Wed, 19 Jan 2011 07:22:38 +0000 (23:22 -0800)
lib/readline.js

index bb22feb..efd636e 100644 (file)
@@ -138,17 +138,17 @@ Interface.prototype._refreshLine = function() {
   if (this._closed) return;
 
   // Cursor to left edge.
-  this.output.write('\x1b[0G');
+  this.output.cursorTo(0);
 
   // Write the prompt and the current buffer content.
   this.output.write(this._prompt);
   this.output.write(this.line);
 
   // Erase to right.
-  this.output.write('\x1b[0K');
+  this.output.clearLine(1);
 
   // Move cursor to original position.
-  this.output.write('\x1b[0G\x1b[' + (this._promptLength + this.cursor) + 'C');
+  this.output.cursorTo(this._promptLength + this.cursor);
 };
 
 
@@ -489,14 +489,14 @@ Interface.prototype._ttyWrite = function(b) {
         // left arrow
         if (this.cursor > 0) {
           this.cursor--;
-          this.output.write('\x1b[0D');
+          this.output.moveCursor(-1, 0);
         }
 
       } else if (b[1] === 91 && b[2] === 67) {
         // right arrow
         if (this.cursor != this.line.length) {
           this.cursor++;
-          this.output.write('\x1b[0C');
+          this.output.moveCursor(1, 0);
         }
 
       } else if ((b[1] === 91 && b[2] === 72) ||