summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/api/readline.md2
-rw-r--r--doc/api/tty.md2
-rw-r--r--lib/readline.js5
-rw-r--r--test/parallel/test-readline-csi.js8
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);