repl: don’t write to input stream in editor mode

Instead of writing to the REPL’s input stream for the alignment
spaces in `.editor` mode, let `readline` handle the spaces
properly (echoing them using `_ttyWrite` and adding them to the
current line buffer).

Fixes: https://github.com/nodejs/node/issues/9189
PR-URL: https://github.com/nodejs/node/pull/9207
Reviewed-By: Prince John Wesley <princejohnwesley@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
Anna Henningsen committed 2016-10-26 21:41:52 +02:00
1 parent 8b6fd4386a
commit 3dfc12793f
2 files changed
+5 -2

No files matched your search

+1 -1
View File
@@ -476,7 +476,7 @@ function REPLServer(prompt,
const matches = self._sawKeyPress ? cmd.match(/^\s+/) : null;
if (matches) {
const prefix = matches[0];
self.inputStream.write(prefix);
self.write(prefix);
self.line = prefix;
self.cursor = prefix.length;
}
+4 -1
View File
@@ -75,12 +75,15 @@ tests.forEach(run);
// Auto code alignment for .editor mode
function testCodeAligment({input, cursor = 0, line = ''}) {
const stream = new common.ArrayStream();
const outputStream = new common.ArrayStream();
stream.write = () => { throw new Error('Writing not allowed!'); };
const replServer = repl.start({
prompt: '> ',
terminal: true,
input: stream,
output: stream,
output: outputStream,
useColors: false
});