diff --git a/src/vs/workbench/contrib/snippets/browser/snippetCompletionProvider.ts b/src/vs/workbench/contrib/snippets/browser/snippetCompletionProvider.ts index c3b6b486a9f..17dc94277d9 100644 --- a/src/vs/workbench/contrib/snippets/browser/snippetCompletionProvider.ts +++ b/src/vs/workbench/contrib/snippets/browser/snippetCompletionProvider.ts @@ -85,13 +85,13 @@ export class SnippetCompletionProvider implements CompletionItemProvider { async provideCompletionItems(model: ITextModel, position: Position, context: CompletionContext): Promise { const sw = new StopWatch(); + const lineContentLow = model.getLineContent(position.lineNumber).toLowerCase(); + const wordUntil = model.getWordUntilPosition(position).word.toLowerCase(); + const languageId = this._getLanguageIdAtPosition(model, position); const languageConfig = this._languageConfigurationService.getLanguageConfiguration(languageId); const snippets = new Set(await this._snippets.getSnippets(languageId)); - const lineContentLow = model.getLineContent(position.lineNumber).toLowerCase(); - const wordUntil = model.getWordUntilPosition(position).word.toLowerCase(); - const suggestions: SnippetCompletion[] = []; const columnOffset = position.column - 1; diff --git a/src/vs/workbench/contrib/snippets/test/browser/snippetsService.test.ts b/src/vs/workbench/contrib/snippets/test/browser/snippetsService.test.ts index e74a499f9c0..084a9b64dde 100644 --- a/src/vs/workbench/contrib/snippets/test/browser/snippetsService.test.ts +++ b/src/vs/workbench/contrib/snippets/test/browser/snippetsService.test.ts @@ -819,4 +819,36 @@ suite('SnippetsService', function () { const first = result.suggestions[0]; assert.strictEqual((first.range).insert.startColumn, 5); }); + + test.skip('Autocomplete suggests based on the last letter of a word and it depends on the typing speed #191070', async function () { + snippetService = new SimpleSnippetService([ + new Snippet(false, ['fooLang'], '/whiletrue', '/whiletrue', '', 'one', '', SnippetSource.User, generateUuid()), + new Snippet(false, ['fooLang'], '/sc not expanding', '/sc not expanding', '', 'two', '', SnippetSource.User, generateUuid()), + ]); + + const provider = new SnippetCompletionProvider(languageService, snippetService, disposables.add(new TestLanguageConfigurationService())); + const model = disposables.add(instantiateTextModel(instantiationService, '', 'fooLang')); + + { // PREFIX: w + model.setValue('w'); + const result1 = await provider.provideCompletionItems( + model, + new Position(1, 2), + { triggerKind: CompletionTriggerKind.Invoke } + ); + assert.strictEqual(result1.suggestions.length, 1); + assert.strictEqual(result1.suggestions[0].insertText, 'one'); + } + + { // PREFIX: where + model.setValue('where'); + const result2 = await provider.provideCompletionItems( + model, + new Position(1, 6), + { triggerKind: CompletionTriggerKind.Invoke } + ); + assert.strictEqual(result2.suggestions.length, 1); + assert.strictEqual(result2.suggestions[1].insertText, 'one'); // /whiletrue matches where (WHilEtRuE) + } + }); }); diff --git a/test/unit/electron/index.js b/test/unit/electron/index.js index 81c5752111d..a02bce4999c 100644 --- a/test/unit/electron/index.js +++ b/test/unit/electron/index.js @@ -43,8 +43,8 @@ const minimist = require('minimist'); * }} */ const args = minimist(process.argv.slice(2), { - string: ['grep', 'run', 'runGlob', 'dev', 'reporter', 'reporter-options', 'wait-server', 'timeout', 'crash-reporter-directory', 'tfs'], - boolean: ['build', 'coverage', 'help'], + string: ['grep', 'run', 'runGlob', 'reporter', 'reporter-options', 'wait-server', 'timeout', 'crash-reporter-directory', 'tfs'], + boolean: ['build', 'coverage', 'help', 'dev'], alias: { 'grep': ['g', 'f'], 'runGlob': ['glob', 'runGrep'],