Browse Source

repl: disable Ctrl+C support on win32 for now

Disable Windows support for interrupting REPL commands using
Ctrl+C by default, because the switches from console raw mode
and back have been interfering with printing the results of
evaluated expressions.

This is a temporary measure, since the underlying problem is
very likely not related to this specific feature.

Ref: https://github.com/nodejs/node/issues/7837

PR-URL: https://github.com/nodejs/node/pull/7977
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Nikolai Vavilov <vvnicholas@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: João Reis <reis@janeasystems.com>
v7.x
Anna Henningsen 9 years ago
committed by James M Snell
parent
commit
f59b8888f1
  1. 11
      lib/repl.js

11
lib/repl.js

@ -289,7 +289,13 @@ function REPLServer(prompt,
if (!err) { if (!err) {
// Unset raw mode during evaluation so that Ctrl+C raises a signal. // Unset raw mode during evaluation so that Ctrl+C raises a signal.
let previouslyInRawMode; let previouslyInRawMode;
if (self.breakEvalOnSigint) {
// Temporarily disabled on Windows due to output problems that likely
// result from the raw mode switches here, see
// https://github.com/nodejs/node/issues/7837
// Setting NODE_REPL_CTRLC is meant as a temporary opt-in for debugging.
if (self.breakEvalOnSigint &&
(process.platform !== 'win32' || process.env.NODE_REPL_CTRLC)) {
// Start the SIGINT watchdog before entering raw mode so that a very // Start the SIGINT watchdog before entering raw mode so that a very
// quick Ctrl+C doesn’t lead to aborting the process completely. // quick Ctrl+C doesn’t lead to aborting the process completely.
utilBinding.startSigintWatchdog(); utilBinding.startSigintWatchdog();
@ -309,7 +315,8 @@ function REPLServer(prompt,
result = script.runInContext(context, scriptOptions); result = script.runInContext(context, scriptOptions);
} }
} finally { } finally {
if (self.breakEvalOnSigint) { if (self.breakEvalOnSigint &&
(process.platform !== 'win32' || process.env.NODE_REPL_CTRLC)) {
// Reset terminal mode to its previous value. // Reset terminal mode to its previous value.
self._setRawMode(previouslyInRawMode); self._setRawMode(previouslyInRawMode);

Loading…
Cancel
Save