Browse Source

Simplify REPL displayPrompt

Now that we insert \r into the stream and aren't switching back and forth
between termios modes, not need to worry about when to display the prompt.
v0.7.4-release
Ryan Dahl 15 years ago
parent
commit
8e09b1e2e1
  1. 24
      lib/repl.js

24
lib/repl.js

@ -79,8 +79,6 @@ function REPLServer(prompt, stream) {
rli.addListener('line', function (cmd) { rli.addListener('line', function (cmd) {
cmd = trimWhitespace(cmd); cmd = trimWhitespace(cmd);
var flushed = true;
// Check to see if a REPL keyword was used. If it returns true, // Check to see if a REPL keyword was used. If it returns true,
// display next prompt and return. // display next prompt and return.
if (cmd && cmd.charAt(0) === '.') { if (cmd && cmd.charAt(0) === '.') {
@ -100,7 +98,7 @@ function REPLServer(prompt, stream) {
var ret = evalcx(self.buffered_cmd, context, "repl"); var ret = evalcx(self.buffered_cmd, context, "repl");
if (ret !== undefined) { if (ret !== undefined) {
context._ = ret; context._ = ret;
flushed = self.stream.write(exports.writer(ret) + "\n"); self.stream.write(exports.writer(ret) + "\n");
} }
self.buffered_cmd = ''; self.buffered_cmd = '';
@ -113,28 +111,14 @@ function REPLServer(prompt, stream) {
} catch (e) { } catch (e) {
// On error: Print the error and clear the buffer // On error: Print the error and clear the buffer
if (e.stack) { if (e.stack) {
flushed = self.stream.write(e.stack + "\n"); self.stream.write(e.stack + "\n");
} else { } else {
flushed = self.stream.write(e.toString() + "\n"); self.stream.write(e.toString() + "\n");
} }
self.buffered_cmd = ''; self.buffered_cmd = '';
} }
// need to make sure the buffer is flushed before displaying the prompt self.displayPrompt();
// again. This is really ugly. Need to have callbacks from
// net.Stream.write()
if (flushed) {
self.displayPrompt();
} else {
self.displayPromptOnDrain = true;
}
});
self.stream.addListener('drain', function () {
if (self.displayPromptOnDrain) {
self.displayPrompt();
self.displayPromptOnDrain = false;
}
}); });
rli.addListener('close', function () { rli.addListener('close', function () {

Loading…
Cancel
Save