debugger: don't hang on ^d and ^c
This commit is contained in:
Родитель
4fa712c48f
Коммит
860e7a7a5f
|
@ -595,7 +595,7 @@ function Interface() {
|
|||
self.handleSIGINT();
|
||||
});
|
||||
|
||||
term.on('close', function() {
|
||||
term.on('attemptClose', function() {
|
||||
self.tryQuit();
|
||||
});
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Загрузка…
Ссылка в новой задаче