From 363647b2451772cd072fdec1c8234561540130ac Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Mon, 28 Oct 2019 09:58:35 +0100 Subject: [PATCH] fix #83400 --- src/vs/workbench/api/common/extHostLanguageFeatures.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/api/common/extHostLanguageFeatures.ts b/src/vs/workbench/api/common/extHostLanguageFeatures.ts index c22bb63a856..616b1a83161 100644 --- a/src/vs/workbench/api/common/extHostLanguageFeatures.ts +++ b/src/vs/workbench/api/common/extHostLanguageFeatures.ts @@ -635,6 +635,12 @@ class SuggestAdapter { const doc = this._documents.getDocument(resource); const pos = typeConvert.Position.to(position); + // The default insert/replace ranges. It's important to compute them + // before asynchronously asking the provider for its results. See + // https://github.com/microsoft/vscode/issues/83400#issuecomment-546851421 + const replaceRange = doc.getWordRangeAtPosition(pos) || new Range(pos, pos); + const insertRange = replaceRange.with({ end: pos }); + return asPromise(() => this._provider.provideCompletionItems(doc, pos, token, typeConvert.CompletionContext.to(context))).then(value => { if (!value) { @@ -655,10 +661,6 @@ class SuggestAdapter { const disposables = new DisposableStore(); this._disposables.set(pid, disposables); - // the default text edit range - const replaceRange = doc.getWordRangeAtPosition(pos) || new Range(pos, pos); - const insertRange = replaceRange.with({ end: pos }); - const result: extHostProtocol.ISuggestResultDto = { x: pid, b: [], -- GitLab