Permalink
Browse files

repl: allow autocompletion for scoped packages

Previously, autocompletion of scoped packages was not supported by the
repl due to not including the `@` character in the regular expression.

PR-URL: #10296
Reviewed-By: Prince John Wesley <princejohnwesley@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information...
1 parent 9d0220c commit 6796bf482924118253667c029ac7a6a78b1269b3 @evanlucas evanlucas committed Dec 15, 2016
Showing with 20 additions and 4 deletions.
  1. +1 −1 lib/repl.js
  2. +1 −0 test/fixtures/node_modules/@nodejsscope/index.js
  3. +18 −3 test/parallel/test-repl-tab-complete.js
View
@@ -794,7 +794,7 @@ ArrayStream.prototype.writable = true;
ArrayStream.prototype.resume = function() {};
ArrayStream.prototype.write = function() {};
-const requireRE = /\brequire\s*\(['"](([\w./-]+\/)?([\w./-]*))/;
+const requireRE = /\brequire\s*\(['"](([\w@./-]+\/)?([\w@./-]*))/;
const simpleExpressionRE =
/(([a-zA-Z_$](?:\w|\$)*)\.)*([a-zA-Z_$](?:\w|\$)*)\.?$/;
@@ -0,0 +1 @@
+// Not used
@@ -1,8 +1,14 @@
'use strict';
-var common = require('../common');
-var assert = require('assert');
-var repl = require('repl');
+const common = require('../common');
+const assert = require('assert');
+
+// We have to change the directory to ../fixtures before requiring repl
+// in order to make the tests for completion of node_modules work properly
+// since repl modifies module.paths.
+process.chdir(common.fixturesDir);
+
+const repl = require('repl');
function getNoResultsFunction() {
return common.mustCall((err, data) => {
@@ -196,6 +202,15 @@ testMe.complete('require(\'n', common.mustCall(function(error, data) {
});
}));
+{
+ const expected = ['@nodejsscope', '@nodejsscope/'];
+ putIn.run(['.clear']);
+ testMe.complete('require(\'@nodejs', common.mustCall((err, data) => {
+ assert.strictEqual(err, null);
+ assert.deepStrictEqual(data, [expected, '@nodejs']);
+ }));
+}
+
// Make sure tab completion works on context properties
putIn.run(['.clear']);

0 comments on commit 6796bf4

Please sign in to comment.