提交 332908b2 编写于 作者: M Martin Aeschlimann

[json] Hover/completion not working for scoped packages. Fixes #10541

上级 4950c7cd
...@@ -121,29 +121,29 @@ export class PackageJSONContribution implements IJSONContribution { ...@@ -121,29 +121,29 @@ export class PackageJSONContribution implements IJSONContribution {
if ((location.matches(['dependencies', '*']) || location.matches(['devDependencies', '*']) || location.matches(['optionalDependencies', '*']) || location.matches(['peerDependencies', '*']))) { if ((location.matches(['dependencies', '*']) || location.matches(['devDependencies', '*']) || location.matches(['optionalDependencies', '*']) || location.matches(['peerDependencies', '*']))) {
let currentKey = location.path[location.path.length - 1]; let currentKey = location.path[location.path.length - 1];
if (typeof currentKey === 'string') { if (typeof currentKey === 'string') {
let queryUrl = 'http://registry.npmjs.org/' + encodeURIComponent(currentKey) + '/latest'; let queryUrl = 'http://registry.npmjs.org/' + encodeURIComponent(currentKey).replace('%40', '@');
return this.xhr({ return this.xhr({
url : queryUrl url : queryUrl
}).then((success) => { }).then((success) => {
try { try {
let obj = JSON.parse(success.responseText); let obj = JSON.parse(success.responseText);
if (obj && obj.version) { let latest = obj && obj['dist-tags'] && obj['dist-tags']['latest'];
let version = obj.version; if (latest) {
let name = JSON.stringify(version); let name = JSON.stringify(latest);
let proposal = new CompletionItem(name); let proposal = new CompletionItem(name);
proposal.kind = CompletionItemKind.Property; proposal.kind = CompletionItemKind.Property;
proposal.insertText = name; proposal.insertText = name;
proposal.documentation = localize('json.npm.latestversion', 'The currently latest version of the package'); proposal.documentation = localize('json.npm.latestversion', 'The currently latest version of the package');
result.add(proposal); result.add(proposal);
name = JSON.stringify('^' + version); name = JSON.stringify('^' + latest);
proposal = new CompletionItem(name); proposal = new CompletionItem(name);
proposal.kind = CompletionItemKind.Property; proposal.kind = CompletionItemKind.Property;
proposal.insertText = name; proposal.insertText = name;
proposal.documentation = localize('json.npm.majorversion', 'Matches the most recent major version (1.x.x)'); proposal.documentation = localize('json.npm.majorversion', 'Matches the most recent major version (1.x.x)');
result.add(proposal); result.add(proposal);
name = JSON.stringify('~' + version); name = JSON.stringify('~' + latest);
proposal = new CompletionItem(name); proposal = new CompletionItem(name);
proposal.kind = CompletionItemKind.Property; proposal.kind = CompletionItemKind.Property;
proposal.insertText = name; proposal.insertText = name;
...@@ -179,8 +179,8 @@ export class PackageJSONContribution implements IJSONContribution { ...@@ -179,8 +179,8 @@ export class PackageJSONContribution implements IJSONContribution {
} }
private getInfo(pack: string): Thenable<string[]> { private getInfo(pack: string): Thenable<string[]> {
let queryUrl = 'http://registry.npmjs.org/' + encodeURIComponent(pack) + '/latest';
let queryUrl = 'http://registry.npmjs.org/' + encodeURIComponent(pack).replace('%40', '@');
return this.xhr({ return this.xhr({
url : queryUrl url : queryUrl
}).then((success) => { }).then((success) => {
...@@ -191,8 +191,9 @@ export class PackageJSONContribution implements IJSONContribution { ...@@ -191,8 +191,9 @@ export class PackageJSONContribution implements IJSONContribution {
if (obj.description) { if (obj.description) {
result.push(obj.description); result.push(obj.description);
} }
if (obj.version) { let latest = obj && obj['dist-tags'] && obj['dist-tags']['latest'];
result.push(localize('json.npm.version.hover', 'Latest version: {0}', obj.version)); if (latest) {
result.push(localize('json.npm.version.hover', 'Latest version: {0}', latest));
} }
return result; return result;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册