From 79f90304beb5ec2c4c90688e6b0c61e8bd80595b Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Wed, 17 Feb 2021 15:21:18 +0100 Subject: [PATCH] refine completion provider for context keys, https://github.com/microsoft/vscode/issues/9303 --- .../src/configurationEditingMain.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/extensions/configuration-editing/src/configurationEditingMain.ts b/extensions/configuration-editing/src/configurationEditingMain.ts index f4c2ab34174..28bcda61df2 100644 --- a/extensions/configuration-editing/src/configurationEditingMain.ts +++ b/extensions/configuration-editing/src/configurationEditingMain.ts @@ -147,17 +147,22 @@ function registerContextKeyCompletions(): vscode.Disposable { { async provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken) { - const replacing = document.getWordRangeAtPosition(position, /[\w.-\d]/); - const inserting = replacing?.with(undefined, position); - if (!replacing || !inserting) { + const location = getLocation(document.getText(), document.offsetAt(position)); + + if (location.isAtPropertyKey) { return; } - const location = getLocation(document.getText(), document.offsetAt(position)); if (!location.matches(['*', 'when']) && !location.matches(['contributes', 'menus', '*', '*', 'when'])) { return; } + const replacing = document.getWordRangeAtPosition(position, /[^"\s]+/); + if (!replacing) { + return; + } + const inserting = replacing.with(undefined, position); + const data = await vscode.commands.executeCommand('getContextKeyInfo'); if (token.isCancellationRequested || !data) { return;