Make sure we trigger js/ts completions on /

This commit is contained in:
Matt Bierner 2018-06-19 11:06:14 -07:00
parent 4d3a8ae210
commit f71c378488

View file

@ -449,42 +449,44 @@ class TypeScriptCompletionItemProvider implements vscode.CompletionItemProvider
line: vscode.TextLine, line: vscode.TextLine,
position: vscode.Position position: vscode.Position
): boolean { ): boolean {
if ((context.triggerCharacter === '"' || context.triggerCharacter === '\'') && !this.client.apiVersion.gte(API.v290)) { if (context.triggerCharacter && !this.client.apiVersion.gte(API.v290)) {
if (!config.quickSuggestionsForPaths) { if ((context.triggerCharacter === '"' || context.triggerCharacter === '\'')) {
return false; if (!config.quickSuggestionsForPaths) {
return false;
}
// make sure we are in something that looks like the start of an import
const pre = line.text.slice(0, position.character);
if (!pre.match(/\b(from|import)\s*["']$/) && !pre.match(/\b(import|require)\(['"]$/)) {
return false;
}
} }
// make sure we are in something that looks like the start of an import if (context.triggerCharacter === '/') {
const pre = line.text.slice(0, position.character); if (!config.quickSuggestionsForPaths) {
if (!pre.match(/\b(from|import)\s*["']$/) && !pre.match(/\b(import|require)\(['"]$/)) { return false;
return false; }
}
}
if (context.triggerCharacter === '/') { // make sure we are in something that looks like an import path
if (!config.quickSuggestionsForPaths) { const pre = line.text.slice(0, position.character);
return false; if (!pre.match(/\b(from|import)\s*["'][^'"]*$/) && !pre.match(/\b(import|require)\(['"][^'"]*$/)) {
return false;
}
} }
// make sure we are in something that looks like an import path if (context.triggerCharacter === '@') {
const pre = line.text.slice(0, position.character); // make sure we are in something that looks like the start of a jsdoc comment
if (!pre.match(/\b(from|import)\s*["'][^'"]*$/) && !pre.match(/\b(import|require)\(['"][^'"]*$/)) { const pre = line.text.slice(0, position.character);
if (!pre.match(/^\s*\*[ ]?@/) && !pre.match(/\/\*\*+[ ]?@/)) {
return false;
}
}
if (context.triggerCharacter === '<') {
return false; return false;
} }
} }
if (context.triggerCharacter === '@' && !this.client.apiVersion.gte(API.v290)) {
// make sure we are in something that looks like the start of a jsdoc comment
const pre = line.text.slice(0, position.character);
if (!pre.match(/^\s*\*[ ]?@/) && !pre.match(/\/\*\*+[ ]?@/)) {
return false;
}
}
if (context.triggerCharacter === '<') {
return this.client.apiVersion.gte(API.v290);
}
return true; return true;
} }