From e416b3ee3699d5479cf5f23b5232b4e5c018ba7d Mon Sep 17 00:00:00 2001 From: Lance Ball Date: Fri, 1 Sep 2017 12:52:18 -0400 Subject: [PATCH] repl: deprecate turnOffEditorMode This deprecates the current REPLServer.prototype.turnOffEditorMode and adds a private function for turnOffEditorMode which handles the necessary internal changes required instead of having them scattered about. PR-URL: https://github.com/nodejs/node/pull/15136 Reviewed-By: Ruben Bridgewater Reviewed-By: Prince John Wesley Reviewed-By: Benjamin Gruenbaum Reviewed-By: Anna Henningsen Reviewed-By: James M Snell --- doc/api/deprecations.md | 7 +++++ lib/repl.js | 31 ++++++++++++------- .../test-repl-turn-off-editor-mode.js | 14 +++++++++ 3 files changed, 40 insertions(+), 12 deletions(-) create mode 100644 test/parallel/test-repl-turn-off-editor-mode.js diff --git a/doc/api/deprecations.md b/doc/api/deprecations.md index 79a8f896f1533e..c70f494c6ddada 100644 --- a/doc/api/deprecations.md +++ b/doc/api/deprecations.md @@ -693,6 +693,13 @@ Type: Runtime *Note*: `Module._debug()` was never documented as an officially supported API. + +### DEP0078: REPLServer.turnOffEditorMode() + +Type: Runtime + +`REPLServer.turnOffEditorMode()` was removed from userland visibility. + [`Buffer.allocUnsafeSlow(size)`]: buffer.html#buffer_class_method_buffer_allocunsafeslow_size [`Buffer.from(array)`]: buffer.html#buffer_class_method_buffer_from_array [`Buffer.from(buffer)`]: buffer.html#buffer_class_method_buffer_from_buffer diff --git a/lib/repl.js b/lib/repl.js index 0d1aca6aa546c9..53b8d2c46c5938 100644 --- a/lib/repl.js +++ b/lib/repl.js @@ -397,7 +397,7 @@ function REPLServer(prompt, self.on('SIGINT', function onSigInt() { var empty = self.line.length === 0; self.clearLine(); - self.turnOffEditorMode(); + _turnOffEditorMode(self); const cmd = self[kBufferedCommandSymbol]; if (!(cmd && cmd.length > 0) && empty) { @@ -539,7 +539,7 @@ function REPLServer(prompt, if (key.ctrl && !key.shift) { switch (key.name) { case 'd': // End editor mode - self.turnOffEditorMode(); + _turnOffEditorMode(self); sawCtrlD = true; ttyWrite(d, { name: 'return' }); break; @@ -691,11 +691,10 @@ REPLServer.prototype.setPrompt = function setPrompt(prompt) { REPLServer.super_.prototype.setPrompt.call(this, prompt); }; -REPLServer.prototype.turnOffEditorMode = function() { - this.editorMode = false; - this.setPrompt(this._initialPrompt); -}; - +REPLServer.prototype.turnOffEditorMode = util.deprecate( + function() { _turnOffEditorMode(this); }, + 'REPLServer.turnOffEditorMode() is deprecated', + 'DEP00XX'); // A stream to push an array into a REPL // used in REPLServer.complete @@ -1182,6 +1181,16 @@ function addStandardGlobals(completionGroups, filter) { } } +function _turnOnEditorMode(repl) { + repl.editorMode = true; + REPLServer.super_.prototype.setPrompt.call(repl, ''); +} + +function _turnOffEditorMode(repl) { + repl.editorMode = false; + repl.setPrompt(repl._initialPrompt); +} + function defineDefaultCommands(repl) { repl.defineCommand('break', { help: 'Sometimes you get stuck, this gets you out', @@ -1254,15 +1263,14 @@ function defineDefaultCommands(repl) { try { var stats = fs.statSync(file); if (stats && stats.isFile()) { - this.editorMode = true; - REPLServer.super_.prototype.setPrompt.call(this, ''); + _turnOnEditorMode(this); var data = fs.readFileSync(file, 'utf8'); var lines = data.split('\n'); for (var n = 0; n < lines.length; n++) { if (lines[n]) this.write(`${lines[n]}\n`); } - this.turnOffEditorMode(); + _turnOffEditorMode(this); this.write('\n'); } else { this.outputStream.write('Failed to load:' + file + @@ -1279,8 +1287,7 @@ function defineDefaultCommands(repl) { help: 'Enter editor mode', action() { if (!this.terminal) return; - this.editorMode = true; - REPLServer.super_.prototype.setPrompt.call(this, ''); + _turnOnEditorMode(this); this.outputStream.write( '// Entering editor mode (^D to finish, ^C to cancel)\n'); } diff --git a/test/parallel/test-repl-turn-off-editor-mode.js b/test/parallel/test-repl-turn-off-editor-mode.js new file mode 100644 index 00000000000000..c98520c9ec46bf --- /dev/null +++ b/test/parallel/test-repl-turn-off-editor-mode.js @@ -0,0 +1,14 @@ +'use strict'; +const common = require('../common'); +const repl = require('repl'); + +testTurnOffEditorMode(); + +function testTurnOffEditorMode() { + const server = repl.start({ prompt: '> ' }); + const warn = 'REPLServer.turnOffEditorMode() is deprecated'; + + common.expectWarning('DeprecationWarning', warn); + server.turnOffEditorMode(); + server.close(); +}