diff options
-rw-r--r-- | doc/api/readline.md | 2 | ||||
-rw-r--r-- | doc/api/tty.md | 2 | ||||
-rw-r--r-- | lib/readline.js | 5 | ||||
-rw-r--r-- | test/parallel/test-readline-csi.js | 8 |
4 files changed, 15 insertions, 2 deletions
diff --git a/doc/api/readline.md b/doc/api/readline.md index 47dfad8dab..43d3a7e8f6 100644 --- a/doc/api/readline.md +++ b/doc/api/readline.md @@ -487,7 +487,7 @@ function completer(linePartial, callback) { } ``` -## readline.cursorTo(stream, x, y[, callback]) +## readline.cursorTo(stream, x[, y][, callback]) <!-- YAML added: v0.7.7 changes: diff --git a/doc/api/tty.md b/doc/api/tty.md index 977576970c..335aef7589 100644 --- a/doc/api/tty.md +++ b/doc/api/tty.md @@ -145,7 +145,7 @@ added: v0.7.7 A `number` specifying the number of columns the TTY currently has. This property is updated whenever the `'resize'` event is emitted. -### writeStream.cursorTo(x, y[, callback]) +### writeStream.cursorTo(x[, y][, callback]) <!-- YAML added: v0.7.7 changes: diff --git a/lib/readline.js b/lib/readline.js index b741557a4d..5b8fc6706c 100644 --- a/lib/readline.js +++ b/lib/readline.js @@ -1193,6 +1193,11 @@ function cursorTo(stream, x, y, callback) { if (callback !== undefined && typeof callback !== 'function') throw new ERR_INVALID_CALLBACK(callback); + if (typeof y === 'function') { + callback = y; + y = undefined; + } + if (stream == null || (typeof x !== 'number' && typeof y !== 'number')) { if (typeof callback === 'function') process.nextTick(callback); diff --git a/test/parallel/test-readline-csi.js b/test/parallel/test-readline-csi.js index c1f34f5a30..27bfd2bce5 100644 --- a/test/parallel/test-readline-csi.js +++ b/test/parallel/test-readline-csi.js @@ -134,6 +134,10 @@ assert.strictEqual(readline.cursorTo(writable, 1, 'a'), true); assert.strictEqual(writable.data, '\x1b[2G'); writable.data = ''; +assert.strictEqual(readline.cursorTo(writable, 1), true); +assert.strictEqual(writable.data, '\x1b[2G'); + +writable.data = ''; assert.strictEqual(readline.cursorTo(writable, 1, 2), true); assert.strictEqual(writable.data, '\x1b[3;2H'); @@ -141,6 +145,10 @@ writable.data = ''; assert.strictEqual(readline.cursorTo(writable, 1, 2, common.mustCall()), true); assert.strictEqual(writable.data, '\x1b[3;2H'); +writable.data = ''; +assert.strictEqual(readline.cursorTo(writable, 1, common.mustCall()), true); +assert.strictEqual(writable.data, '\x1b[2G'); + // Verify that cursorTo() throws on invalid callback. assert.throws(() => { readline.cursorTo(writable, 1, 1, null); |