From aa63cea8bdc060331aafc086d502a05121662820 Mon Sep 17 00:00:00 2001 From: Prashant Kumar Rai Date: Fri, 14 Aug 2026 09:57:57 +0530 Subject: [PATCH] Add alternative commands for go to location in C/C++ configurations and implement tests --- Extension/package.json | 6 +++ .../test/unit/gotoLocationDefaults.test.ts | 37 +++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 Extension/test/unit/gotoLocationDefaults.test.ts diff --git a/Extension/package.json b/Extension/package.json index e4f44941d..390ae24f3 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -6672,18 +6672,24 @@ }, "configurationDefaults": { "[cpp]": { + "editor.gotoLocation.alternativeDeclarationCommand": "editor.action.revealDefinition", + "editor.gotoLocation.alternativeDefinitionCommand": "editor.action.revealDeclaration", "editor.wordBasedSuggestions": "off", "editor.semanticHighlighting.enabled": true, "editor.stickyScroll.defaultModel": "foldingProviderModel", "editor.suggest.insertMode": "replace" }, "[cuda-cpp]": { + "editor.gotoLocation.alternativeDeclarationCommand": "editor.action.revealDefinition", + "editor.gotoLocation.alternativeDefinitionCommand": "editor.action.revealDeclaration", "editor.wordBasedSuggestions": "off", "editor.semanticHighlighting.enabled": true, "editor.stickyScroll.defaultModel": "foldingProviderModel", "editor.suggest.insertMode": "replace" }, "[c]": { + "editor.gotoLocation.alternativeDeclarationCommand": "editor.action.revealDefinition", + "editor.gotoLocation.alternativeDefinitionCommand": "editor.action.revealDeclaration", "editor.wordBasedSuggestions": "off", "editor.semanticHighlighting.enabled": true, "editor.stickyScroll.defaultModel": "foldingProviderModel", diff --git a/Extension/test/unit/gotoLocationDefaults.test.ts b/Extension/test/unit/gotoLocationDefaults.test.ts new file mode 100644 index 000000000..b67961d0e --- /dev/null +++ b/Extension/test/unit/gotoLocationDefaults.test.ts @@ -0,0 +1,37 @@ +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All Rights Reserved. + * See 'LICENSE' in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +import { deepStrictEqual } from 'assert'; +import { readFileSync } from 'fs'; +import { join } from 'path'; +import { describe, it } from 'mocha'; + +type PackageJson = { + contributes?: { + configurationDefaults?: Record>; + }; +}; + +function getLanguageDefaults(packageJson: PackageJson, languageKey: string): Record { + const defaults = packageJson.contributes?.configurationDefaults?.[languageKey]; + if (!defaults) { + throw new Error(`Missing configuration defaults for ${languageKey}`); + } + return defaults; +} + +describe('Go to Location defaults', () => { + it('sets C/C++ fallback commands between declaration and definition', () => { + const packageJsonPath = join(__dirname, '../../../package.json'); + const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8')) as PackageJson; + + const languages = ['[c]', '[cpp]', '[cuda-cpp]']; + for (const language of languages) { + const defaults = getLanguageDefaults(packageJson, language); + deepStrictEqual(defaults['editor.gotoLocation.alternativeDefinitionCommand'], 'editor.action.revealDeclaration'); + deepStrictEqual(defaults['editor.gotoLocation.alternativeDeclarationCommand'], 'editor.action.revealDefinition'); + } + }); +});