diff --git a/lib/_debugger.js b/lib/_debugger.js index 286dc0f60d..08e70573aa 100644 --- a/lib/_debugger.js +++ b/lib/_debugger.js @@ -595,7 +595,7 @@ function Interface() { self.handleSIGINT(); }); - term.on('close', function() { + term.on('attemptClose', function() { self.tryQuit(); }); diff --git a/lib/readline.js b/lib/readline.js index b52994c3fb..e5feec238c 100644 --- a/lib/readline.js +++ b/lib/readline.js @@ -314,6 +314,17 @@ Interface.prototype._historyPrev = function() { } }; + +Interface.prototype._attemptClose = function() { + if (this.listeners('attemptClose').length) { + // User is to call interface.close() manually. + this.emit('attemptClose'); + } else { + this.close(); + } +}; + + // handle a write from the tty Interface.prototype._ttyWrite = function(b) { switch (b[0]) { @@ -324,13 +335,13 @@ Interface.prototype._ttyWrite = function(b) { this.emit('SIGINT'); } else { // default behavior, end the readline - this.close(); + this._attemptClose(); } break; case 4: // control-d, delete right or EOF if (this.cursor === 0 && this.line.length === 0) { - this.close(); + this._attemptClose(); } else if (this.cursor < this.line.length) { this.line = this.line.slice(0, this.cursor) + this.line.slice(this.cursor + 1, this.line.length);