From 799f0b39c559aa16ad3f6e374476314ac9ede111 Mon Sep 17 00:00:00 2001 From: Garrett Serack Date: Thu, 3 Apr 2025 09:59:43 -0700 Subject: [PATCH 01/33] use Node v22 (#13454) --- .github/actions/AddComment/action.yml | 2 +- .github/actions/Locker/action.yml | 2 +- .github/actions/Reopener/action.yml | 2 +- .github/actions/StaleCloser/action.yml | 2 +- .github/workflows/job-compile-and-test.yml | 4 ++-- Build/cg/cg.yml | 4 ++-- Build/loc/TranslationsImportExport.yml | 2 +- Build/package/jobs_package_vsix.yml | 4 ++-- Build/publish/jobs_publish_vsix.yml | 4 ++-- 9 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/actions/AddComment/action.yml b/.github/actions/AddComment/action.yml index 4fdcfcd5f..8820d6b59 100644 --- a/.github/actions/AddComment/action.yml +++ b/.github/actions/AddComment/action.yml @@ -38,5 +38,5 @@ inputs: readonly: description: If true, changes are not applied. runs: - using: 'node12' + using: 'node20' main: 'index.js' diff --git a/.github/actions/Locker/action.yml b/.github/actions/Locker/action.yml index b5dcddcb0..0b20af00a 100644 --- a/.github/actions/Locker/action.yml +++ b/.github/actions/Locker/action.yml @@ -29,5 +29,5 @@ inputs: readonly: description: If true, changes are not applied. runs: - using: 'node12' + using: 'node20' main: 'index.js' diff --git a/.github/actions/Reopener/action.yml b/.github/actions/Reopener/action.yml index 84fd38145..f12a1443d 100644 --- a/.github/actions/Reopener/action.yml +++ b/.github/actions/Reopener/action.yml @@ -33,5 +33,5 @@ inputs: readonly: description: If true, changes are not applied. runs: - using: 'node12' + using: 'node20' main: 'index.js' diff --git a/.github/actions/StaleCloser/action.yml b/.github/actions/StaleCloser/action.yml index 58f65315d..c081109eb 100644 --- a/.github/actions/StaleCloser/action.yml +++ b/.github/actions/StaleCloser/action.yml @@ -43,5 +43,5 @@ inputs: readonly: description: If true, changes are not applied. runs: - using: 'node12' + using: 'node20' main: 'index.js' diff --git a/.github/workflows/job-compile-and-test.yml b/.github/workflows/job-compile-and-test.yml index 33d658965..2468e22a8 100644 --- a/.github/workflows/job-compile-and-test.yml +++ b/.github/workflows/job-compile-and-test.yml @@ -21,10 +21,10 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Use Node.js 20 + - name: Use Node.js 22 uses: actions/setup-node@v4 with: - node-version: 20 + node-version: 22 - name: Install Dependencies run: yarn install ${{ inputs.yarn-args }} diff --git a/Build/cg/cg.yml b/Build/cg/cg.yml index 129262e85..da747086f 100644 --- a/Build/cg/cg.yml +++ b/Build/cg/cg.yml @@ -80,9 +80,9 @@ extends: displayName: Use Yarn 1.x - task: UseNode@1 - displayName: Use Node 18.x + displayName: Use Node 22.x inputs: - version: 18.x + version: 22.x - script: IF EXIST %SYSTEMDRIVE%\Users\%USERNAME%\.npmrc del %SYSTEMDRIVE%\Users\%USERNAME%\.npmrc displayName: Delete .npmrc if it exists diff --git a/Build/loc/TranslationsImportExport.yml b/Build/loc/TranslationsImportExport.yml index 8be48eb2f..861916252 100644 --- a/Build/loc/TranslationsImportExport.yml +++ b/Build/loc/TranslationsImportExport.yml @@ -50,7 +50,7 @@ extends: steps: - task: NodeTool@0 inputs: - versionSpec: '18.x' + versionSpec: '22.x' displayName: 'Install Node.js' - task: CmdLine@2 diff --git a/Build/package/jobs_package_vsix.yml b/Build/package/jobs_package_vsix.yml index ec9713ade..88b8e71d6 100644 --- a/Build/package/jobs_package_vsix.yml +++ b/Build/package/jobs_package_vsix.yml @@ -22,9 +22,9 @@ jobs: - checkout: self - task: UseNode@1 - displayName: Use Node 18.x + displayName: Use Node 22.x inputs: - version: 18.x + version: 22.x - task: Npm@0 displayName: Install vsce diff --git a/Build/publish/jobs_publish_vsix.yml b/Build/publish/jobs_publish_vsix.yml index c2a9664fb..44016f494 100644 --- a/Build/publish/jobs_publish_vsix.yml +++ b/Build/publish/jobs_publish_vsix.yml @@ -17,9 +17,9 @@ jobs: steps: - task: NodeTool@0 - displayName: Use Node 18.x + displayName: Use Node 22.x inputs: - versionSpec: 18.x + versionSpec: 22.x - task: Npm@0 displayName: Install vsce From b73353fc9e4f5b310f9fec2f1b3710a5c859c857 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson <49173979+Colengms@users.noreply.github.com> Date: Thu, 3 Apr 2025 16:04:57 -0700 Subject: [PATCH 02/33] Fix some file association (#13455) --- Extension/src/common.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Extension/src/common.ts b/Extension/src/common.ts index 8817767b1..18fba33c0 100644 --- a/Extension/src/common.ts +++ b/Extension/src/common.ts @@ -165,19 +165,19 @@ export function getVcpkgRoot(): string { export function isHeaderFile(uri: vscode.Uri): boolean { const fileExt: string = path.extname(uri.fsPath); const fileExtLower: string = fileExt.toLowerCase(); - return !fileExt || [".cuh", ".hpp", ".hh", ".hxx", ".h++", ".hp", ".h", ".ii", ".inl", ".idl", ""].some(ext => fileExtLower === ext); + return !fileExt || [".cuh", ".hpp", ".hh", ".hxx", ".h++", ".hp", ".h", ".inl", ".ipp", ".tcc", ".tlh", ".tli", ""].some(ext => fileExtLower === ext); } export function isCppFile(uri: vscode.Uri): boolean { const fileExt: string = path.extname(uri.fsPath); const fileExtLower: string = fileExt.toLowerCase(); - return (fileExt === ".C") || [".cu", ".cpp", ".cc", ".cxx", ".c++", ".cp", ".ino", ".ipp", ".tcc"].some(ext => fileExtLower === ext); + return (fileExt === ".C") || [".cu", ".cpp", ".cc", ".cxx", ".c++", ".cp", ".ii", ".ino"].some(ext => fileExtLower === ext); } export function isCFile(uri: vscode.Uri): boolean { const fileExt: string = path.extname(uri.fsPath); const fileExtLower: string = fileExt.toLowerCase(); - return (fileExt === ".C") || fileExtLower === ".c"; + return fileExt === ".c" || fileExtLower === ".i"; } export function isCppOrCFile(uri: vscode.Uri | undefined): boolean { From c617c3882941ddbfe68485f4c202a2493fba6b0c Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Fri, 4 Apr 2025 19:15:42 -0700 Subject: [PATCH 03/33] Improve copilotHover description. (#13461) * Improve copilotHover description. --- Extension/package.nls.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Extension/package.nls.json b/Extension/package.nls.json index b2ec44040..a5a4586dc 100644 --- a/Extension/package.nls.json +++ b/Extension/package.nls.json @@ -785,9 +785,9 @@ ] }, "c_cpp.configuration.copilotHover.markdownDescription": { - "message": "If `disabled`, no Copilot information will appear in Hover.", + "message": "If `disabled`, no 'Generate Copilot summary' option will appear on hover.", "comment": [ - "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." + " {Locked=\"`disabled`\"} Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." ] }, "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": { @@ -1041,4 +1041,4 @@ "c_cpp.configuration.refactoring.includeHeader.never.description": "Never include the header file.", "c_cpp.languageModelTools.configuration.displayName": "C/C++ configuration", "c_cpp.languageModelTools.configuration.userDescription": "Configuration of the active C or C++ file, like language standard version and target platform." -} \ No newline at end of file +} From 3f9ca1577a8fbbd09b5ed33ddf9e0371a614aec7 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson <49173979+Colengms@users.noreply.github.com> Date: Mon, 7 Apr 2025 12:39:52 -0700 Subject: [PATCH 04/33] Fix cpptools-wordexp (#13468) --- Extension/src/common.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Extension/src/common.ts b/Extension/src/common.ts index 18fba33c0..fba6c3ac3 100644 --- a/Extension/src/common.ts +++ b/Extension/src/common.ts @@ -1068,7 +1068,10 @@ function extractArgs(argsString: string): string[] { return result; } else { try { - const wordexpResult: any = child_process.execFileSync(getExtensionFilePath("bin/cpptools-wordexp"), [argsString], { shell: false }); + const executablePath: string = getExtensionFilePath("bin/cpptools-wordexp"); + const executableDir: string = path.dirname(executablePath); + process.chdir(executableDir); + const wordexpResult: any = child_process.execFileSync(executablePath, [argsString], { shell: false }); if (wordexpResult === undefined) { return []; } From 1b7efea691f186a3dd85faa6b0622fc085910c7b Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Mon, 7 Apr 2025 12:56:05 -0700 Subject: [PATCH 05/33] Fix a warning with copilotHover. (#13467) --- .../src/LanguageServer/Providers/CopilotHoverProvider.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Extension/src/LanguageServer/Providers/CopilotHoverProvider.ts b/Extension/src/LanguageServer/Providers/CopilotHoverProvider.ts index 8a0038b37..2efb36106 100644 --- a/Extension/src/LanguageServer/Providers/CopilotHoverProvider.ts +++ b/Extension/src/LanguageServer/Providers/CopilotHoverProvider.ts @@ -33,9 +33,10 @@ export class CopilotHoverProvider implements vscode.HoverProvider { await this.client.ready; const settings: CppSettings = new CppSettings(vscode.workspace.getWorkspaceFolder(document.uri)?.uri); + const workspaceSettings: CppSettings = new CppSettings(); if (settings.hover === "disabled" || - settings.copilotHover === "disabled" || - (settings.copilotHover === "default" && await telemetry.isFlightEnabled("CppCopilotHoverDisabled"))) { + workspaceSettings.copilotHover === "disabled" || + (workspaceSettings.copilotHover === "default" && await telemetry.isFlightEnabled("CppCopilotHoverDisabled"))) { // Either disabled by the user or by the flight. return undefined; } From 6b8b9990597fdaccc4d60080e3caf1fb813d2c63 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Mon, 7 Apr 2025 17:30:22 -0700 Subject: [PATCH 06/33] Fix interval timer not firing. (#13469) --- Extension/src/LanguageServer/client.ts | 4 +++- Extension/src/LanguageServer/extension.ts | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index 306c93276..44255921e 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -59,7 +59,7 @@ import * as configs from './configurations'; import { CopilotCompletionContextFeatures, CopilotCompletionContextProvider } from './copilotCompletionContextProvider'; import { DataBinding } from './dataBinding'; import { cachedEditorConfigSettings, getEditorConfigSettings } from './editorConfig'; -import { CppSourceStr, clients, configPrefix, updateLanguageConfigurations, usesCrashHandler, watchForCrashes } from './extension'; +import { CppSourceStr, clients, configPrefix, initializeIntervalTimer, updateLanguageConfigurations, usesCrashHandler, watchForCrashes } from './extension'; import { LocalizeStringParams, getLocaleId, getLocalizedString } from './localization'; import { PersistentFolderState, PersistentState, PersistentWorkspaceState } from './persistentState'; import { RequestCancelled, ServerCancelled, createProtocolFilter } from './protocolFilter'; @@ -1365,6 +1365,8 @@ export class DefaultClient implements Client { // Listen for messages from the language server. this.registerNotifications(); + initializeIntervalTimer(); + // If a file is already open when we activate, sometimes we don't get any notifications about visible // or active text editors, visible ranges, or text selection. As a workaround, we trigger // onDidChangeVisibleTextEditors here. diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index cce843cc6..216d15615 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -191,8 +191,6 @@ export async function activate(): Promise { vcpkgDbPromise = initVcpkgDatabase(); - void clients.ActiveClient.ready.then(() => intervalTimer = global.setInterval(onInterval, 2500)); - await registerCommands(true); vscode.tasks.onDidStartTask(() => getActiveClient().PauseCodeAnalysis()); @@ -366,6 +364,10 @@ function onInterval(): void { clients.ActiveClient.onInterval(); } +export function initializeIntervalTimer(): void { + intervalTimer = global.setInterval(onInterval, 2500); +} + /** * registered commands */ From 2ca08b061f1dc2c63d2c8363a941b0de8011cb60 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson <49173979+Colengms@users.noreply.github.com> Date: Tue, 8 Apr 2025 16:59:05 -0700 Subject: [PATCH 07/33] Work around missing visible editor notifications (#13474) --- Extension/src/LanguageServer/client.ts | 6 ------ Extension/src/LanguageServer/clientCollection.ts | 2 -- Extension/src/LanguageServer/protocolFilter.ts | 5 +++++ 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index 44255921e..8be7dc006 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -1366,12 +1366,6 @@ export class DefaultClient implements Client { this.registerNotifications(); initializeIntervalTimer(); - - // If a file is already open when we activate, sometimes we don't get any notifications about visible - // or active text editors, visible ranges, or text selection. As a workaround, we trigger - // onDidChangeVisibleTextEditors here. - const cppEditors: vscode.TextEditor[] = vscode.window.visibleTextEditors.filter(e => util.isCpp(e.document)); - await this.onDidChangeVisibleTextEditors(cppEditors); } // update all client configurations diff --git a/Extension/src/LanguageServer/clientCollection.ts b/Extension/src/LanguageServer/clientCollection.ts index 9432ab38e..6788eb65d 100644 --- a/Extension/src/LanguageServer/clientCollection.ts +++ b/Extension/src/LanguageServer/clientCollection.ts @@ -144,8 +144,6 @@ export class ClientCollection { this.activeClient.activate(); await this.activeClient.didChangeActiveEditor(vscode.window.activeTextEditor); } - const cppEditors: vscode.TextEditor[] = vscode.window.visibleTextEditors.filter(e => util.isCpp(e.document)); - await this.defaultClient.onDidChangeVisibleTextEditors(cppEditors); } private async onDidChangeWorkspaceFolders(e?: vscode.WorkspaceFoldersChangeEvent): Promise { diff --git a/Extension/src/LanguageServer/protocolFilter.ts b/Extension/src/LanguageServer/protocolFilter.ts index 372d62e3a..2cdc38d53 100644 --- a/Extension/src/LanguageServer/protocolFilter.ts +++ b/Extension/src/LanguageServer/protocolFilter.ts @@ -8,6 +8,7 @@ import * as path from 'path'; import * as vscode from 'vscode'; import { Middleware } from 'vscode-languageclient'; import * as util from '../common'; +import { logAndReturn } from '../Utility/Async/returns'; import { Client } from './client'; import { clients } from './extension'; import { shouldChangeFromCToCpp } from './utils'; @@ -40,6 +41,10 @@ export function createProtocolFilter(): Middleware { // client.takeOwnership() will call client.TrackedDocuments.add() again, but that's ok. It's a Set. client.takeOwnership(document); void sendMessage(document); + const editor: vscode.TextEditor | undefined = vscode.window.visibleTextEditors.find(editor => editor.document === document); + if (editor) { + client.onDidChangeVisibleTextEditors([editor]).catch(logAndReturn.undefined); + } } } }, From 17f149d57dabcc7f45dd0462400cb5859aa2b9ba Mon Sep 17 00:00:00 2001 From: Ben McMorran Date: Tue, 8 Apr 2025 18:19:30 -0700 Subject: [PATCH 08/33] Shutdown LSP server on request (#13475) --- Extension/src/LanguageServer/client.ts | 27 +++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index 8be7dc006..b09c4c408 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -89,7 +89,7 @@ export function hasTrustedCompilerPaths(): boolean { // Data shared by all clients. let languageClient: LanguageClient; -let firstClientStarted: Promise; +let firstClientStarted: Promise<{ wasShutdown: boolean }>; let languageClientCrashedNeedsRestart: boolean = false; const languageClientCrashTimes: number[] = []; let compilerDefaults: configs.CompilerDefaults | undefined; @@ -508,6 +508,10 @@ interface CppInitializationParams { settings: SettingsParams; } +interface CppInitializationResult { + shouldShutdown: boolean; +} + interface TagParseStatus { localizeStringParams: LocalizeStringParams; isPaused: boolean; @@ -585,7 +589,7 @@ export interface CopilotCompletionContextParams { // Requests const PreInitializationRequest: RequestType = new RequestType('cpptools/preinitialize'); -const InitializationRequest: RequestType = new RequestType('cpptools/initialize'); +const InitializationRequest: RequestType = new RequestType('cpptools/initialize'); const QueryCompilerDefaultsRequest: RequestType = new RequestType('cpptools/queryCompilerDefaults'); const SwitchHeaderSourceRequest: RequestType = new RequestType('cpptools/didSwitchHeaderSource'); const GetDiagnosticsRequest: RequestType = new RequestType('cpptools/getDiagnostics'); @@ -1310,7 +1314,12 @@ export class DefaultClient implements Client { private async init(rootUri: vscode.Uri | undefined, isFirstClient: boolean) { ui = getUI(); ui.bind(this); - await firstClientStarted; + if ((await firstClientStarted).wasShutdown) { + this.isSupported = false; + DefaultClient.isStarted.resolve(); + return; + } + try { const workspaceFolder: vscode.WorkspaceFolder | undefined = this.rootFolder; this.innerConfiguration = new configs.CppProperties(this, rootUri, workspaceFolder); @@ -1574,7 +1583,7 @@ export class DefaultClient implements Client { }; } - private async createLanguageClient(): Promise { + private async createLanguageClient(): Promise<{ wasShutdown: boolean }> { this.currentCaseSensitiveFileSupport = new PersistentWorkspaceState("CPP.currentCaseSensitiveFileSupport", false); let resetDatabase: boolean = false; const serverModule: string = getLanguageServerFileName(); @@ -1707,7 +1716,15 @@ export class DefaultClient implements Client { // Move initialization to a separate message, so we can see log output from it. // A request is used in order to wait for completion and ensure that no subsequent // higher priority message may be processed before the Initialization request. - await languageClient.sendRequest(InitializationRequest, cppInitializationParams); + const initializeResult = await languageClient.sendRequest(InitializationRequest, cppInitializationParams); + + // If the server requested shutdown, then reload with the failsafe (null) client. + if (initializeResult.shouldShutdown) { + await languageClient.stop(); + await clients.recreateClients(true); + } + + return { wasShutdown: initializeResult.shouldShutdown }; } public async sendDidChangeSettings(): Promise { From a71cbadb216756831a249b98ecc5e8ceea435bb7 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson <49173979+Colengms@users.noreply.github.com> Date: Tue, 8 Apr 2025 18:53:18 -0700 Subject: [PATCH 09/33] Fix issues with remapping of `.C` files (#13476) --- .../src/LanguageServer/protocolFilter.ts | 24 ++++++++++--------- Extension/src/LanguageServer/settings.ts | 14 +++++++++++ 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/Extension/src/LanguageServer/protocolFilter.ts b/Extension/src/LanguageServer/protocolFilter.ts index 2cdc38d53..0a166df83 100644 --- a/Extension/src/LanguageServer/protocolFilter.ts +++ b/Extension/src/LanguageServer/protocolFilter.ts @@ -11,6 +11,7 @@ import * as util from '../common'; import { logAndReturn } from '../Utility/Async/returns'; import { Client } from './client'; import { clients } from './extension'; +import { hasFileAssociation } from './settings'; import { shouldChangeFromCToCpp } from './utils'; export const RequestCancelled: number = -32800; @@ -30,21 +31,22 @@ export function createProtocolFilter(): Middleware { client.TrackedDocuments.set(uriString, document); // Work around vscode treating ".C" or ".H" as c, by adding this file name to file associations as cpp if (document.languageId === "c" && shouldChangeFromCToCpp(document)) { - const baseFileName: string = path.basename(document.fileName); - const mappingString: string = baseFileName + "@" + document.fileName; - client.addFileAssociations(mappingString, "cpp"); - client.sendDidChangeSettings(); - // This will cause the file to be closed and reopened. - void vscode.languages.setTextDocumentLanguage(document, "cpp"); - return; + // Don't override the user's setting. + if (!hasFileAssociation(path.basename(document.uri.fsPath))) { + const baseFileName: string = path.basename(document.fileName); + const mappingString: string = baseFileName + "@" + document.fileName; + client.addFileAssociations(mappingString, "cpp"); + client.sendDidChangeSettings(); + // The following will cause the file to be closed and reopened. + void vscode.languages.setTextDocumentLanguage(document, "cpp"); + return; + } } // client.takeOwnership() will call client.TrackedDocuments.add() again, but that's ok. It's a Set. client.takeOwnership(document); void sendMessage(document); - const editor: vscode.TextEditor | undefined = vscode.window.visibleTextEditors.find(editor => editor.document === document); - if (editor) { - client.onDidChangeVisibleTextEditors([editor]).catch(logAndReturn.undefined); - } + const cppEditors: vscode.TextEditor[] = vscode.window.visibleTextEditors.filter(e => util.isCpp(e.document)); + client.onDidChangeVisibleTextEditors(cppEditors).catch(logAndReturn.undefined); } } }, diff --git a/Extension/src/LanguageServer/settings.ts b/Extension/src/LanguageServer/settings.ts index fb8b3c458..999e8114e 100644 --- a/Extension/src/LanguageServer/settings.ts +++ b/Extension/src/LanguageServer/settings.ts @@ -1099,3 +1099,17 @@ export class OtherSettings { public get searchExclude(): Excludes { return this.getAsExcludes("search", "exclude", this.defaultSearchExcludes, this.resource); } public get workbenchSettingsEditor(): string { return this.getAsString("workbench.settings", "editor", this.resource, "ui"); } } + +export function hasFileAssociation(fileName: string): boolean { + const otherSettings: OtherSettings = new OtherSettings(); + const associations: Associations = otherSettings.filesAssociations; + if (associations[fileName]) { + return true; + } + for (const pattern in associations) { + if (pattern.startsWith('*.') && fileName.endsWith(pattern.slice(1))) { + return true; + } + } + return false; +} From 4e6f2f81728919d5dd5a106254762c9c5d22c6d5 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Wed, 9 Apr 2025 12:28:19 -0700 Subject: [PATCH 10/33] Add an extra crash call stack filter check. (#13478) --- Extension/src/LanguageServer/extension.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index 216d15615..53bb833c2 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -1329,6 +1329,11 @@ async function handleCrashFileRead(crashDirectory: string, crashFile: string, cr data += crashCallStack; + // TODO: Remove this in 1.25.1 after it's confirmed that it's not happening. + if (containsFilteredTelemetryData(data)) { + data = "unexpected call stack\n"; + } + logCppCrashTelemetry(data, addressData, crashLog); await util.deleteFile(path.resolve(crashDirectory, crashFile)).catch(logAndReturn.undefined); From bcdd61859bca9b01669a6175e7c2d638be28f496 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson <49173979+Colengms@users.noreply.github.com> Date: Wed, 9 Apr 2025 16:08:40 -0700 Subject: [PATCH 11/33] Add IsExplicit fields for new recursive include properties (#13480) --- .../src/LanguageServer/configurations.ts | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/Extension/src/LanguageServer/configurations.ts b/Extension/src/LanguageServer/configurations.ts index ccd7723f9..f132d8739 100644 --- a/Extension/src/LanguageServer/configurations.ts +++ b/Extension/src/LanguageServer/configurations.ts @@ -87,6 +87,9 @@ export interface Configuration { browse?: Browse; recursiveIncludes?: RecursiveIncludes; customConfigurationVariables?: { [key: string]: string }; + recursiveIncludesReduceIsExplicit?: boolean; + recursiveIncludesPriorityIsExplicit?: boolean; + recursiveIncludesOrderIsExplicit?: boolean; } export interface ConfigurationErrors { @@ -940,8 +943,11 @@ export class CppProperties { configuration.recursiveIncludes = {}; } configuration.recursiveIncludes.reduce = this.updateConfigurationString(configuration.recursiveIncludes.reduce, settings.defaultRecursiveIncludesReduce); + configuration.recursiveIncludesReduceIsExplicit = configuration.recursiveIncludesReduceIsExplicit || settings.defaultRecursiveIncludesReduce !== ""; configuration.recursiveIncludes.priority = this.updateConfigurationString(configuration.recursiveIncludes.priority, settings.defaultRecursiveIncludesPriority); + configuration.recursiveIncludesPriorityIsExplicit = configuration.recursiveIncludesPriorityIsExplicit || settings.defaultRecursiveIncludesPriority !== ""; configuration.recursiveIncludes.order = this.updateConfigurationString(configuration.recursiveIncludes.order, settings.defaultRecursiveIncludesOrder); + configuration.recursiveIncludesOrderIsExplicit = configuration.recursiveIncludesOrderIsExplicit || settings.defaultRecursiveIncludesOrder !== ""; if (!configuration.compileCommands) { // compile_commands.json already specifies a compiler. compilerPath overrides the compile_commands.json compiler so // don't set a default when compileCommands is in use. @@ -1508,7 +1514,10 @@ export class CppProperties { if ((this.configurationJson.configurations[i].compilerPathIsExplicit !== undefined) || (this.configurationJson.configurations[i].cStandardIsExplicit !== undefined) || (this.configurationJson.configurations[i].cppStandardIsExplicit !== undefined) - || (this.configurationJson.configurations[i].intelliSenseModeIsExplicit !== undefined)) { + || (this.configurationJson.configurations[i].intelliSenseModeIsExplicit !== undefined) + || (this.configurationJson.configurations[i].recursiveIncludesReduceIsExplicit !== undefined) + || (this.configurationJson.configurations[i].recursiveIncludesPriorityIsExplicit !== undefined) + || (this.configurationJson.configurations[i].recursiveIncludesOrderIsExplicit !== undefined)) { dirty = true; break; } @@ -1529,6 +1538,9 @@ export class CppProperties { e.cStandardIsExplicit = e.cStandard !== undefined; e.cppStandardIsExplicit = e.cppStandard !== undefined; e.intelliSenseModeIsExplicit = e.intelliSenseMode !== undefined; + e.recursiveIncludesReduceIsExplicit = e.recursiveIncludes?.reduce !== undefined; + e.recursiveIncludesPriorityIsExplicit = e.recursiveIncludes?.priority !== undefined; + e.recursiveIncludesOrderIsExplicit = e.recursiveIncludes?.order !== undefined; }); } catch (errJS) { @@ -2296,6 +2308,9 @@ export class CppProperties { const savedCStandardIsExplicit: boolean[] = []; const savedCppStandardIsExplicit: boolean[] = []; const savedIntelliSenseModeIsExplicit: boolean[] = []; + const savedRecursiveIncludesReduceIsExplicit: boolean[] = []; + const savedRecursiveIncludesPriorityIsExplicit: boolean[] = []; + const savedRecursiveIncludesOrderIsExplicit: boolean[] = []; if (this.configurationJson) { this.configurationJson.configurations.forEach(e => { @@ -2315,6 +2330,18 @@ export class CppProperties { if (e.intelliSenseModeIsExplicit !== undefined) { delete e.intelliSenseModeIsExplicit; } + savedRecursiveIncludesReduceIsExplicit.push(!!e.recursiveIncludesReduceIsExplicit); + if (e.recursiveIncludesReduceIsExplicit !== undefined) { + delete e.recursiveIncludesReduceIsExplicit; + } + savedRecursiveIncludesPriorityIsExplicit.push(!!e.recursiveIncludesPriorityIsExplicit); + if (e.recursiveIncludesPriorityIsExplicit !== undefined) { + delete e.recursiveIncludesPriorityIsExplicit; + } + savedRecursiveIncludesOrderIsExplicit.push(!!e.recursiveIncludesOrderIsExplicit); + if (e.recursiveIncludesOrderIsExplicit !== undefined) { + delete e.recursiveIncludesOrderIsExplicit; + } }); } @@ -2329,6 +2356,9 @@ export class CppProperties { this.configurationJson.configurations[i].cStandardIsExplicit = savedCStandardIsExplicit[i]; this.configurationJson.configurations[i].cppStandardIsExplicit = savedCppStandardIsExplicit[i]; this.configurationJson.configurations[i].intelliSenseModeIsExplicit = savedIntelliSenseModeIsExplicit[i]; + this.configurationJson.configurations[i].recursiveIncludesReduceIsExplicit = savedRecursiveIncludesReduceIsExplicit[i]; + this.configurationJson.configurations[i].recursiveIncludesPriorityIsExplicit = savedRecursiveIncludesPriorityIsExplicit[i]; + this.configurationJson.configurations[i].recursiveIncludesOrderIsExplicit = savedRecursiveIncludesOrderIsExplicit[i]; } } } From 44d32aa807015e5fc161ed989187d2d8988913de Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Wed, 9 Apr 2025 16:33:49 -0700 Subject: [PATCH 12/33] Update changelog for 1.25.0. (#13479) * Update changelog for 1.25.0. --- Extension/CHANGELOG.md | 13 +++++++++++++ Extension/package.json | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index c3ce5e4d2..df74ab20a 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -1,5 +1,18 @@ # C/C++ for Visual Studio Code Changelog +## Version 1.25.0: April 10, 2025 +### Enhancement +* Improve the description of the `C_Cpp.copilotHover` setting. [PR #13461](https://github.com/microsoft/vscode-cpptools/pull/13461) + +### Bug Fixes +* Fix a crash during tag parsing (in `read_double`). [#13435](https://github.com/Microsoft/vscode-cpptools/issues/13435) +* Fix the handling of default file associations for certain file extensions. [PR #13455](https://github.com/microsoft/vscode-cpptools/pull/13455) +* Fix shell parsing of the arguments of a full command line in `compilerPath`. [PR #13468](https://github.com/microsoft/vscode-cpptools/pull/13468) +* Fix C and CUDA files being interpreted as C++ in `compile_commands.json`. [#13471](https://github.com/microsoft/vscode-cpptools/issues/13471) +* Stop automatically mapping a `.C` file to C++ if it's already set in `files.associations`. [PR #13476](https://github.com/microsoft/vscode-cpptools/pull/13476) +* Fix IntelliSense not updating after the language ID is changed, and prevent the language ID from being changed if it's set from `compile_commands.json` or a configuration provider. +* Fix a case where language server crash messages appear after 4 minutes. + ## Version 1.24.5: April 3, 2025 ### New Feature * Add support for Copilot descriptions in hover tooltips, controlled by the `C_Cpp.copilotHover` setting. [PR #13385](https://github.com/microsoft/vscode-cpptools/pull/13385) diff --git a/Extension/package.json b/Extension/package.json index a1e2633e1..91d1169e6 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -2,7 +2,7 @@ "name": "cpptools", "displayName": "C/C++", "description": "C/C++ IntelliSense, debugging, and code browsing.", - "version": "1.24.5-main", + "version": "1.25.0-main", "publisher": "ms-vscode", "icon": "LanguageCCPP_color_128x.png", "readme": "README.md", From 1709999bb74f5a758dd555e28c7813b390f17c1f Mon Sep 17 00:00:00 2001 From: Garrett Serack Date: Thu, 10 Apr 2025 14:17:29 -0700 Subject: [PATCH 13/33] Update lmTool.test.ts to account for interface change in vscode.d.ts (#13484) This works around a change to the vscode TextDocument interface --- Extension/test/scenarios/SingleRootProject/tests/lmTool.test.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Extension/test/scenarios/SingleRootProject/tests/lmTool.test.ts b/Extension/test/scenarios/SingleRootProject/tests/lmTool.test.ts index 3b45b308e..52d062a40 100644 --- a/Extension/test/scenarios/SingleRootProject/tests/lmTool.test.ts +++ b/Extension/test/scenarios/SingleRootProject/tests/lmTool.test.ts @@ -72,6 +72,7 @@ describe('CppConfigurationLanguageModelTool Tests', () => { this.isClosed = isClosed; this.eol = eol; this.lineCount = lineCount; + this.encoding = ''; } fileName: string; isUntitled: boolean; @@ -79,6 +80,7 @@ describe('CppConfigurationLanguageModelTool Tests', () => { version: number; isDirty: boolean; isClosed: boolean; + encoding: string; save(): Thenable { throw new Error('Method not implemented.'); } From a204903ff235ecb78e059f401ba1f97fb7ab5668 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson <49173979+Colengms@users.noreply.github.com> Date: Thu, 10 Apr 2025 15:54:56 -0700 Subject: [PATCH 14/33] Fix an error on startup if a file is open (#13487) --- Extension/src/LanguageServer/protocolFilter.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Extension/src/LanguageServer/protocolFilter.ts b/Extension/src/LanguageServer/protocolFilter.ts index 0a166df83..d6462072e 100644 --- a/Extension/src/LanguageServer/protocolFilter.ts +++ b/Extension/src/LanguageServer/protocolFilter.ts @@ -45,8 +45,10 @@ export function createProtocolFilter(): Middleware { // client.takeOwnership() will call client.TrackedDocuments.add() again, but that's ok. It's a Set. client.takeOwnership(document); void sendMessage(document); - const cppEditors: vscode.TextEditor[] = vscode.window.visibleTextEditors.filter(e => util.isCpp(e.document)); - client.onDidChangeVisibleTextEditors(cppEditors).catch(logAndReturn.undefined); + client.ready.then(() => { + const cppEditors: vscode.TextEditor[] = vscode.window.visibleTextEditors.filter(e => util.isCpp(e.document)); + client.onDidChangeVisibleTextEditors(cppEditors).catch(logAndReturn.undefined); + }).catch(logAndReturn.undefined); } } }, From d03af2d389493f323fc57f53336bad4f3da98722 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Fri, 11 Apr 2025 17:27:30 -0700 Subject: [PATCH 15/33] Fix SIG-?? matching the filter regex. (#13493) --- Extension/src/LanguageServer/extension.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index 53bb833c2..826c18814 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -1210,7 +1210,9 @@ async function handleCrashFileRead(crashDirectory: string, crashFile: string, cr signalType = lines[crashStackStartLine] + "\n"; } else { // The signal type may fail to be written. - signalType = "SIG-??\n"; // Intentionally different from SIG-? from cpptools. + // Intentionally different from SIGUNKNOWN from cpptools, + // and not SIG-? to avoid matching the regex in containsFilteredTelemetryData. + signalType = "SIGMISSING\n"; } data = telemetryHeader + signalType; let crashCallStack: string = ""; @@ -1329,11 +1331,6 @@ async function handleCrashFileRead(crashDirectory: string, crashFile: string, cr data += crashCallStack; - // TODO: Remove this in 1.25.1 after it's confirmed that it's not happening. - if (containsFilteredTelemetryData(data)) { - data = "unexpected call stack\n"; - } - logCppCrashTelemetry(data, addressData, crashLog); await util.deleteFile(path.resolve(crashDirectory, crashFile)).catch(logAndReturn.undefined); From 1b2285c7edac00785a53b1e5d7c9a5e966df71fe Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson <49173979+Colengms@users.noreply.github.com> Date: Mon, 14 Apr 2025 17:29:09 -0700 Subject: [PATCH 16/33] Fix recursive includes settings UI (#13498) --- Extension/ui/settings.html | 4 ++-- Extension/ui/settings.ts | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Extension/ui/settings.html b/Extension/ui/settings.html index a8deeb3c3..53029ed70 100644 --- a/Extension/ui/settings.html +++ b/Extension/ui/settings.html @@ -723,7 +723,7 @@
-
Recursive includes: priority
+
Recursive includes: reduce
Set to always to reduce the number of recursive include paths provided to IntelliSense to only those paths currently referenced by #include statements. This requires first parsing files to determine which files are included. Set to never to provide all recursive include paths to IntelliSense. Reducing the number of recursive include paths may improve IntelliSense performance when a very large number of recursive include paths are involved. Not reducing the number of recursive include paths can improve IntelliSense performance by avoiding the need to parse files to determine which include paths to provide.
@@ -752,7 +752,7 @@
-
Recursive includes: priority
+
Recursive includes: order
The order in which subdirectories under recursive include paths are searched.
diff --git a/Extension/ui/settings.ts b/Extension/ui/settings.ts index ce5a23ab2..4223ddf7e 100644 --- a/Extension/ui/settings.ts +++ b/Extension/ui/settings.ts @@ -285,35 +285,35 @@ class SettingsApp { // Basic settings (document.getElementById(elementId.configName)).value = config.name; - (document.getElementById(elementId.compilerPath)).value = config.compilerPath ? config.compilerPath : ""; + (document.getElementById(elementId.compilerPath)).value = config.compilerPath ?? ""; this.fixKnownCompilerSelection(); (document.getElementById(elementId.compilerArgs)).value = joinEntries(config.compilerArgs); - (document.getElementById(elementId.intelliSenseMode)).value = config.intelliSenseMode ? config.intelliSenseMode : "${default}"; + (document.getElementById(elementId.intelliSenseMode)).value = config.intelliSenseMode ?? "${default}"; (document.getElementById(elementId.includePath)).value = joinEntries(config.includePath); (document.getElementById(elementId.defines)).value = joinEntries(config.defines); (document.getElementById(elementId.cStandard)).value = config.cStandard; (document.getElementById(elementId.cppStandard)).value = config.cppStandard; // Advanced settings - (document.getElementById(elementId.windowsSdkVersion)).value = config.windowsSdkVersion ? config.windowsSdkVersion : ""; + (document.getElementById(elementId.windowsSdkVersion)).value = config.windowsSdkVersion ?? ""; (document.getElementById(elementId.macFrameworkPath)).value = joinEntries(config.macFrameworkPath); (document.getElementById(elementId.compileCommands)).value = joinEntries(config.compileCommands); (document.getElementById(elementId.mergeConfigurations)).checked = config.mergeConfigurations; - (document.getElementById(elementId.configurationProvider)).value = config.configurationProvider ? config.configurationProvider : ""; + (document.getElementById(elementId.configurationProvider)).value = config.configurationProvider ?? ""; (document.getElementById(elementId.forcedInclude)).value = joinEntries(config.forcedInclude); - (document.getElementById(elementId.dotConfig)).value = config.dotConfig ? config.dotConfig : ""; + (document.getElementById(elementId.dotConfig)).value = config.dotConfig ?? ""; if (config.recursiveIncludes) { - (document.getElementById(elementId.recursiveIncludesReduce)).value = config.recursiveIncludes.reduce; - (document.getElementById(elementId.recursiveIncludesPriority)).value = config.recursiveIncludes.priority; - (document.getElementById(elementId.recursiveIncludesOrder)).value = config.recursiveIncludes.order; + (document.getElementById(elementId.recursiveIncludesReduce)).value = config.recursiveIncludes.reduce ?? "${default}"; + (document.getElementById(elementId.recursiveIncludesPriority)).value = config.recursiveIncludes.priority ?? "${default}"; + (document.getElementById(elementId.recursiveIncludesOrder)).value = config.recursiveIncludes.order ?? "${default}"; } if (config.browse) { (document.getElementById(elementId.browsePath)).value = joinEntries(config.browse.path); (document.getElementById(elementId.limitSymbolsToIncludedHeaders)).checked = config.browse.limitSymbolsToIncludedHeaders && config.browse.limitSymbolsToIncludedHeaders; - (document.getElementById(elementId.databaseFilename)).value = config.browse.databaseFilename ? config.browse.databaseFilename : ""; + (document.getElementById(elementId.databaseFilename)).value = config.browse.databaseFilename ?? ""; } else { (document.getElementById(elementId.browsePath)).value = ""; (document.getElementById(elementId.limitSymbolsToIncludedHeaders)).checked = false; From 7522617143e04f120afc541a44441fe3538a8e90 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Wed, 16 Apr 2025 10:59:11 -0700 Subject: [PATCH 17/33] Fix the Debug button disappearing. (#13492) --- Extension/src/LanguageServer/client.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index b09c4c408..92107158a 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -1892,10 +1892,6 @@ export class DefaultClient implements Client { if (document.uri.scheme === "file") { const uri: string = document.uri.toString(); openFileVersions.set(uri, document.version); - void SessionState.buildAndDebugIsSourceFile.set(util.isCppOrCFile(document.uri)); - void SessionState.buildAndDebugIsFolderOpen.set(util.isFolderOpen(document.uri)); - } else { - void SessionState.buildAndDebugIsSourceFile.set(false); } } From ce67c4c146623b50ff22440cd7e09d424377c260 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Wed, 16 Apr 2025 12:21:06 -0700 Subject: [PATCH 18/33] Update loc strings for 1.25.1 (#13515) * Localization - Translated Strings * Update loc strings. Add more locked comments. --- Extension/i18n/chs/package.i18n.json | 2 +- .../i18n/chs/src/nativeStrings.i18n.json | 2 +- Extension/i18n/chs/ui/settings.html.i18n.json | 4 +-- Extension/i18n/cht/package.i18n.json | 2 +- .../i18n/cht/src/nativeStrings.i18n.json | 2 +- Extension/i18n/cht/ui/settings.html.i18n.json | 4 +-- Extension/i18n/csy/package.i18n.json | 2 +- .../i18n/csy/src/nativeStrings.i18n.json | 2 +- Extension/i18n/csy/ui/settings.html.i18n.json | 4 +-- Extension/i18n/deu/package.i18n.json | 2 +- .../i18n/deu/src/nativeStrings.i18n.json | 2 +- Extension/i18n/deu/ui/settings.html.i18n.json | 4 +-- Extension/i18n/esn/package.i18n.json | 2 +- .../i18n/esn/src/nativeStrings.i18n.json | 2 +- Extension/i18n/esn/ui/settings.html.i18n.json | 4 +-- Extension/i18n/fra/package.i18n.json | 8 ++--- .../i18n/fra/src/nativeStrings.i18n.json | 2 +- Extension/i18n/fra/ui/settings.html.i18n.json | 4 +-- Extension/i18n/ita/package.i18n.json | 2 +- .../i18n/ita/src/nativeStrings.i18n.json | 2 +- Extension/i18n/ita/ui/settings.html.i18n.json | 4 +-- Extension/i18n/jpn/package.i18n.json | 2 +- .../i18n/jpn/src/nativeStrings.i18n.json | 2 +- Extension/i18n/jpn/ui/settings.html.i18n.json | 4 +-- Extension/i18n/kor/package.i18n.json | 4 +-- .../i18n/kor/src/nativeStrings.i18n.json | 2 +- Extension/i18n/kor/ui/settings.html.i18n.json | 4 +-- Extension/i18n/plk/package.i18n.json | 2 +- .../i18n/plk/src/nativeStrings.i18n.json | 2 +- Extension/i18n/plk/ui/settings.html.i18n.json | 4 +-- Extension/i18n/ptb/package.i18n.json | 2 +- Extension/i18n/ptb/ui/settings.html.i18n.json | 4 +-- Extension/i18n/rus/package.i18n.json | 2 +- .../i18n/rus/src/nativeStrings.i18n.json | 2 +- Extension/i18n/rus/ui/settings.html.i18n.json | 4 +-- Extension/i18n/trk/package.i18n.json | 2 +- .../i18n/trk/src/nativeStrings.i18n.json | 2 +- Extension/i18n/trk/ui/settings.html.i18n.json | 4 +-- Extension/package.nls.json | 29 ++++++++++++++----- Extension/src/nativeStrings.json | 5 +++- 40 files changed, 80 insertions(+), 64 deletions(-) diff --git a/Extension/i18n/chs/package.i18n.json b/Extension/i18n/chs/package.i18n.json index f3e18dbd5..61cad77d5 100644 --- a/Extension/i18n/chs/package.i18n.json +++ b/Extension/i18n/chs/package.i18n.json @@ -254,7 +254,7 @@ "c_cpp.configuration.hover.description": "如果禁用,则语言服务器不再提供悬停详细信息。", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "为 [vcpkg 依存关系管理器](https://aka.ms/vcpkg/) 启用集成服务。", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "当来自 `nan` 和 `node-addon-api` 的包含路径为依赖项时,请将其添加。", - "c_cpp.configuration.copilotHover.markdownDescription": "如果 `disabled`,则悬停时不会显示任何 Copilot 信息。", + "c_cpp.configuration.copilotHover.markdownDescription": "如果为 `disabled`,则悬停时不会显示“生成 Copilot 摘要”选项。", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "如果为 `true`,则“重命名符号”将需要有效的 C/C++ 标识符。", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "如果为 `true`,则自动完成将在函数调用后自动添加 `(` ,在这种情况下,也可以添加 `)` ,具体取决于 `#editor.autoClosingBrackets#` 设置的值。", "c_cpp.configuration.filesExclude.markdownDescription": "为排除文件夹(以及文件 - 如果更改了 `#C_Cpp.exclusionPolicy#`)配置 glob 模式。这些特定于 C/C++ 扩展,并且是 `#files.exclude#` 的补充,但与 `#files.exclude#` 不同,它们也适用于当前工作区文件夹之外的路径,并且不会从资源管理器视图中删除。详细了解 [glob 模式](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options)。", diff --git a/Extension/i18n/chs/src/nativeStrings.i18n.json b/Extension/i18n/chs/src/nativeStrings.i18n.json index 1b8845e6c..4b591672c 100644 --- a/Extension/i18n/chs/src/nativeStrings.i18n.json +++ b/Extension/i18n/chs/src/nativeStrings.i18n.json @@ -319,5 +319,5 @@ "file_not_found_in_path2": "在 compile_commands.json 文件中找不到 \"{0}\"。此文件将改用文件夹“{1}”中的 c_cpp_properties.json 中包含的 \"includePath\"。", "copilot_hover_link": "生成 Copilot 摘要", "browse_path_not_found": "无法为不存在的文件夹 {0} 中的文件编制索引", - "license_terms": "C/C++ 扩展只能与 Microsoft Visual Studio、Visual Studio for Mac、Visual Studio Code、Azure DevOps、Team Foundation Server 以及后续的 Microsoft 产品和服务一起使用,以开发和测试您的应用程序。" + "license_terms": "C/C++ 扩展只能用于 Microsoft Visual Studio、Visual Studio for Mac、Visual Studio Code、Azure DevOps、Team Foundation Server 以及后续的 Microsoft 产品和服务,以开发和测试您的应用程序。" } \ No newline at end of file diff --git a/Extension/i18n/chs/ui/settings.html.i18n.json b/Extension/i18n/chs/ui/settings.html.i18n.json index 60447dbad..f5fbbfbba 100644 --- a/Extension/i18n/chs/ui/settings.html.i18n.json +++ b/Extension/i18n/chs/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "如果为 {0} (或已勾选),则标记分析器将仅分析在 {1} 中由源文件直接或间接包含的代码文件。如果为 {2} (或未选中),标记分析器将分析在 {3} 列表内指定路径中找到的所有代码文件。", "database.filename": "浏览: 数据库文件名", "database.filename.description": "所生成的符号数据库的路径。这指示扩展将标记分析器的符号数据库保存在工作区默认存储位置以外的其他位置。如果指定了相对路径,则它将相对于工作区的默认存储位置(而不是工作区文件夹本身)。{0} 变量可用于指定相对于工作区文件夹的路径(例如 {1})。", - "recursiveIncludes.reduce": "递归包括: 优先级", + "recursiveIncludes.reduce": "Recursive includes: reduce", "recursiveIncludes.reduce.description": "设置为 {0} 可将提供给 IntelliSense 的递归包含路径数减少到仅限当前由 #include 语句引用的路径。这需要首先分析文件以确定包含哪些文件。设置为 {1} 可将所有递归包含路径提供给 IntelliSense。当涉及到大量递归包含路径时,减少递归包含路径的数量可能会提高 IntelliSense 性能。如果不减少递归包含路径的数量,则可以通过避免需要分析文件以确定要提供的包含路径来提高 IntelliSense 性能。", "recursiveIncludes.priority": "递归包括: 优先级", "recursiveIncludes.priority.description": "递归包含路径的优先级。如果设置为 {0},则将在系统包含路径之前搜索递归包含路径。如果设置为 {1},则将在系统包含路径之后搜索递归包含路径。", - "recursiveIncludes.order": "递归包括: 优先级", + "recursiveIncludes.order": "Recursive includes: order", "recursiveIncludes.order.description": "搜索递归包含路径下子目录的顺序。" } \ No newline at end of file diff --git a/Extension/i18n/cht/package.i18n.json b/Extension/i18n/cht/package.i18n.json index e0f4d9198..f212034ec 100644 --- a/Extension/i18n/cht/package.i18n.json +++ b/Extension/i18n/cht/package.i18n.json @@ -254,7 +254,7 @@ "c_cpp.configuration.hover.description": "如果停用,語言伺服器將不再提供暫留詳細資料。", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "啟用 [vcpkg 相依性管理員](https://aka.ms/vcpkg/) 的整合服務。", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "當 `nan` 和 `node-addon-api` 為相依性時,從中新增 include 路徑。", - "c_cpp.configuration.copilotHover.markdownDescription": "如果`disabled`,則暫留中將不會顯示 Copilot 資訊。", + "c_cpp.configuration.copilotHover.markdownDescription": "如果 `disabled`,暫留時將不會顯示 [產生 Copilot 摘要] 選項。", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "若為 `true`,則「重新命名符號」需要有效的 C/C++ 識別碼。", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "若為 `true`,自動完成將會在函式呼叫之後自動新增 `(`,在這種情況下也可能會新增 `)`,取決於 `editor.autoClosingBrackets` 設定的值。", "c_cpp.configuration.filesExclude.markdownDescription": "設定 Glob 模式以排除資料夾 (若變更 `#C_Cpp.exclusionPolicy#`,則也會排除檔案)。這些模式為 C/C++ 延伸模組所特有,且是對 `#files.exclude#` 的外加,但與 `#files.exclude#` 不同的是,它們也適用於目前工作區資料夾以外的路徑,並且不會將其從總管檢視中移除。深入了解 [Glob 模式](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options)。", diff --git a/Extension/i18n/cht/src/nativeStrings.i18n.json b/Extension/i18n/cht/src/nativeStrings.i18n.json index a7e58aa98..2ce9c171f 100644 --- a/Extension/i18n/cht/src/nativeStrings.i18n.json +++ b/Extension/i18n/cht/src/nativeStrings.i18n.json @@ -319,5 +319,5 @@ "file_not_found_in_path2": "在 compile_commands.json 檔案中找不到 \"{0}\"。將對此檔案改用資料夾 '{1}' 中 c_cpp_properties.json 的 'includePath'。", "copilot_hover_link": "產生 Copilot 摘要", "browse_path_not_found": "無法為以下不存在的資料夾中的檔案編製索引:{0}", - "license_terms": "C/C++ 擴展只能與 Microsoft Visual Studio、Visual Studio for Mac、Visual Studio Code、Azure DevOps、Team Foundation Server 以及後續的 Microsoft 產品和服務一起使用,以開發和測試您的應用程式。" + "license_terms": "C/C++ 擴充功能僅能與 Microsoft Visual Studio、Visual Studio for Mac、Visual Studio Code、Azure DevOps、Team Foundation Server 及後續的 Microsoft 產品與服務搭配使用,以開發和測試您的應用程式。" } \ No newline at end of file diff --git a/Extension/i18n/cht/ui/settings.html.i18n.json b/Extension/i18n/cht/ui/settings.html.i18n.json index da88a578d..f5b50e708 100644 --- a/Extension/i18n/cht/ui/settings.html.i18n.json +++ b/Extension/i18n/cht/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "若為 {0} (或已選取),標籤剖析器只會剖析 {1} 中原始程式檔直接或間接包含的程式碼檔。若為 {2} (或未選取),標籤剖析器會剖析在 {3} 清單中的指定路徑找到的所有程式碼檔。", "database.filename": "瀏覽: 資料庫檔案名稱", "database.filename.description": "產生符號資料庫路徑。這會指示延伸模組將標籤剖析器的符號資料庫儲存在工作區預設儲存位置以外的某處。如果指定了相對路徑,就會是相對於工作區預設儲存位置 (非工作區資料夾本身) 的路徑。{0} 變數可用於指定相對於工作區資料夾的路徑 (例如 {1})。", - "recursiveIncludes.reduce": "遞迴包含: 優先順序", + "recursiveIncludes.reduce": "Recursive includes: reduce", "recursiveIncludes.reduce.description": "設定為 {0},可使 IntelliSense 僅提供目前由 #include 陳述式參考的遞迴包含路徑。這需要先剖析檔案,以確定包含哪些檔案。設定為 {1} 以將所有遞迴包含路徑提供給 IntelliSense。當涉及非常大量的遞迴包含路徑時,減少遞迴包含路徑數目可能會改善 IntelliSense 的效能。不減少遞迴包含路徑的數量,可避免需要剖析檔案以決定要提供哪些包含路徑,從而 IntelliSense 效能。", "recursiveIncludes.priority": "遞迴包含: 優先順序", "recursiveIncludes.priority.description": "遞迴包含路徑的優先順序。如果設定為 {0},則會在系統包含路徑之前搜尋遞迴包含路徑。如果設定為 {1},則會在系統包含路徑之後搜尋遞迴包含路徑。", - "recursiveIncludes.order": "遞迴包含: 優先順序", + "recursiveIncludes.order": "Recursive includes: order", "recursiveIncludes.order.description": "搜尋遞迴包含路徑下子目錄的順序。" } \ No newline at end of file diff --git a/Extension/i18n/csy/package.i18n.json b/Extension/i18n/csy/package.i18n.json index c15422afd..6176c3c95 100644 --- a/Extension/i18n/csy/package.i18n.json +++ b/Extension/i18n/csy/package.i18n.json @@ -254,7 +254,7 @@ "c_cpp.configuration.hover.description": "Pokud je tato možnost zakázaná, podrobnosti o najetí myší už nebude poskytovat jazykový server.", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "Povolte integrační služby pro [správce závislostí vcpkg](https://aka.ms/vcpkg/).", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "Pokud existují závislosti, přidejte cesty pro zahrnuté soubory z `nan` a `node-addon-api`.", - "c_cpp.configuration.copilotHover.markdownDescription": "Pokud je tato možnost `disabled`, v hoveru se nezobrazí žádné informace Copilot.", + "c_cpp.configuration.copilotHover.markdownDescription": "Pokud je zakázáno (`disabled`), při najetí myší se nezobrazí možnost Vygenerovat souhrn Copilot.", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Když se tato hodnota nastaví na `true`, operace Přejmenovat symbol bude vyžadovat platný identifikátor C/C++.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "Pokud je hodnota `true`, automatické dokončování automaticky přidá za volání funkcí znak `(`. V takovém případě se může přidat i znak `)`, což záleží na hodnotě nastavení `#editor.autoClosingBrackets#`.", "c_cpp.configuration.filesExclude.markdownDescription": "Nakonfigurujte vzory glob pro vyloučení složek (a souborů, pokud se změní `#C_Cpp.exclusionPolicy#`). Ty jsou specifické pro rozšíření C/C++ a doplňují `#files.exclude#`, ale na rozdíl od `#files.exclude#` platí také pro cesty mimo aktuální složku pracovního prostoru a neodebírají se ze zobrazení Průzkumníka. Přečtěte si další informace o [vzorech glob](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", diff --git a/Extension/i18n/csy/src/nativeStrings.i18n.json b/Extension/i18n/csy/src/nativeStrings.i18n.json index ed7b38f41..c09c35c9f 100644 --- a/Extension/i18n/csy/src/nativeStrings.i18n.json +++ b/Extension/i18n/csy/src/nativeStrings.i18n.json @@ -319,5 +319,5 @@ "file_not_found_in_path2": "V souborech compile_commands.json se nepovedlo najít {0}. Pro tento soubor se místo toho použije includePath ze souboru c_cpp_properties.json ve složce {1}.", "copilot_hover_link": "Vygenerovat souhrn Copilotu", "browse_path_not_found": "Nelze indexovat soubory z neexistující složky: {0}", - "license_terms": "Rozšíření C/C++ lze použít pouze s produkty a službami Microsoft Visual Studio, Visual Studio for Mac, Visual Studio Code, Azure DevOps, Team Foundation Server a nástupnickými produkty a službami společnosti Microsoft k vývoji a testování vašich aplikací." + "license_terms": "Rozšíření C/C++ lze používat pouze s těmito produkty a službami pro vývoj a testování aplikací a nástupci těchto produktů a služeb od Microsoftu: Microsoft Visual Studio, Visual Studio pro Mac, Visual Studio Code, Azure DevOps a Team Foundation Server." } \ No newline at end of file diff --git a/Extension/i18n/csy/ui/settings.html.i18n.json b/Extension/i18n/csy/ui/settings.html.i18n.json index 4724e9840..616896bec 100644 --- a/Extension/i18n/csy/ui/settings.html.i18n.json +++ b/Extension/i18n/csy/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "Když se nastaví na {0} (nebo zaškrtne), analyzátor značek bude parsovat jen soubory kódů, které přímo nebo nepřímo zahrnul zdrojový soubor v {1}. Když se nastaví na {2} (nebo nezaškrtne), analyzátor značek bude parsovat všechny soubory kódů nalezené na cestách zadaných v seznamu {3}.", "database.filename": "Procházení: název souboru databáze", "database.filename.description": "Cesta k vygenerované databázi symbolů. Na základě této možnosti bude rozšíření ukládat databázi symbolů analyzátoru značek někam jinam než do výchozího umístění úložiště pracovního prostoru. Pokud se zadá relativní cesta, bude relativní vzhledem k výchozímu umístění úložiště pracovního prostoru, nikoli k samotné složce pracovního prostoru. Pokud chcete zadat cestu relativní ke složce pracovního prostoru (třeba {1}), dá se použít proměnná {0}.", - "recursiveIncludes.reduce": "Rekurzivní soubory k zahrnutí: priorita", + "recursiveIncludes.reduce": "Recursive includes: reduce", "recursiveIncludes.reduce.description": "Nastavením na {0} se počet cest rekurzivních souborů k zahrnutí poskytovaných funkci IntelliSense vždy sníží pouze na ty cesty, na které aktuálně odkazují příkazy #include. K tomu je potřeba nejdříve analyzovat soubory a zjistit, které soubory jsou zahrnuty. Nastavením na {1} poskytnete funkci IntelliSense všechny cesty rekurzivních souborů k zahrnutí. Snížení počtu cest rekurzivních souborů k zahrnutí může zlepšit výkon funkce IntelliSense, pokud se jedná o velmi velký počet cest souborů k zahrnutí. Nesnižování počtu cest rekurzivních souborů k zahrnutí může zlepšit výkon funkce IntelliSense, protože se vyhnete nutnosti analyzovat soubory a určit, které cesty souborů k zahrnutí je třeba poskytnout.", "recursiveIncludes.priority": "Rekurzivní soubory k zahrnutí: priorita", "recursiveIncludes.priority.description": "Priorita cest rekurzivních souborů zahrnutí Pokud je nastavená hodnota {0}, budou se cesty rekurzivních souborů k zahrnutí prohledávat před cestami systémových souborů k zahrnutí. Pokud je nastavená hodnota {1}, budou se cesty rekurzivních souborů k zahrnutí prohledávat po cestách systémových souborů k zahrnutí.", - "recursiveIncludes.order": "Rekurzivní soubory k zahrnutí: priorita", + "recursiveIncludes.order": "Recursive includes: order", "recursiveIncludes.order.description": "Pořadí, ve kterém se prohledávají podadresáře v cestách rekurzivních souborů k zahrnutí" } \ No newline at end of file diff --git a/Extension/i18n/deu/package.i18n.json b/Extension/i18n/deu/package.i18n.json index 7f986265a..e6cab6600 100644 --- a/Extension/i18n/deu/package.i18n.json +++ b/Extension/i18n/deu/package.i18n.json @@ -254,7 +254,7 @@ "c_cpp.configuration.hover.description": "Wenn diese Option deaktiviert ist, werden die Hoverdetails nicht mehr vom Sprachserver bereitgestellt.", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "Hiermit aktivieren Sie Integrationsdienste für den [vcpkg-Abhängigkeitsmanager](https://aka.ms/vcpkg/).", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "Fügen Sie Includepfade aus `nan` und `node-addon-api` hinzu, wenn es sich um Abhängigkeiten handelt.", - "c_cpp.configuration.copilotHover.markdownDescription": "Wenn `disabled` festgelegt ist, werden beim Daraufzeigen mit der Maus keine Copilot-Informationen angezeigt.", + "c_cpp.configuration.copilotHover.markdownDescription": "Wenn `disabled`, wird beim darauf zeigen keine Option „Copilot-Zusammenfassung generieren“ angezeigt.", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Wenn `true` festgelegt ist, erfordert 'Symbol umbenennen' einen gültigen C/C++-Bezeichner.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "Wenn `true` festgelegt ist, fügt AutoVervollständigen automatisch `(` nach Funktionsaufrufen hinzu. In diesem Fall kann auch `)` in Abhängigkeit vom Wert der Einstellung `#editor.autoClosingBrackets#` hinzugefügt werden.", "c_cpp.configuration.filesExclude.markdownDescription": "Konfigurieren Sie Globmuster zum Ausschließen von Ordnern (und Dateien, wenn `#C_Cpp.exclusionPolicy#` geändert wird). Diese sind spezifisch für die C/C++-Erweiterung und gelten zusätzlich zu `#files.exclude#`, aber im Gegensatz zu `#files.exclude#` gelten sie auch für Pfade außerhalb des aktuellen Arbeitsbereichsordners und werden nicht aus der Explorer-Ansicht entfernt. Weitere Informationen zu [Globmustern](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", diff --git a/Extension/i18n/deu/src/nativeStrings.i18n.json b/Extension/i18n/deu/src/nativeStrings.i18n.json index 296d0abc3..8240c0e3c 100644 --- a/Extension/i18n/deu/src/nativeStrings.i18n.json +++ b/Extension/i18n/deu/src/nativeStrings.i18n.json @@ -319,5 +319,5 @@ "file_not_found_in_path2": "„{0}“ wurde in compile_commands.json-Dateien nicht gefunden. Stattdessen wird „includePath“ aus „c_cpp_properties.json“ im Ordner „{1}“ für diese Datei verwendet.", "copilot_hover_link": "Copilot-Zusammenfassung generieren", "browse_path_not_found": "Dateien aus einem nicht vorhandenen Ordner können nicht indiziert werden: {0}", - "license_terms": "Die C/C++-Erweiterung kann nur mit Microsoft Visual Studio, Visual Studio für Mac, Visual Studio Code, Azure DevOps, Team Foundation Server und Nachfolgeprodukten und -diensten von Microsoft verwendet werden, um Ihre Anwendungen zu entwickeln und zu testen." + "license_terms": "Die C/C++-Erweiterung darf nur mit Microsoft Visual Studio, Visual Studio für Mac, Visual Studio Code, Azure DevOps, Team Foundation Server und nachfolgenden Produkten und Diensten von Microsoft verwendet werden, um Ihre Anwendungen zu entwickeln und zu testen." } \ No newline at end of file diff --git a/Extension/i18n/deu/ui/settings.html.i18n.json b/Extension/i18n/deu/ui/settings.html.i18n.json index 8ee8dedd1..948077bfe 100644 --- a/Extension/i18n/deu/ui/settings.html.i18n.json +++ b/Extension/i18n/deu/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "Wenn {0} (oder aktiviert) ist, analysiert der Tagparser nur Codedateien, die direkt oder indirekt von einer Quelldatei in {1} eingeschlossen wurden. Wenn {2} (oder nicht aktiviert) ist, analysiert der Tagparser alle Codedateien, die in den in der {3} Liste angegebenen Pfaden gefunden wurden.", "database.filename": "Durchsuchen: Datenbankdateiname", "database.filename.description": "Der Pfad zur generierten Symboldatenbank. Hiermit wird die Erweiterung angewiesen, die Symboldatenbank des Tagparsers an einem anderen Speicherort als dem Standardspeicherort des Arbeitsbereichs zu speichern. Bei Angabe eines relativen Pfads wird dieser relativ zum Standardspeicherort des Arbeitsbereichs und nicht zum Arbeitsbereichsordner selbst erstellt. Die Variable „{0}“ kann verwendet werden, um einen Pfad relativ zum Arbeitsbereichsordner (Beispiel: {1}) anzugeben.", - "recursiveIncludes.reduce": "„Rekursiv“ umfasst: Priorität", + "recursiveIncludes.reduce": "Recursive includes: reduce", "recursiveIncludes.reduce.description": "Legen Sie diese Option auf „{0}“ fest, um die Anzahl der rekursiven Includepfade, die für IntelliSense bereitgestellt werden, auf die Pfade zu verringern, auf die derzeit von #include-Anweisungen verwiesen wird. Dazu müssen zuerst die Dateien analysiert werden, um zu bestimmen, welche Dateien eingeschlossen werden. Legen Sie diese Option auf „{1}“ fest, um alle rekursiven Includepfade für IntelliSense bereitzustellen. Wenn Sie die Anzahl rekursiver Includepfade verringern, kann sich die Leistung von IntelliSense verbessern, wenn eine sehr große Anzahl rekursiver Includepfade betroffen ist. Wenn Sie die Anzahl rekursiver Includepfade nicht verringern, kann die Leistung von IntelliSense verbessert werden, da die Dateien nicht analysiert werden müssen, um zu bestimmen, welche Includepfade bereitgestellt werden sollen.", "recursiveIncludes.priority": "„Rekursiv“ umfasst: Priorität", "recursiveIncludes.priority.description": "Die Priorität rekursiver Includepfade. Wenn sie auf „{0}“ festgelegt ist, werden die rekursiven Includepfade vor den systemseitigen Includepfaden durchsucht. Wenn sie auf „{1}“ festgelegt ist, werden die rekursiven Includepfade nach den systemseitigen Includepfaden durchsucht.", - "recursiveIncludes.order": "„Rekursiv“ umfasst: Priorität", + "recursiveIncludes.order": "Recursive includes: order", "recursiveIncludes.order.description": "Die Reihenfolge, in der Unterverzeichnisse unter rekursiven Includepfaden durchsucht werden." } \ No newline at end of file diff --git a/Extension/i18n/esn/package.i18n.json b/Extension/i18n/esn/package.i18n.json index 1ce0dce30..fbebe20c1 100644 --- a/Extension/i18n/esn/package.i18n.json +++ b/Extension/i18n/esn/package.i18n.json @@ -254,7 +254,7 @@ "c_cpp.configuration.hover.description": "Si se deshabilita, el servidor de lenguaje ya no proporciona detalles al mantener el puntero.", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "Habilita los servicios de integración para el [administrador de dependencias de vcpkgs](https://aka.ms/vcpkg/).", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "Agrega rutas de acceso de inclusión de `nan` y `node-addon-api` cuando sean dependencias.", - "c_cpp.configuration.copilotHover.markdownDescription": "Si está `disabled`, no aparecerá información de Copilot al mantener el puntero.", + "c_cpp.configuration.copilotHover.markdownDescription": "Si se establece en `disabled`, no aparecerá la opción 'Generar resumen de Copilot' al mantener el puntero por encima.", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Si es `true`, 'Cambiar nombre de símbolo' requerirá un identificador de C/C++ válido.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "Si es `true`, la opción de autocompletar agregará `(` de forma automática después de las llamadas a funciones, en cuyo caso puede que también se agregue `)`, en función del valor de la configuración de `editor.autoClosingBrackets`.", "c_cpp.configuration.filesExclude.markdownDescription": "Configure patrones globales para excluir carpetas (y archivos si se cambia `#C_Cpp.exclusionPolicy#`). Son específicos de la extensión de C/C++ y se agregan a `#files.exclude#`, pero a diferencia de `#files.exclude#`, también se aplican a las rutas de acceso fuera de la carpeta del área de trabajo actual y no se quitan de la vista del Explorador. Obtenga información sobre [patrones globales](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", diff --git a/Extension/i18n/esn/src/nativeStrings.i18n.json b/Extension/i18n/esn/src/nativeStrings.i18n.json index ea67e74e4..b66ee6a34 100644 --- a/Extension/i18n/esn/src/nativeStrings.i18n.json +++ b/Extension/i18n/esn/src/nativeStrings.i18n.json @@ -319,5 +319,5 @@ "file_not_found_in_path2": "\"{0}\" no se encuentra en compile_commands.json archivos. ''includePath'' de c_cpp_properties.json de la carpeta ''{1}'' se usará en su lugar para este archivo.", "copilot_hover_link": "Generar resumen de Copilot", "browse_path_not_found": "No se pueden indexar archivos de una carpeta inexistente: {0}", - "license_terms": "La extensión C/C++ solo se puede usar con Microsoft Visual Studio, Visual Studio para Mac, Visual Studio Code, Azure DevOps, Team Foundation Server y los productos y servicios de Microsoft sucesores para desarrollar y probar las aplicaciones." + "license_terms": "La extensión de C/C++ solo se puede utilizar con Microsoft Visual Studio, Visual Studio para Mac, Visual Studio Code, Azure DevOps, Team Foundation Server y productos y servicios sucesores de Microsoft para desarrollar y probar sus aplicaciones." } \ No newline at end of file diff --git a/Extension/i18n/esn/ui/settings.html.i18n.json b/Extension/i18n/esn/ui/settings.html.i18n.json index 9965e69b4..6e8c69516 100644 --- a/Extension/i18n/esn/ui/settings.html.i18n.json +++ b/Extension/i18n/esn/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "Cuando {0} (o activado), el analizador de etiquetas solo analizará los archivos de código que un archivo de código fuente haya incluido directa o indirectamente en {1}. Cuando {2} (o no está activado), el analizador de etiquetas analizará todos los archivos de código que se encuentran en las rutas de acceso especificadas en la lista de {3} .", "database.filename": "Examinar: nombre del archivo de base de datos", "database.filename.description": "La ruta de acceso a la base de datos de símbolos generada. Esto indica a la extensión que guarde la base de datos de símbolos del analizador de etiquetas en una ubicación distinta de la ubicación de almacenamiento predeterminada del área de trabajo. Si se especifica una ruta de acceso relativa, será relativa a la ubicación de almacenamiento predeterminada del área de trabajo, no a la carpeta del área de trabajo en sí. La variable {0} se puede usar para especificar una ruta de acceso relativa a la carpeta del área de trabajo (por ejemplo, {1}).", - "recursiveIncludes.reduce": "Inclusión recursiva: prioridad", + "recursiveIncludes.reduce": "Recursive includes: reduce", "recursiveIncludes.reduce.description": "Establézcalo en {0} para reducir siempre el número de rutas de inclusión recursivas proporcionadas a IntelliSense solo a aquellas rutas a las que hacen referencia actualmente las instrucciones #include. Esto requiere primero analizar los archivos para determinar qué archivos se incluyen. Establézcalo en {1} para proporcionar todas las rutas de inclusión recursivas a IntelliSense. Reducir el número de rutas de inclusiones recursivas puede mejorar el rendimiento de IntelliSense cuando hay un gran número de rutas de inclusión recursivas involucradas. No reducir el número de rutas de inclusión recursivas puede mejorar el rendimiento de IntelliSense al evitar la necesidad de analizar archivos para determinar qué rutas de inclusión proporcionar.", "recursiveIncludes.priority": "Inclusión recursiva: prioridad", "recursiveIncludes.priority.description": "La prioridad de las rutas de acceso de inclusión recursivas. Si se establece en {0}, se buscarán las rutas de inclusión recursivas antes que las rutas de inclusión del sistema. Si se establece en {1}, se buscarán las rutas de inclusión recursivas después de las rutas de inclusión del sistema.", - "recursiveIncludes.order": "Inclusión recursiva: prioridad", + "recursiveIncludes.order": "Recursive includes: order", "recursiveIncludes.order.description": "El orden en el que se buscan los subdirectorios en las rutas de acceso de inclusión recursivas." } \ No newline at end of file diff --git a/Extension/i18n/fra/package.i18n.json b/Extension/i18n/fra/package.i18n.json index 76a88e498..bf42a0beb 100644 --- a/Extension/i18n/fra/package.i18n.json +++ b/Extension/i18n/fra/package.i18n.json @@ -183,7 +183,7 @@ "c_cpp.configuration.intelliSenseEngine.default.description": "Fournit des résultats contextuels via un processus IntelliSense distinct.", "c_cpp.configuration.intelliSenseEngine.tagParser.description": "Fournit des résultats « flous » qui ne sont pas compatibles avec le contexte.", "c_cpp.configuration.intelliSenseEngine.disabled.description": "Désactive les fonctionnalités du service de langage C/C++.", - "c_cpp.configuration.autocomplete.markdownDescription": "Contrôle le fournisseur de la saisie semi-automatique. Si `disabled` et que vous souhaitez une complétion basée sur les mots, vous devrez également définir `\"[cpp]\": {\"editor.wordBasedSuggestions\": }` (et de même pour `c` et `cuda-cpp` langues).", + "c_cpp.configuration.autocomplete.markdownDescription": "Contrôle le fournisseur de la saisie semi-automatique. Si défini sur `disabled` et que vous souhaitez la saisie semi-automatique basée sur les mots, vous devrez également définir `\"[cpp]\": {\"editor.wordBasedSuggestions\": }` (et de même pour `c` et `cuda-cpp` langues).", "c_cpp.configuration.autocomplete.default.description": "Utilise le moteur IntelliSense actif.", "c_cpp.configuration.autocomplete.disabled.description": "Utilise la saisie semi-automatique basée sur le mot fournie par Visual Studio Code.", "c_cpp.configuration.errorSquiggles.description": "Contrôle si les erreurs de compilation suspectes détectées par le moteur IntelliSense seront rapportées à l'éditeur. Il contrôle également si les avertissements d'analyse de code sont signalés si les includes ne peuvent pas être trouvés. Ce paramètre est ignoré par le moteur Tag Parser.", @@ -254,7 +254,7 @@ "c_cpp.configuration.hover.description": "Si cette option est désactivée, les détails du pointage ne sont plus fournis par le serveur de langage.", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "Activez les services d'intégration pour le [gestionnaire de dépendances vcpkg](https://aka.ms/vcpkg/).", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "Ajouter les chemins d'inclusion de `nan` et `node-addon-api` quand ils sont des dépendances.", - "c_cpp.configuration.copilotHover.markdownDescription": "Si l’option est `disabled`, aucune information Copilot n’apparaîtra dans Hover.", + "c_cpp.configuration.copilotHover.markdownDescription": "Si `disabled`, aucune option « Générer un résumé Copilot » n’apparaît lors du pointage.", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Si `true`, 'Renommer le symbole' exigera un identifiant C/C++ valide.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "Si la valeur est `true`, l'autocomplétion ajoute automatiquement `(` après les appels de fonction. Dans ce cas `)` peut également être ajouté, en fonction de la valeur du paramètre `#editor.autoClosingBrackets#`.", "c_cpp.configuration.filesExclude.markdownDescription": "Configurer les modèles globaux pour exclure les dossiers (et les fichiers si `#C_Cpp.exclusionPolicy#` est modifié). Ils sont spécifiques à l’extension C/C++ et s’ajoutent à `#files.exclude#`, mais contrairement à `#files.exclude#`, ils s’appliquent également aux chemins en dehors du dossier de l’espace de travail actuel et ne sont pas supprimés de la vue de l’explorateur. En savoir plus sur les [motifs globaux](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", @@ -303,7 +303,7 @@ "c_cpp.debuggers.cppdbg.svdPath.description": "Chemin d’accès complet au fichier SVD d’un appareil incorporé", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "Fichier .natvis à utiliser pendant le débogage de ce processus.", "c_cpp.debuggers.showDisplayString.description": "Quand un visualizerFile est spécifié, showDisplayString active la chaîne d'affichage. Si vous activez cette option, les performances peuvent être ralenties pendant le débogage.", - "c_cpp.debuggers.environment.description": "Variables d’environnement à ajouter à l’environnement du programme. Exemple : [ { \"name\": \"config\", \"value\": \"Debug\" } ], et non [ { \"config\": \"Debug\" } ].", + "c_cpp.debuggers.environment.description": "Variables d’environnement à ajouter à l’environnement du programme. Exemple : [ { \"name\": \"config\", \"value\": \"Debug\" } ], et non [ { \"config\": \"Debug\" } ].", "c_cpp.debuggers.envFile.description": "Chemin absolu d'un fichier contenant des définitions de variable d'environnement. Ce fichier a des paires clé-valeur séparées par un signe égal par ligne. Par exemple, CLÉ=VALEUR.", "c_cpp.debuggers.additionalSOLibSearchPath.description": "Liste de répertoires séparés par des points-virgules à utiliser pour rechercher des fichiers .so. Exemple : \"c:\\dir1;c:\\dir2\".", "c_cpp.debuggers.MIMode.description": "Indique le débogueur de console auquel MIDebugEngine se connecte. Les valeurs autorisées sont \"gdb\" \"lldb\".", @@ -427,7 +427,7 @@ "c_cpp.walkthrough.compilers.found.description": "L’extension C++ fonctionne avec un compilateur C++. Sélectionnez-en un parmi ceux déjà présents sur votre ordinateur en cliquant sur le bouton ci-dessous.\n[Sélectionner mon compilateur par défaut](command:C_Cpp.SelectIntelliSenseConfiguration?%22walkthrough%22)", "c_cpp.walkthrough.compilers.found.altText": "Image montrant la sélection d’une sélection rapide de compilateur par défaut et la liste des compilateurs trouvés sur l’ordinateur des utilisateurs, dont l’un est sélectionné.", "c_cpp.walkthrough.create.cpp.file.title": "Créer un fichier C++", - "c_cpp.walkthrough.create.cpp.file.description": "[Ouvrir](command:toSide:workbench.action.files.openFile) ou [créer](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D) un fichier C++. Veillez à l’enregistrer avec l’extension « .cpp », telle que « helloworld.cpp ». \n[Créer un fichier C++](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D)", + "c_cpp.walkthrough.create.cpp.file.description": "[Ouvrir](command:toSide:workbench.action.files.openFile) ou [créer](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D) un fichier C++. Veillez à l’enregistrer avec l’extension « .cpp », telle que « helloworld.cpp ». \n[Créer un fichier C++](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D)", "c_cpp.walkthrough.create.cpp.file.altText": "Ouvrez un fichier C++ ou un dossier avec un projet C++.", "c_cpp.walkthrough.command.prompt.title": "Lancer à partir de Developer Command Prompt for VS", "c_cpp.walkthrough.command.prompt.description": "Quand vous utilisez le compilateur Microsoft Visual Studio C++, l’extension C++ vous demande de lancer VS Code à partir de Developer Command Prompt for VS. Suivez les instructions à droite pour relancer.\n[Recharger la fenêtre](command:workbench.action.reloadWindow)", diff --git a/Extension/i18n/fra/src/nativeStrings.i18n.json b/Extension/i18n/fra/src/nativeStrings.i18n.json index f627ee41c..6afad0043 100644 --- a/Extension/i18n/fra/src/nativeStrings.i18n.json +++ b/Extension/i18n/fra/src/nativeStrings.i18n.json @@ -319,5 +319,5 @@ "file_not_found_in_path2": "« {0} » n'a pas été trouvé dans les fichiers compile_commands.json. « includePath » from c_cpp_properties.json in folder « {1} » sera utilisé pour ce fichier à la place.", "copilot_hover_link": "Générer un résumé de Copilot", "browse_path_not_found": "Impossible d’indexer des fichiers à partir d’un dossier inexistant : {0}", - "license_terms": "L’extension C/C++ ne peut être utilisée qu’avec Microsoft Visual Studio, Visual Studio pour Mac, Visual Studio Code, Azure DevOps, Team Foundation Server et les produits et services Microsoft successeurs pour développer et tester vos applications." + "license_terms": "Vous ne pouvez utiliser l’extension C/C++ qu’avec Microsoft Visual Studio, Visual Studio pour Mac, Visual Studio Code, Azure DevOps, Team Foundation Server et les produits et services Microsoft qui leur succèdent pour développer et tester vos applications." } \ No newline at end of file diff --git a/Extension/i18n/fra/ui/settings.html.i18n.json b/Extension/i18n/fra/ui/settings.html.i18n.json index 53598291c..576abe7bf 100644 --- a/Extension/i18n/fra/ui/settings.html.i18n.json +++ b/Extension/i18n/fra/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "Lorsque {0} (ou activé), l’analyseur de balise analyse uniquement les fichiers de code qui ont été inclus directement ou indirectement par un fichier source dans {1}. Lorsque {2} (ou non activé), l’analyseur de balise analyse tous les fichiers de code trouvés dans les chemins d’accès spécifiés dans la liste {3} .", "database.filename": "Parcourir : nom de fichier de base de données", "database.filename.description": "Chemin de la base de données de symboles générée. Cela indique à l'extension d'enregistrer la base de données de symboles de l'analyseur de balises à un emplacement autre que l'emplacement de stockage par défaut de l'espace de travail. Si un chemin relatif est spécifié, il est relatif à l'emplacement de stockage par défaut de l'espace de travail et non au dossier d'espace de travail lui-même. La variable {0} peut être utilisée pour spécifier un chemin relatif au dossier d'espace de travail (par ex., {1}).", - "recursiveIncludes.reduce": "Inclusions récursives : priorité", + "recursiveIncludes.reduce": "Recursive includes: reduce", "recursiveIncludes.reduce.description": "Affectez la valeur {0} pour toujours réduire le nombre de chemins d’accès d’inclusion récursive fournis à IntelliSense uniquement aux chemins actuellement référencés par des instructions #include. Pour cela, vous devez d’abord analyser les fichiers pour déterminer lesquels sont inclus. Affectez la valeur {1} pour fournir tous les chemins d’accès d’inclusion récursive à IntelliSense. La réduction du nombre de chemins d’accès d’inclusion récursive peut améliorer les performances d’IntelliSense lorsque de très nombreux chemins d’accès d’inclusion récursive sont impliqués. Ne pas réduire le nombre de chemins d’accès d’inclusion récursive peut améliorer les performances d’IntelliSense en évitant la nécessité d’analyser les fichiers pour déterminer quels chemins d’accès d’inclusion fournir.", "recursiveIncludes.priority": "Inclusions récursives : priorité", "recursiveIncludes.priority.description": "Priorité des chemins d’accès d’inclusion récursive. Si la valeur est {0}, les chemins d’accès d’inclusion récursive seront recherchés avant les chemins d’accès d’inclusion système. Si la valeur est {1}, les chemins d’accès d’inclusion récursive seront recherchés après les chemins d’accès d’inclusion système.", - "recursiveIncludes.order": "Inclusions récursives : priorité", + "recursiveIncludes.order": "Recursive includes: order", "recursiveIncludes.order.description": "Ordre dans lequel les sous-répertoires sous récursifs incluent des chemins d’accès sont recherchés." } \ No newline at end of file diff --git a/Extension/i18n/ita/package.i18n.json b/Extension/i18n/ita/package.i18n.json index d8fd76037..0ef6c2b63 100644 --- a/Extension/i18n/ita/package.i18n.json +++ b/Extension/i18n/ita/package.i18n.json @@ -254,7 +254,7 @@ "c_cpp.configuration.hover.description": "Se questa opzione è disabilitata, i dettagli al passaggio del mouse non vengono più forniti dal server di linguaggio.", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "Abilita i servizi di integrazione per l'[utilità di gestione dipendenze di vcpkg](https://aka.ms/vcpkg/).", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "Aggiungere percorsi di inclusione da `nan` e `node-addon-api` quando sono dipendenze.", - "c_cpp.configuration.copilotHover.markdownDescription": "Se `disabled` è impostato, nessuna informazione di Copilot verrà visualizzata al passaggio del mouse.", + "c_cpp.configuration.copilotHover.markdownDescription": "Se `disabled`, al passaggio del puntatore non verrà visualizzata l’opzione 'Genera riepilogo Copilot'.", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Se è `true`, con 'Rinomina simbolo' sarà richiesto un identificatore C/C++ valido.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "Se è `true`, il completamento automatico aggiungerà automaticamente `(` dopo le chiamate di funzione. In tal caso potrebbe essere aggiunto anche `)`, a seconda del valore dell'impostazione `#editor.autoClosingBrackets#`.", "c_cpp.configuration.filesExclude.markdownDescription": "Configurare i criteri GLOB per escludere le cartelle (e i file se `#C_Cpp.exclusionPolicy#` viene modificato). Sono specifici dell'estensione C/C++ e si aggiungono a `#files.exclude#`, ma diversamente da `#files.exclude#` si applicano anche ai percorsi esterni alla cartella dell'area di lavoro corrente e non vengono rimossi dalla visualizzazione Esplora risorse. Altre informazioni su [criteri GLOB](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", diff --git a/Extension/i18n/ita/src/nativeStrings.i18n.json b/Extension/i18n/ita/src/nativeStrings.i18n.json index 4f66150ae..13f7e2437 100644 --- a/Extension/i18n/ita/src/nativeStrings.i18n.json +++ b/Extension/i18n/ita/src/nativeStrings.i18n.json @@ -319,5 +319,5 @@ "file_not_found_in_path2": "\"{0}\" non è stato trovato nei file compile_commands.json. In alternativa per questo file verrà usato ''includePath'' del file c_cpp_properties.json nella cartella ''{1}''.", "copilot_hover_link": "Genera riepilogo Copilot", "browse_path_not_found": "Non è possibile indicizzare i file da una cartella non esistente: {0}", - "license_terms": "L'estensione C/C++ può essere usata solo con Microsoft Visual Studio, Visual Studio per Mac, Visual Studio Code, Azure DevOps, Team Foundation Server e prodotti e servizi Microsoft successivi per sviluppare e testare le applicazioni." + "license_terms": "L'estensione C/C++ può essere utilizzata solo con Microsoft Visual Studio, Visual Studio per Mac, Visual Studio Code, Azure DevOps, Team Foundation Server e i successori dei prodotti e servizi Microsoft per sviluppare e testare le tue applicazioni." } \ No newline at end of file diff --git a/Extension/i18n/ita/ui/settings.html.i18n.json b/Extension/i18n/ita/ui/settings.html.i18n.json index a584cbaa6..b56f3fb49 100644 --- a/Extension/i18n/ita/ui/settings.html.i18n.json +++ b/Extension/i18n/ita/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "Quando è impostato su {0} (o selezionato), il parser tag analizzerà solo i file di codice che sono stati inclusi direttamente o indirettamente da un file di origine in {1}. Quando è impostato su {2} (o non è selezionato), il parser tag analizzerà tutti i file di codice trovati nei percorsi specificati nell'elenco di {3}.", "database.filename": "Sfoglia: nome del file di database", "database.filename.description": "Percorso del database dei simboli generato. Indica all'estensione di salvare il database dei simboli del parser di tag in una posizione diversa da quella di archiviazione predefinita dell'area di lavoro. Se viene specificato un percorso relativo, sarà relativo alla posizione di archiviazione predefinita dell'area di lavoro e non alla cartella dell'area di lavoro. È possibile usare la variabile {0} per specificare un percorso relativo alla cartella dell'area di lavoro, ad esempio {1}.", - "recursiveIncludes.reduce": "Inclusioni ricorsive: priorità", + "recursiveIncludes.reduce": "Recursive includes: reduce", "recursiveIncludes.reduce.description": "Imposta su {0} per ridurre il numero di percorsi di inclusione ricorsivi forniti a IntelliSense, limitandoli solo ai percorsi attualmente referenziati da istruzioni #include. Per determinare quali file sono inclusi, è necessario prima analizzare i file. Imposta su {1} per fornire tutti i percorsi di inclusione ricorsivi a IntelliSense. La riduzione del numero di percorsi di inclusione ricorsivi può migliorare le prestazioni di IntelliSense in caso di un numero molto elevato di percorsi di inclusione ricorsivi. Non ridurre il numero di percorsi di inclusione ricorsivi può migliorare le prestazioni di IntelliSense evitando la necessità di analizzare i file per determinare quali percorsi di inclusione fornire.", "recursiveIncludes.priority": "Inclusioni ricorsive: priorità", "recursiveIncludes.priority.description": "La priorità dei percorsi di inclusione ricorsivi. Se impostato su {0}, i percorsi di inclusione ricorsivi verranno cercati prima dei percorsi di inclusione di sistema. Se impostato su {1}, i percorsi di inclusione ricorsivi verranno cercati dopo i percorsi di inclusione di sistema.", - "recursiveIncludes.order": "Inclusioni ricorsive: priorità", + "recursiveIncludes.order": "Recursive includes: order", "recursiveIncludes.order.description": "L'ordine in cui vengono cercate le sottodirectory nei percorsi di inclusione ricorsivi." } \ No newline at end of file diff --git a/Extension/i18n/jpn/package.i18n.json b/Extension/i18n/jpn/package.i18n.json index fd06eeadc..347e54cc6 100644 --- a/Extension/i18n/jpn/package.i18n.json +++ b/Extension/i18n/jpn/package.i18n.json @@ -254,7 +254,7 @@ "c_cpp.configuration.hover.description": "無効にすると、ホバーの詳細が言語サーバーから提供されなくなります。", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "[vcpkg 依存関係マネージャー](https://aka.ms/vcpkg/) の統合サービスを有効にします。", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "依存関係である場合は、`nan` および `node-addon-api` のインクルード パスを追加してください。", - "c_cpp.configuration.copilotHover.markdownDescription": "`disabled` の場合、ホバーに Copilot 情報は表示されません。", + "c_cpp.configuration.copilotHover.markdownDescription": "`disabled` にすると、ホバー時に [Copilot 要約を生成] オプションは表示されません。", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "`true` の場合、'シンボルの名前変更' には有効な C/C++ 識別子が必要です。", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "`true` の場合、関数呼び出しの後に `(` が自動的に追加されます。その場合は、`#editor.autoClosingBrackets#` 設定の値に応じて、`)` も追加される場合があります。", "c_cpp.configuration.filesExclude.markdownDescription": "フォルダー (および `#C_Cpp.exclusionPolicy#` が変更されている場合はファイル) を除外するための glob パターンを構成します。これらは C/C++ 拡張機能に固有であり、`#files.exclude#` に加えてありますが、`#files.exclude#` とは異なり、現在のワークスペース フォルダーの外部のパスにも適用され、エクスプローラー ビューからは削除されません。[glob パターン](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options) についての詳細をご確認ください。", diff --git a/Extension/i18n/jpn/src/nativeStrings.i18n.json b/Extension/i18n/jpn/src/nativeStrings.i18n.json index da19d58e2..470b8061f 100644 --- a/Extension/i18n/jpn/src/nativeStrings.i18n.json +++ b/Extension/i18n/jpn/src/nativeStrings.i18n.json @@ -319,5 +319,5 @@ "file_not_found_in_path2": "\"{0}\" が compile_commands.json ファイルに見つかりません。フォルダー '{1}' にある c_cpp_properties.json からの 'includePath' が、このファイルで代わりに使用されます。", "copilot_hover_link": "Copilot 要約の生成", "browse_path_not_found": "存在しないフォルダーにあるファイルにインデックスを付けることはできません: {0}", - "license_terms": "C/C++拡張は、Microsoft Visual Studio、Visual Studio for Mac、Visual Studio Code、Azure DevOps、Team Foundation Server、および後継のMicrosoft製品およびサービスでのみ使用して、アプリケーションの開発とテストを行うことができます。" + "license_terms": "C/C++ 拡張機能は、Microsoft Visual Studio、Visual Studio for Mac、Visual Studio Code、Azure DevOps、Team Foundation Server、およびアプリケーションの開発とテストをするための、後続の Microsoft 製品およびサービスでのみ使用できます。" } \ No newline at end of file diff --git a/Extension/i18n/jpn/ui/settings.html.i18n.json b/Extension/i18n/jpn/ui/settings.html.i18n.json index bd10237fd..329e54c0a 100644 --- a/Extension/i18n/jpn/ui/settings.html.i18n.json +++ b/Extension/i18n/jpn/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "{0} (またはチェックボックスがオン) の場合、タグ パーサーは、{1} のソース ファイルによって直接的または間接的にインクルードされたコード ファイルのみを解析します。{2} (またはチェック ボックスがオフ) の場合、タグ パーサーは、{3} の一覧に指定されたパスで見つかったすべてのコード ファイルを解析します。", "database.filename": "参照: データベース ファイル名", "database.filename.description": "生成されたシンボル データベースへのパスです。これは、タグ パーサーのシンボル データベースをワークスペースの既定のストレージの場所以外に保存するように拡張機能に指示します。相対パスを指定した場合、ワークスペース フォルダー自体ではなく、ワークスペースの既定のストレージの場所に対する相対パスになります。{0} 変数を使用して、ワークスペース フォルダーに対する相対パスを指定することもできます (例: {1})。", - "recursiveIncludes.reduce": "再帰インクルード: 優先度", + "recursiveIncludes.reduce": "Recursive includes: reduce", "recursiveIncludes.reduce.description": "{0} に設定すると、IntelliSense に提供される再帰インクルード パスの数は #include ステートメントによって現在参照されているパスのみに減らされます。これには、まずファイルを解析して、どのファイルが含まれているかを判断する必要があります。すべての再帰インクルード パスを IntelliSense に提供するには、{1} に設定します。非常に多数の再帰インクルード パスが関係している場合、再帰インクルード パスの数を減らすと、IntelliSense のパフォーマンスが向上する可能性があります。再帰インクルード パスの数を減らさないことで、どのインクルード パスを提供するかを判断するためのファイル解析が不要になり、IntelliSense のパフォーマンスが向上する場合があります。", "recursiveIncludes.priority": "再帰インクルード: 優先度", "recursiveIncludes.priority.description": "再帰インクルード パスの優先順位。{0} に設定すると、再帰インクルード パスはシステム インクルード パスの前に検索されます。{1} に設定すると、再帰インクルード パスはシステム インクルード パスの後に検索されます。", - "recursiveIncludes.order": "再帰インクルード: 優先度", + "recursiveIncludes.order": "Recursive includes: order", "recursiveIncludes.order.description": "再帰インクルード パスの下のサブディレクトリが検索される順序。" } \ No newline at end of file diff --git a/Extension/i18n/kor/package.i18n.json b/Extension/i18n/kor/package.i18n.json index 587ab6830..33591c640 100644 --- a/Extension/i18n/kor/package.i18n.json +++ b/Extension/i18n/kor/package.i18n.json @@ -254,7 +254,7 @@ "c_cpp.configuration.hover.description": "사용하지 않도록 설정하면 언어 서버에서 마우스로 가리키기 세부 정보를 더 이상 제공하지 않습니다.", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "[vcpkg 종속성 관리자](https://aka.ms/vcpkg/)에 대해 통합 서비스를 사용하도록 설정합니다.", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "`nan` 및 `node-addon-api`가 종속성일 때 해당 포함 경로를 추가합니다.", - "c_cpp.configuration.copilotHover.markdownDescription": "`disabled`인 경우 Hover에 Copilot 정보가 표시되지 않습니다.", + "c_cpp.configuration.copilotHover.markdownDescription": "(`disabled`)' 비활성화'된 경우 마우스로 가리키면 'Copilot 요약 생성' 옵션이 표시되지 않습니다.", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "`true`이면 '기호 이름 바꾸기'에 유효한 C/C++ 식별자가 필요합니다.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "`true`이면 자동 완성에서 `#editor.autoClosingBrackets#` 설정 값에 따라 함수 호출 뒤에 `(`를 자동으로 추가하며, 이 경우 `)`도 추가될 수 있습니다.", "c_cpp.configuration.filesExclude.markdownDescription": "폴더를 제외하기 위한 glob 패턴을 구성합니다(`#C_Cpp.exclusionPolicy#`가 변경된 경우 파일도). 이는 C/C++ 확장에만 해당하며 `#files.exclude#`와 더불어 사용되지만 `#files.exclude#`와 달리 현재 작업 영역 폴더 외부의 경로에도 적용되며 탐색기 보기에서 제거되지 않습니다. [glob 패턴](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options)에 대해 자세히 알아보세요.", @@ -303,7 +303,7 @@ "c_cpp.debuggers.cppdbg.svdPath.description": "포함된 장치의 SVD 파일에 대한 전체 경로입니다.", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "이 프로세스를 디버그할 때 사용할 .natvis 파일입니다.", "c_cpp.debuggers.showDisplayString.description": "visualizerFile을 지정하면 showDisplayString은 표시 문자열을 사용하도록 설정합니다. 이 옵션을 켜면 디버그하는 동안 성능이 저하될 수 있습니다.", - "c_cpp.debuggers.environment.description": "프로그램의 환경에 추가할 환경 변수입니다. 예: [ { \"name\": \"config\", \"value\": \"Debug\" } ], 이(가) 아님 [ { \"config\": \"Debug\" } ].", + "c_cpp.debuggers.environment.description": "프로그램의 환경에 추가할 환경 변수입니다. 예: [ { \"name\": \"config\", \"value\": \"Debug\" } ], 잘못된 형식: [ { \"config\": \"Debug\" } ]", "c_cpp.debuggers.envFile.description": "환경 변수 정의를 포함하는 파일의 절대 경로입니다. 이 파일에는 줄마다 등호로 구분된 키 값 쌍이 있습니다(예: 키=값).", "c_cpp.debuggers.additionalSOLibSearchPath.description": ".so 파일 검색에 사용할 디렉터리의 세미콜론으로 구분된 목록입니다(예: \"c:\\dir1;c:\\dir2\").", "c_cpp.debuggers.MIMode.description": "MIDebugEngine이 연결할 콘솔 디버거를 나타냅니다. 허용되는 값은 \"gdb\" \"lldb\"입니다.", diff --git a/Extension/i18n/kor/src/nativeStrings.i18n.json b/Extension/i18n/kor/src/nativeStrings.i18n.json index f249c36ae..ae6d678c2 100644 --- a/Extension/i18n/kor/src/nativeStrings.i18n.json +++ b/Extension/i18n/kor/src/nativeStrings.i18n.json @@ -319,5 +319,5 @@ "file_not_found_in_path2": "compile_commands.json 파일에서 \"{0}\"을(를) 찾을 수 없습니다. '{1}' 폴더의 c_cpp_properties.json 'includePath'가 대신 이 파일에 사용됩니다.", "copilot_hover_link": "Copilot 요약 생성", "browse_path_not_found": "존재하지 않는 폴더에서 파일을 인덱싱할 수 없습니다. {0}", - "license_terms": "C/C++ 확장은 Microsoft Visual Studio, Mac용 Visual Studio, Visual Studio Code, Azure DevOps, Team Foundation Server 및 후속 Microsoft 제품 및 서비스에서만 애플리케이션을 개발하고 테스트하는 데 사용할 수 있습니다." + "license_terms": "C/C++ 확장은 애플리케이션을 개발하고 테스트하기 위해 Microsoft Visual Studio, 맥용 Visual Studio, Visual Studio Code, Azure DevOps, Team Foundation Server 및 후속 Microsoft 제품 및 서비스에만 사용할 수 있습니다." } \ No newline at end of file diff --git a/Extension/i18n/kor/ui/settings.html.i18n.json b/Extension/i18n/kor/ui/settings.html.i18n.json index e2849ff37..7583df328 100644 --- a/Extension/i18n/kor/ui/settings.html.i18n.json +++ b/Extension/i18n/kor/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "{0}(또는 선택)인 경우 태그 파서는 {1}의 원본 파일에 직접 또는 간접적으로 포함된 코드 파일만 구문 분석합니다. {2}인 경우(또는 선택하지 않은 경우) 태그 파서는 {3} 목록에 지정된 경로에 있는 모든 코드 파일을 구문 분석합니다.", "database.filename": "찾아보기: 데이터베이스 파일 이름", "database.filename.description": "생성된 기호 데이터베이스의 경로입니다. 이 경로는 태그 파서의 기호 데이터베이스를 작업 영역의 기본 스토리지 위치가 아닌 다른 곳에 저장하도록 확장에 지시합니다. 상대 경로가 지정된 경우 작업 영역 폴더 자체가 아니라 작업 영역의 기본 스토리지 위치에 대해 상대적으로 만들어집니다. {0} 변수를 사용하여 작업 영역 폴더에 상대적인 경로를 지정할 수 있습니다(예: {1}).", - "recursiveIncludes.reduce": "재귀 포함: 우선 순위", + "recursiveIncludes.reduce": "Recursive includes: reduce", "recursiveIncludes.reduce.description": "intelliSense에 제공된 재귀 포함 경로의 수를 현재 #include 문에서 참조하는 경로로만 줄이려면 {0}(으)로 설정합니다. 이를 위해서는 포함된 파일을 확인하기 위해 먼저 파일을 구문 분석해야 합니다. IntelliSense에 대한 모든 재귀 포함 경로를 제공하려면 {1}(으)로 설정합니다. 재귀 포함 경로의 수를 줄이면 매우 많은 수의 재귀 포함 경로가 관련된 경우 IntelliSense 성능이 향상될 수 있습니다. 재귀 포함 경로의 수를 줄이지 않으면 제공할 포함 경로를 확인하기 위해 파일을 구문 분석할 필요가 없으므로 IntelliSense 성능을 향상시킬 수 있습니다.", "recursiveIncludes.priority": "재귀 포함: 우선 순위", "recursiveIncludes.priority.description": "재귀 포함 경로의 우선 순위입니다. {0}(으)로 설정하면 재귀 포함 경로가 시스템 포함 경로 전에 검색됩니다. {1}(으)로 설정하면 시스템 포함 경로 후에 재귀 포함 경로가 검색됩니다.", - "recursiveIncludes.order": "재귀 포함: 우선 순위", + "recursiveIncludes.order": "Recursive includes: order", "recursiveIncludes.order.description": "재귀 포함 경로 아래의 하위 디렉터리가 검색되는 순서입니다." } \ No newline at end of file diff --git a/Extension/i18n/plk/package.i18n.json b/Extension/i18n/plk/package.i18n.json index d8d30ef0d..c0a7069cd 100644 --- a/Extension/i18n/plk/package.i18n.json +++ b/Extension/i18n/plk/package.i18n.json @@ -254,7 +254,7 @@ "c_cpp.configuration.hover.description": "W przypadku wyłączenia szczegóły dotyczące umieszczania wskaźnika myszy nie będą już udostępniane przez serwer języka.", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "Włącz usługi integracji dla elementu [vcpkg dependency manager](https://aka.ms/vcpkg/).", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "Dodaj ścieżki dołączania z plików `nan` i `node-addon-api`, jeśli są one zależnościami.", - "c_cpp.configuration.copilotHover.markdownDescription": "W przypadku wartości `disabled` po najechaniu kursorem nie będą wyświetlane żadne informacje funkcji Copilot.", + "c_cpp.configuration.copilotHover.markdownDescription": "W przypadku opcji `disabled` po zatrzymaniu wskaźnika myszy nie będzie wyświetlana opcja „Generuj podsumowanie funkcji Copilot”.", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Jeśli ma wartość `true`, element „Symbol zmiany nazwy” będzie wymagać prawidłowego identyfikatora C/C++.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "Jeśli ma wartość `true`, autouzupełnianie będzie automatycznie dodawać znak `(` po wywołaniach funkcji, a w niektórych przypadkach może również dodawać znak `)`, zależnie od ustawienia `#editor.autoClosingBrackets#`.", "c_cpp.configuration.filesExclude.markdownDescription": "Skonfiguruj wzorce globalne na potrzeby wykluczania folderów (i plików w przypadku zmiany zasad `#C_Cpp.exclusionPolicy#`). Są one specyficzne dla rozszerzenia języka C/C++ i są dodatkiem do elementu `#files.exclude#`, ale w przeciwieństwie do elementu `#files.exclude#` mają również zastosowanie do ścieżek spoza bieżącego folderu obszaru roboczego i nie są usuwane z widoku Eksploratora. Przeczytaj więcej o [wzorcach globalnych](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", diff --git a/Extension/i18n/plk/src/nativeStrings.i18n.json b/Extension/i18n/plk/src/nativeStrings.i18n.json index e0d8cc5e7..cc6621b7a 100644 --- a/Extension/i18n/plk/src/nativeStrings.i18n.json +++ b/Extension/i18n/plk/src/nativeStrings.i18n.json @@ -319,5 +319,5 @@ "file_not_found_in_path2": "Nie znaleziono elementu „{0}” w plikach compile_commands.json. Zamiast tego dla tego pliku zostanie użyty element „includePath” z c_cpp_properties.json w folderze „{1}”.", "copilot_hover_link": "Generuj podsumowanie funkcji Copilot", "browse_path_not_found": "Nie można indeksować plików z nieistniejącego folderu: {0}", - "license_terms": "Rozszerzenie C/C++ może być używane tylko z programami Microsoft Visual Studio, Visual Studio dla komputerów Mac, Visual Studio Code, Azure DevOps, Team Foundation Server oraz następcami produktów i usług firmy Microsoft do tworzenia i testowania aplikacji." + "license_terms": "Rozszerzenie C/C++ może być używane tylko z programami Microsoft Visual Studio, Visual Studio dla komputerów Mac, Visual Studio Code, Azure DevOps, Team Foundation Server oraz kolejnymi wersjami produktów i usług firmy Microsoft do tworzenia i testowania aplikacji." } \ No newline at end of file diff --git a/Extension/i18n/plk/ui/settings.html.i18n.json b/Extension/i18n/plk/ui/settings.html.i18n.json index 6c3661a07..549a0ba4a 100644 --- a/Extension/i18n/plk/ui/settings.html.i18n.json +++ b/Extension/i18n/plk/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "Jeśli wartość jest równa {0} (lub jest zaznaczona), analizator tagów analizuje tylko pliki kodu, które zostały bezpośrednio lub pośrednio dołączone przez plik źródłowy w {1}. Jeśli wartość jest równa {2} (lub nie jest zaznaczona), analizator tagów będzie analizować wszystkie pliki kodu znalezione w ścieżkach określonych na {3} liście.", "database.filename": "Przeglądaj: nazwa pliku bazy danych", "database.filename.description": "Ścieżka do generowanej bazy danych symboli. Określa ona, że rozszerzenie ma zapisać bazę danych symboli analizatora tagów w innym miejscu niż domyślna lokalizacja magazynowania obszaru roboczego. Jeśli zostanie określona ścieżka względna, będzie to ścieżka względem domyślnej lokalizacji magazynowania obszaru roboczego, a nie folderu obszaru roboczego. Można użyć zmiennej {0} do określenia ścieżki względem folderu obszaru roboczego (np. {1}).", - "recursiveIncludes.reduce": "Rekursywne dołączania: priorytet", + "recursiveIncludes.reduce": "Recursive includes: reduce", "recursiveIncludes.reduce.description": "Ustaw na wartość {0}, aby zmniejszyć liczbę ścieżek rekursywnego dołączania dostarczanych do funkcji IntelliSense tylko do tych ścieżek, do których obecnie odwołują się instrukcje #include. Wymaga to najpierw przeanalizowania plików w celu określenia, które pliki są dołączane. Ustaw na wartość{1}, aby dostarczać wszystkie ścieżki rekursywnego dołączania do funkcji IntelliSense. Zmniejszenie liczby ścieżek rekursywnego dołączania może zwiększyć wydajność funkcji IntelliSense w przypadku dużej liczby ścieżek rekursywnego dołączania. Brak zmniejszenia liczby ścieżek rekursywnego dołączania może zwiększyć wydajność funkcji IntelliSense, unikając konieczności analizowania plików w celu określenia, które ścieżki dołączane należy podać.", "recursiveIncludes.priority": "Rekursywne dołączania: priorytet", "recursiveIncludes.priority.description": "Priorytet ścieżek rekursywnego dołączania. Jeśli ustawiono na wartość {0}, ścieżki rekursywnego dołączania będą przeszukiwane przed ścieżkami systemowego dołączania. Jeśli ustawiono na wartość {1}, ścieżki rekursywnego dołączania będą przeszukiwane po ścieżkach systemowego dołączania.", - "recursiveIncludes.order": "Rekursywne dołączania: priorytet", + "recursiveIncludes.order": "Recursive includes: order", "recursiveIncludes.order.description": "Kolejność przeszukiwania podkatalogów w ścieżkach dołączania rekursywnego." } \ No newline at end of file diff --git a/Extension/i18n/ptb/package.i18n.json b/Extension/i18n/ptb/package.i18n.json index 731992c73..e8e4d0964 100644 --- a/Extension/i18n/ptb/package.i18n.json +++ b/Extension/i18n/ptb/package.i18n.json @@ -254,7 +254,7 @@ "c_cpp.configuration.hover.description": "Se desabilitado, os detalhes do hover não são mais fornecidos pelo servidor de idiomas.", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "Habilitar os serviços de integração para o [gerenciador de dependências vcpkg](https://aka.ms/vcpkg/).", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "Adicione caminhos de inclusão de `nan` e `node-addon-api` quando forem dependências.", - "c_cpp.configuration.copilotHover.markdownDescription": "Se `disabled`, nenhuma informação do Copilot será exibida em Hover.", + "c_cpp.configuration.copilotHover.markdownDescription": "Se `disabled`, a opção \"Gerar resumo do Copilot\" não aparecerá ao passar o cursor.", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Se `true`, 'Renomear Símbolo' exigirá um identificador C/C++ válido.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "Se `true`, autocomplete adicionará automaticamente `(` após chamadas de função, neste caso `)` também pode ser adicionado, dependendo do valor da configuração `#editor.autoClosingBrackets#`.", "c_cpp.configuration.filesExclude.markdownDescription": "Configure padrões glob para excluir pastas (e arquivos se `#C_Cpp.exclusionPolicy#` for alterado). Esses são específicos para a extensão C/C++ e são adicionais a `#files.exclude#`, mas ao contrário de `#files.exclude#`, eles também se aplicam a caminhos fora do espaço de trabalho atual e não são removidos da visualização do Explorer. Saiba mais sobre [glob patterns](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", diff --git a/Extension/i18n/ptb/ui/settings.html.i18n.json b/Extension/i18n/ptb/ui/settings.html.i18n.json index 1de9d4a9c..d052b8462 100644 --- a/Extension/i18n/ptb/ui/settings.html.i18n.json +++ b/Extension/i18n/ptb/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "Quando {0} (ou marcado), o Analisador de Marca analisará somente os arquivos de código que foram diretamente ou indiretamente incluídos em um arquivo de origem no {1}. Quando {2} (ou não marcado), o Analisador de Marca analisará todos os arquivos de código encontrados nos caminhos especificados na lista de {3}.", "database.filename": "Procurar: nome do arquivo do banco de dados", "database.filename.description": "O caminho para o banco de dados de símbolo gerado. Isso instrui a extensão a salvar o banco de dados de símbolos do Analisador de Marca em algum lugar diferente do local de armazenamento padrão do workspace. Se um caminho relativo for especificado, ele será feito em relação ao local de armazenamento padrão do workspace, não à própria pasta do workspace. A {0} variável pode ser usada para especificar um caminho relativo à pasta do workspace (por exemplo, {1}).", - "recursiveIncludes.reduce": "Inclui recursiva: prioridade", + "recursiveIncludes.reduce": "Recursive includes: reduce", "recursiveIncludes.reduce.description": "Defina como {0} para reduzir o número de caminhos de inclusão recursivos fornecidos ao IntelliSense apenas para os caminhos atualmente referenciados por instruções #include. Isso requer primeiro a análise de arquivos para determinar quais arquivos estão incluídos. Defina como {1} para fornecer todos os caminhos de inclusão recursivos para o IntelliSense. Reduzir o número de caminhos de inclusão recursivos pode melhorar o desempenho do IntelliSense quando um número muito grande de caminhos de inclusão recursivos está envolvido. Não reduzir o número de caminhos de inclusão recursivos pode melhorar o desempenho do IntelliSense, evitando a necessidade de analisar arquivos para determinar quais caminhos de inclusão fornecer.", "recursiveIncludes.priority": "Inclui recursiva: prioridade", "recursiveIncludes.priority.description": "A prioridade dos caminhos de inclusão recursivo. Se definido como {0}, os caminhos de inclusão recursivos serão pesquisados antes que o sistema inclua caminhos. Se definido como {1}, os caminhos de inclusão recursivos serão pesquisados depois que o sistema incluir caminhos.", - "recursiveIncludes.order": "Inclui recursiva: prioridade", + "recursiveIncludes.order": "Recursive includes: order", "recursiveIncludes.order.description": "A ordem na qual os subdiretórios em caminhos de inclusão recursivos são pesquisados." } \ No newline at end of file diff --git a/Extension/i18n/rus/package.i18n.json b/Extension/i18n/rus/package.i18n.json index aa48cfff7..01336c3cb 100644 --- a/Extension/i18n/rus/package.i18n.json +++ b/Extension/i18n/rus/package.i18n.json @@ -254,7 +254,7 @@ "c_cpp.configuration.hover.description": "Если этот параметр отключен, сведения при наведении курсора больше не предоставляются языковым сервером.", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "Включите службы интеграции для [диспетчера зависимостей vcpkg](https://aka.ms/vcpkg/).", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "Добавьте пути включения из `nan` и `node-addon-api`, если они являются зависимостями.", - "c_cpp.configuration.copilotHover.markdownDescription": "Если параметр `disabled`, сведения о Copilot не будут отображаться при наведении указателя мыши.", + "c_cpp.configuration.copilotHover.markdownDescription": "Если `disabled`, при наведении курсора не будет отображаться параметр \"Создать сводку Copilot\".", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Если этот параметр имеет значение `true`, для операции 'Переименование символа' потребуется указать допустимый идентификатор C/C++.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "Если присвоено значение `true`, автозаполнение автоматически добавит `(` после вызовов функции, при этом также может добавляться `)` в зависимости от значения параметра `#editor.autoClosingBrackets#`.", "c_cpp.configuration.filesExclude.markdownDescription": "Настройка стандартных масок для исключения папок (и файлов, если внесено изменение в `#C_Cpp.exclusionPolicy#`). Они специфичны для расширения C/C++ и дополняют `#files.exclude#`, но в отличие от `#files.exclude#` они применяются также к путям вне папки используемой рабочей области и не удаляются из представления обозревателя. Дополнительные сведения о [шаблонах глобусов](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", diff --git a/Extension/i18n/rus/src/nativeStrings.i18n.json b/Extension/i18n/rus/src/nativeStrings.i18n.json index 10e3e19aa..78962ff11 100644 --- a/Extension/i18n/rus/src/nativeStrings.i18n.json +++ b/Extension/i18n/rus/src/nativeStrings.i18n.json @@ -319,5 +319,5 @@ "file_not_found_in_path2": "\"{0}\" не найден в файлах compile_commands.json. Вместо него для этого файла будет использоваться \"includePath\" из файла c_cpp_properties.json в папке \"{1}\".", "copilot_hover_link": "Создать сводку Copilot", "browse_path_not_found": "Не удалось индексировать файлы из несуществующей папки: {0}", - "license_terms": "Расширение C/C++ можно использовать только с Microsoft Visual Studio, Visual Studio для Mac, Visual Studio Code, Azure DevOps, Team Foundation Server и более поздними продуктами и службами Майкрософт для разработки и тестирования приложений." + "license_terms": "Расширение C/C++ можно использовать только с Microsoft Visual Studio, Visual Studio для Mac, Visual Studio Code, Azure DevOps, Team Foundation Server и последующими продуктами и службами Майкрософт, предназначенными для разработки и тестирования приложений." } \ No newline at end of file diff --git a/Extension/i18n/rus/ui/settings.html.i18n.json b/Extension/i18n/rus/ui/settings.html.i18n.json index dbf214b6e..ec6729288 100644 --- a/Extension/i18n/rus/ui/settings.html.i18n.json +++ b/Extension/i18n/rus/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "При значении {0} (или если установлен флажок) анализатор тегов будет анализировать только файлы кода, прямо или косвенно включаемые исходным файлом в {1}. При значении {2} (или если флажок не установлен) анализатор тегов будет анализировать все файлы кода, найденные по путям, указанным в списке {3}.", "database.filename": "Обзор: имя файла базы данных", "database.filename.description": "Путь к создаваемой базе данных символов. Этот параметр указывает расширению расположение для сохранение базы данных символов анализатора тегов, отличное от используемого в этой рабочей области места хранения по умолчанию.Если указать относительный путь, он будет определяться относительно места хранения по умолчанию, а не от папки самой рабочей области. Чтобы указать путь относительно папки рабочей области, можно использовать переменную {0} (например, {1}).", - "recursiveIncludes.reduce": "Рекурсивные включения: приоритет", + "recursiveIncludes.reduce": "Recursive includes: reduce", "recursiveIncludes.reduce.description": "Задайте значение {0}, чтобы всегда уменьшать количество путей рекурсивного включения, предоставляемых для IntelliSense, только до тех путей, на которые в настоящее время ссылаются инструкции #include. Для этого необходимо сначала проанализировать файлы, чтобы определить, какие файлы включены. Задайте значение {1}, чтобы предоставить все пути рекурсивного включения для IntelliSense. Уменьшение количества путей рекурсивного включения может повысить производительность IntelliSense, если задействовано очень большое количество путей рекурсивного включения. Отсутствие уменьшения количества путей рекурсивного включения может улучшить производительность IntelliSense благодаря отказу от необходимости анализа файлов для определения того, какие пути включения следует предоставить.", "recursiveIncludes.priority": "Рекурсивные включения: приоритет", "recursiveIncludes.priority.description": "Приоритет путей рекурсивного включения. Если задано значение {0}, поиск путей рекурсивного включения будет выполняться до путей системного включения. Если задано значение {1}, поиск путей рекурсивного включения будет выполняться после путей системного включения.", - "recursiveIncludes.order": "Рекурсивные включения: приоритет", + "recursiveIncludes.order": "Recursive includes: order", "recursiveIncludes.order.description": "Порядок поиска подкаталогов в путях рекурсивного включения." } \ No newline at end of file diff --git a/Extension/i18n/trk/package.i18n.json b/Extension/i18n/trk/package.i18n.json index b0a3be21f..e4d7f638e 100644 --- a/Extension/i18n/trk/package.i18n.json +++ b/Extension/i18n/trk/package.i18n.json @@ -254,7 +254,7 @@ "c_cpp.configuration.hover.description": "Devre dışı bırakılırsa üzerine gelme ayrıntıları artık dil sunucusu tarafından sağlanmaz.", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "[vcpkg bağımlılık yöneticisi](https://aka.ms/vcpkg/) için tümleştirme hizmetlerini etkinleştirin.", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "`nan` ve `node-addon-api` bağımlılık olduğunda bunlardan ekleme yolları ekleyin.", - "c_cpp.configuration.copilotHover.markdownDescription": "`disabled` ise Hover'da Copilot bilgisi görünmez.", + "c_cpp.configuration.copilotHover.markdownDescription": "`disabled` durumunda, üzerine gelindiğinde 'Copilot özeti oluştur' seçeneği görüntülenmez.", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "`true` ise, 'Sembolü Yeniden Adlandır' işlemi için geçerli bir C/C++ tanımlayıcısı gerekir.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "`true` ise otomatik tamamla özelliği, işlev çağrılarından sonra otomatik olarak `(` ekler. Bazı durumlarda `#editor.autoClosingBrackets#` ayarının değerine bağlı olarak `)` karakteri de eklenebilir.", "c_cpp.configuration.filesExclude.markdownDescription": "Klasörleri (ve `#C_Cpp.exclusionPolicy#` değiştirilirse dosyaları) hariç tutmak için glob desenlerini yapılandırın. Bunlar, C/C++ uzantısına özgüdür ve `#files.exclude#` öğesine ek olarak, ancak `#files.exclude#` öğesinden farklı olarak, geçerli çalışma alanı klasörünün dışındaki yollara da uygulanırlar ve Explorer görünümünden kaldırılmazlar. [Glob desenleri](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options) ile ilgili daha fazla bilgi edinin.", diff --git a/Extension/i18n/trk/src/nativeStrings.i18n.json b/Extension/i18n/trk/src/nativeStrings.i18n.json index 9853b8227..e6969b9f5 100644 --- a/Extension/i18n/trk/src/nativeStrings.i18n.json +++ b/Extension/i18n/trk/src/nativeStrings.i18n.json @@ -319,5 +319,5 @@ "file_not_found_in_path2": "\"{0}\" compile_commands.json dosyaları içinde bulunamadı. Bu dosya yerine '{1}' klasöründeki c_cpp_properties.json dosyasında bulunan 'includePath' kullanılacak.", "copilot_hover_link": "Copilot özeti oluştur", "browse_path_not_found": "Mevcut olmayan klasörden dosyalar dizine alınamıyor: {0}", - "license_terms": "C/C++ uzantısı yalnızca uygulamalarınızı geliştirmek ve test etmek için Microsoft Visual Studio, Mac için Visual Studio, Visual Studio Code, Azure DevOps, Team Foundation Server ve ardıl Microsoft ürünleri ve hizmetleri ile kullanılabilir." + "license_terms": "C/C++ uzantısı, uygulamalarınızı geliştirmek ve test etmek için yalnızca Microsoft Visual Studio, Mac için Visual Studio, Visual Studio Code, Azure DevOps, Team Foundation Server ve sonraki Microsoft ürünleri ve hizmetleriyle kullanılabilir." } \ No newline at end of file diff --git a/Extension/i18n/trk/ui/settings.html.i18n.json b/Extension/i18n/trk/ui/settings.html.i18n.json index 308543187..8cd6537cf 100644 --- a/Extension/i18n/trk/ui/settings.html.i18n.json +++ b/Extension/i18n/trk/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "{0} (veya işaretli) olduğunda, Etiket Ayrıştırıcı yalnızca {1} içindeki bir kaynak dosya tarafından doğrudan veya dolaylı olarak dahil edilen kod dosyalarını ayrıştırır. {2} olduğunda (veya işaretlenmediğinde), Etiket Ayrıştırıcı {3} listesinde belirtilen yollarda bulunan tüm kod dosyalarını ayrıştırır.", "database.filename": "Gözat: veritabanı dosya adı", "database.filename.description": "Oluşturulan sembol veritabanının yolu. Bu, uzantının Etiket Ayrıştırıcısının sembol veritabanının çalışma alanı varsayılan depolama konumundan başka bir yerde kaydedilmesini sağlar. Göreli yol belirtilirse, çalışma alanı klasörünün kendisi değil, çalışma alanının varsayılan depolama konumuyla göreli olarak yapılır. {0} değişkeni, çalışma alanı klasörüne göreli bir yol belirtmek için kullanılabilir (örneğin, {1}).", - "recursiveIncludes.reduce": "Özyinelemeli içerikler: öncelik", + "recursiveIncludes.reduce": "Recursive includes: reduce", "recursiveIncludes.reduce.description": "IntelliSense'e sağlanan özyinelemeli ekleme yollarının sayısını her zaman yalnızca o anda #include deyimleri tarafından başvurulan yollara indirgemek için {0} olarak ayarlayın. Bu, hangi dosyaların eklendiğini belirlemek için önce dosyaların ayrıştırılmasını gerektirir. IntelliSense'e tüm özyinelemeli ekleme yollarını sağlamak için {1} olarak ayarlayın. Özyinelemeli ekleme yollarının sayısının azaltılması, çok sayıda özyinelemeli ekleme yolu söz konusu olduğunda IntelliSense performansını artırabilir. Özyinelemeli ekleme yollarının sayısını azaltmamak, hangi ekleme yollarının sağlanacağını belirlemek için dosyaları ayrıştırma ihtiyacını ortadan kaldırarak IntelliSense performansını artırabilir.", "recursiveIncludes.priority": "Özyinelemeli içerikler: öncelik", "recursiveIncludes.priority.description": "Özyinelemeli ekleme yollarının önceliği. {0} olarak ayarlanırsa özyinelemeli ekleme yolları, sistem ekleme yollarından önce aranır. {1} olarak ayarlanırsa özyinelemeli ekleme yolları, sistem ekleme yollarından sonra aranır.", - "recursiveIncludes.order": "Özyinelemeli içerikler: öncelik", + "recursiveIncludes.order": "Recursive includes: order", "recursiveIncludes.order.description": "Özyinelemeli ekleme yolları altındaki alt dizinlerin aranma sırası." } \ No newline at end of file diff --git a/Extension/package.nls.json b/Extension/package.nls.json index a5a4586dc..81c5fb476 100644 --- a/Extension/package.nls.json +++ b/Extension/package.nls.json @@ -476,7 +476,7 @@ "c_cpp.configuration.autocomplete.markdownDescription": { "message": "Controls the auto-completion provider. If `disabled` and you want word-based completion, you will also need to set `\"[cpp]\": {\"editor.wordBasedSuggestions\": }` (and similarly for `c` and `cuda-cpp` languages).", "comment": [ - " {Locked=\"`disabled`\"} Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered -- except for text \"value\", which is a placeholder that should be translated." + "{Locked=\"`disabled`\"} {Locked=\"`\\\"[cpp]\\\": {\\\"editor.wordBasedSuggestions\\\": <\"} {Locked=\">}`\"} Locked=\"`c`\"} Locked=\"`cuda-cpp`\"}" ] }, "c_cpp.configuration.autocomplete.default.description": "Uses the active IntelliSense engine.", @@ -787,7 +787,7 @@ "c_cpp.configuration.copilotHover.markdownDescription": { "message": "If `disabled`, no 'Generate Copilot summary' option will appear on hover.", "comment": [ - " {Locked=\"`disabled`\"} Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." + "{Locked=\"`disabled`\"} {Locked=\"Copilot\"}" ] }, "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": { @@ -878,7 +878,10 @@ "c_cpp.debuggers.cppdbg.svdPath.description": "The full path to an embedded device's SVD file.", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": ".natvis file to be used when debugging this process.", "c_cpp.debuggers.showDisplayString.description": "When a visualizerFile is specified, showDisplayString will enable the display string. Turning this option on can cause slower performance during debugging.", - "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", + "c_cpp.debuggers.environment.description": { + "message": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", + "comment": "{Locked=\"[ { \\\"name\": \\\"\"} {Locked=\"\\\", \\\"value\\\": \\\"\"} {Locked=\"\\\" } ]\"} {Locked=\"[ { \\\"\"} {Locked=\"\\\": \\\"\"} {Locked=\"\\\" } ]\"}" + }, "c_cpp.debuggers.envFile.description": "Absolute path to a file containing environment variable definitions. This file has key value pairs separated by an equals sign per line. E.g. KEY=VALUE.", "c_cpp.debuggers.additionalSOLibSearchPath.description": "Semicolon separated list of directories to use to search for .so files. Example: \"c:\\dir1;c:\\dir2\".", "c_cpp.debuggers.MIMode.description": "Indicates the console debugger that the MIDebugEngine will connect to. Allowed values are \"gdb\" \"lldb\".", @@ -1003,22 +1006,32 @@ "c_cpp.walkthrough.set.up.title": "Set up your C++ Environment", "c_cpp.walkthrough.activating.description": "Activating the C++ extension to determine whether your C++ Environment has been set up.\nActivating Extension...", "c_cpp.walkthrough.no.compilers.windows.description": "We could not find a C++ compiler on your machine, which is required to use the C++ extension. Follow the instructions on the right to install one, then click “Find my new Compiler” below.\n[Find my new Compiler](command:C_Cpp.RescanCompilers?%22walkthrough%22)", - "c_cpp.walkthrough.no.compilers.description": "We could not find a C++ compiler on your machine, which is required to use the C++ extension. Either select “Install a C++ Compiler” to have a compiler installed for you or follow the instructions on the right to install one, then click “Find my new Compiler” below.\n[Install a C++ Compiler](command:C_Cpp.InstallCompiler?%22walkthrough%22)\n[Find my new Compiler](command:C_Cpp.RescanCompilers?%22walkthrough%22)", + "c_cpp.walkthrough.no.compilers.description": { + "message": "We could not find a C++ compiler on your machine, which is required to use the C++ extension. Either select “Install a C++ Compiler” to have a compiler installed for you or follow the instructions on the right to install one, then click “Find my new Compiler” below.\n[Install a C++ Compiler](command:C_Cpp.InstallCompiler?%22walkthrough%22)\n[Find my new Compiler](command:C_Cpp.RescanCompilers?%22walkthrough%22)", + "comment": [ + "{Locked=\"C++\"} {Locked=\"\\\n[\"} {Locked=\"](command:C_Cpp.InstallCompiler?%22walkthrough%22)\\\n[\"} {Locked=\"](command:C_Cpp.RescanCompilers?%22walkthrough%22)\"}" + ] + }, "c_cpp.walkthrough.compilers.found.description": "The C++ extension works with a C++ compiler. Select one from those already on your machine by clicking the button below.\n[Select my Default Compiler](command:C_Cpp.SelectIntelliSenseConfiguration?%22walkthrough%22)", "c_cpp.walkthrough.compilers.found.altText": "Image showing the select a default compiler quickpick and the list of compilers found on the users machine, one of which is selected.", "c_cpp.walkthrough.create.cpp.file.title": "Create a C++ file", - "c_cpp.walkthrough.create.cpp.file.description": "[Open](command:toSide:workbench.action.files.openFile) or [create](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D) a C++ file. Be sure to save it with the \".cpp\" extension, such as \"helloworld.cpp\". \n[Create a C++ File](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D)", + "c_cpp.walkthrough.create.cpp.file.description": { + "message": "[Open](command:toSide:workbench.action.files.openFile) or [create](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D) a C++ file. Be sure to save it with the \".cpp\" extension, such as \"helloworld.cpp\". \n[Create a C++ File](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D)", + "comment": [ + "{Locked=\"](command:toSide:workbench.action.files.openFile)\"} {Locked=\"](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D)\"} {Locked=\"C++\"} {Locked=\".cpp\"} {Locked=\"\\\n[\"} {Locked=\"](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D)\"}" + ] + }, "c_cpp.walkthrough.create.cpp.file.altText": "Open a C++ file or a folder with a C++ project.", "c_cpp.walkthrough.command.prompt.title": { "message": "Launch from the Developer Command Prompt for VS", "comment": [ - "Don't translate the product name \"Developer Command Prompt for VS\"." + "{Locked=\"Developer Command Prompt for VS\"}" ] }, "c_cpp.walkthrough.command.prompt.description": { "message": "When using the Microsoft Visual Studio C++ compiler, the C++ extension requires you to launch VS Code from the Developer Command Prompt for VS. Follow the instructions on the right to relaunch.\n[Reload Window](command:workbench.action.reloadWindow)", "comment": [ - "Don't translate the product name \"Developer Command Prompt for VS\"." + "{Locked=\"Visual Studio\"} {Locked=\"C++\"} {Locked=\"VS Code\"} {Locked=\"Developer Command Prompt for VS\"} {Locked=\"\\\n[\"} {Locked=\"](command:workbench.action.reloadWindow)\"}" ] }, "c_cpp.walkthrough.run.debug.title": "Run and debug your C++ file", @@ -1041,4 +1054,4 @@ "c_cpp.configuration.refactoring.includeHeader.never.description": "Never include the header file.", "c_cpp.languageModelTools.configuration.displayName": "C/C++ configuration", "c_cpp.languageModelTools.configuration.userDescription": "Configuration of the active C or C++ file, like language standard version and target platform." -} +} \ No newline at end of file diff --git a/Extension/src/nativeStrings.json b/Extension/src/nativeStrings.json index 9712c9244..83039aa97 100644 --- a/Extension/src/nativeStrings.json +++ b/Extension/src/nativeStrings.json @@ -482,5 +482,8 @@ "file_not_found_in_path2": "\"{0}\" not found in compile_commands.json files. 'includePath' from c_cpp_properties.json in folder '{1}' will be used for this file instead.", "copilot_hover_link": "Generate Copilot summary", "browse_path_not_found": "Unable to index files from non-existent folder: {0}", - "license_terms": "The C/C++ extension may be used only with Microsoft Visual Studio, Visual Studio for Mac, Visual Studio Code, Azure DevOps, Team Foundation Server, and successor Microsoft products and services to develop and test your applications." + "license_terms": { + "text": "The C/C++ extension may be used only with Microsoft Visual Studio, Visual Studio for Mac, Visual Studio Code, Azure DevOps, Team Foundation Server, and successor Microsoft products and services to develop and test your applications.", + "hint": "{Locked=\"C/C++\"} {Locked=\"Visual Studio\"} {Locked=\"Mac\"} {Locked=\"Visual Studio Code\"} {Locked=\"Azure DevOps\"} {Locked=\"Team Foundation Server\"}" + } } From 735d74175cac293e3fea50a05f891b10f9bb4599 Mon Sep 17 00:00:00 2001 From: Bob Brown Date: Wed, 16 Apr 2025 14:04:37 -0700 Subject: [PATCH 19/33] Add a message explaining why we couldn't find a quote-wrapped path (#13521) --- Extension/src/LanguageServer/configurations.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/Extension/src/LanguageServer/configurations.ts b/Extension/src/LanguageServer/configurations.ts index f132d8739..94c349a11 100644 --- a/Extension/src/LanguageServer/configurations.ts +++ b/Extension/src/LanguageServer/configurations.ts @@ -1721,6 +1721,7 @@ export class CppProperties { for (const p of paths) { let pathExists: boolean = true; + let quotedPath: boolean = false; let resolvedPath: string = this.resolvePath(p); if (!resolvedPath) { continue; @@ -1728,7 +1729,10 @@ export class CppProperties { // Check if resolved path exists if (!fs.existsSync(resolvedPath)) { - if (assumeRelative && !path.isAbsolute(resolvedPath)) { + if (resolvedPath.match(/".*"/) !== null) { + pathExists = false; + quotedPath = true; + } else if (assumeRelative && !path.isAbsolute(resolvedPath)) { continue; } else if (!this.rootUri) { pathExists = false; @@ -1744,7 +1748,10 @@ export class CppProperties { } if (!pathExists) { - const message: string = localize('cannot.find', "Cannot find: {0}", resolvedPath); + let message: string = localize('cannot.find', "Cannot find: {0}", resolvedPath); + if (quotedPath) { + message += '. ' + localize('wrapped.with.quotes', 'Do not add extra quotes around paths.'); + } errors.push(message); continue; } @@ -2132,6 +2139,9 @@ export class CppProperties { badPath = `"${expandedPaths[0]}"`; } message = localize('cannot.find', "Cannot find: {0}", badPath); + if (incorrectExpandedPaths.some(p => p.match(/".*"/) !== null)) { + message += '.\n' + localize('wrapped.with.quotes', 'Do not add extra quotes around paths.'); + } newSquiggleMetrics.PathNonExistent++; } else { // Check for file versus path mismatches. From 04bc6c82949eb2bb2b7aa9777433d74acd417460 Mon Sep 17 00:00:00 2001 From: Bob Brown Date: Thu, 17 Apr 2025 11:12:26 -0700 Subject: [PATCH 20/33] No error message shown in config UI for invalid compilerPath (#13529) --- Extension/src/LanguageServer/configurations.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Extension/src/LanguageServer/configurations.ts b/Extension/src/LanguageServer/configurations.ts index 94c349a11..6870619b8 100644 --- a/Extension/src/LanguageServer/configurations.ts +++ b/Extension/src/LanguageServer/configurations.ts @@ -1612,7 +1612,7 @@ export class CppProperties { resolvedCompilerPath = which.sync(config.compilerPath, { nothrow: true }); } - if (resolvedCompilerPath === undefined) { + if (!resolvedCompilerPath) { resolvedCompilerPath = this.resolvePath(config.compilerPath); } const settings: CppSettings = new CppSettings(this.rootUri); From 799d09f41f5cb442df01a49bf75562a4075faf27 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Thu, 17 Apr 2025 12:51:30 -0700 Subject: [PATCH 21/33] Fix some loc bugs. (#13522) * Fix some loc bugs. * Fix newlines at end of files in json. --- Extension/.vscode/settings.json | 2 +- Extension/i18n/chs/ui/settings.html.i18n.json | 2 +- Extension/i18n/csy/ui/settings.html.i18n.json | 2 +- Extension/i18n/kor/ui/settings.html.i18n.json | 2 +- Extension/i18n/plk/ui/settings.html.i18n.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Extension/.vscode/settings.json b/Extension/.vscode/settings.json index 7c60adca7..ed43fe6a3 100644 --- a/Extension/.vscode/settings.json +++ b/Extension/.vscode/settings.json @@ -27,7 +27,7 @@ "editor.formatOnSave": true, "editor.defaultFormatter": "vscode.json-language-features", "editor.tabSize": 4, - "files.insertFinalNewline": true + "files.insertFinalNewline": false }, "[jsonc]": { "editor.formatOnSave": true, diff --git a/Extension/i18n/chs/ui/settings.html.i18n.json b/Extension/i18n/chs/ui/settings.html.i18n.json index f5fbbfbba..27c9452ad 100644 --- a/Extension/i18n/chs/ui/settings.html.i18n.json +++ b/Extension/i18n/chs/ui/settings.html.i18n.json @@ -13,7 +13,7 @@ "edit.configurations.json": "C/C++: 编辑配置(JSON)", "check.the.schema": "转到 {0},详细了解 C/C++ 属性。", "cpp.properties.schema.reference": "C/C++ 属性架构参考", - "view.schema.reference": "属性架构引用", + "view.schema.reference": "属性架构参考", "intellisense.configurations": "IntelliSense 配置", "intellisense.configurations.description": "使用此编辑器编辑在基础 {0} 文件中定义的 IntelliSense 设置。在此编辑器中所做的更改仅适用于所选的配置。要一次编辑多个配置,请转到 {1}。", "configuration.name": "配置名称", diff --git a/Extension/i18n/csy/ui/settings.html.i18n.json b/Extension/i18n/csy/ui/settings.html.i18n.json index 616896bec..4db56e852 100644 --- a/Extension/i18n/csy/ui/settings.html.i18n.json +++ b/Extension/i18n/csy/ui/settings.html.i18n.json @@ -72,5 +72,5 @@ "recursiveIncludes.priority": "Rekurzivní soubory k zahrnutí: priorita", "recursiveIncludes.priority.description": "Priorita cest rekurzivních souborů zahrnutí Pokud je nastavená hodnota {0}, budou se cesty rekurzivních souborů k zahrnutí prohledávat před cestami systémových souborů k zahrnutí. Pokud je nastavená hodnota {1}, budou se cesty rekurzivních souborů k zahrnutí prohledávat po cestách systémových souborů k zahrnutí.", "recursiveIncludes.order": "Recursive includes: order", - "recursiveIncludes.order.description": "Pořadí, ve kterém se prohledávají podadresáře v cestách rekurzivních souborů k zahrnutí" + "recursiveIncludes.order.description": "Pořadí, ve kterém se prohledávají podadresáře v cestách rekurzivních souborů k zahrnutí." } \ No newline at end of file diff --git a/Extension/i18n/kor/ui/settings.html.i18n.json b/Extension/i18n/kor/ui/settings.html.i18n.json index 7583df328..76a69e7d8 100644 --- a/Extension/i18n/kor/ui/settings.html.i18n.json +++ b/Extension/i18n/kor/ui/settings.html.i18n.json @@ -68,7 +68,7 @@ "database.filename": "찾아보기: 데이터베이스 파일 이름", "database.filename.description": "생성된 기호 데이터베이스의 경로입니다. 이 경로는 태그 파서의 기호 데이터베이스를 작업 영역의 기본 스토리지 위치가 아닌 다른 곳에 저장하도록 확장에 지시합니다. 상대 경로가 지정된 경우 작업 영역 폴더 자체가 아니라 작업 영역의 기본 스토리지 위치에 대해 상대적으로 만들어집니다. {0} 변수를 사용하여 작업 영역 폴더에 상대적인 경로를 지정할 수 있습니다(예: {1}).", "recursiveIncludes.reduce": "Recursive includes: reduce", - "recursiveIncludes.reduce.description": "intelliSense에 제공된 재귀 포함 경로의 수를 현재 #include 문에서 참조하는 경로로만 줄이려면 {0}(으)로 설정합니다. 이를 위해서는 포함된 파일을 확인하기 위해 먼저 파일을 구문 분석해야 합니다. IntelliSense에 대한 모든 재귀 포함 경로를 제공하려면 {1}(으)로 설정합니다. 재귀 포함 경로의 수를 줄이면 매우 많은 수의 재귀 포함 경로가 관련된 경우 IntelliSense 성능이 향상될 수 있습니다. 재귀 포함 경로의 수를 줄이지 않으면 제공할 포함 경로를 확인하기 위해 파일을 구문 분석할 필요가 없으므로 IntelliSense 성능을 향상시킬 수 있습니다.", + "recursiveIncludes.reduce.description": "IntelliSense에 제공된 재귀 포함 경로의 수를 현재 #include 문에서 참조하는 경로로만 줄이려면 {0}(으)로 설정합니다. 이를 위해서는 포함된 파일을 확인하기 위해 먼저 파일을 구문 분석해야 합니다. IntelliSense에 대한 모든 재귀 포함 경로를 제공하려면 {1}(으)로 설정합니다. 재귀 포함 경로의 수를 줄이면 매우 많은 수의 재귀 포함 경로가 관련된 경우 IntelliSense 성능이 향상될 수 있습니다. 재귀 포함 경로의 수를 줄이지 않으면 제공할 포함 경로를 확인하기 위해 파일을 구문 분석할 필요가 없으므로 IntelliSense 성능을 향상시킬 수 있습니다.", "recursiveIncludes.priority": "재귀 포함: 우선 순위", "recursiveIncludes.priority.description": "재귀 포함 경로의 우선 순위입니다. {0}(으)로 설정하면 재귀 포함 경로가 시스템 포함 경로 전에 검색됩니다. {1}(으)로 설정하면 시스템 포함 경로 후에 재귀 포함 경로가 검색됩니다.", "recursiveIncludes.order": "Recursive includes: order", diff --git a/Extension/i18n/plk/ui/settings.html.i18n.json b/Extension/i18n/plk/ui/settings.html.i18n.json index 549a0ba4a..050787215 100644 --- a/Extension/i18n/plk/ui/settings.html.i18n.json +++ b/Extension/i18n/plk/ui/settings.html.i18n.json @@ -12,7 +12,7 @@ "edit.configurations.in.json": "Edytuj konfiguracje w pliku JSON", "edit.configurations.json": "C/C++: edytuj konfiguracje (JSON)", "check.the.schema": "Dowiedz się więcej o właściwościach języka C/C++, przechodząc do: {0}.", - "cpp.properties.schema.reference": "Odwołanie do schematu właściwości języka C/C++", + "cpp.properties.schema.reference": "Odwołanie do schematu właściwości C/C++", "view.schema.reference": "Odwołanie do schematu właściwości", "intellisense.configurations": "Konfiguracje funkcji IntelliSense", "intellisense.configurations.description": "Użyj tego edytora, aby edytować ustawienia funkcji IntelliSense zdefiniowane w źródłowym pliku {0}. Zmiany wprowadzone w tym edytorze dotyczą tylko wybranej konfiguracji. Aby edytować wiele konfiguracji naraz, przejdź do: {1}.", From 97ef1aa99d1bf7128f121d748e2550df455662f3 Mon Sep 17 00:00:00 2001 From: Bob Brown Date: Thu, 17 Apr 2025 16:52:55 -0700 Subject: [PATCH 22/33] Don't show bogus errors for compilerPath + args in config UI (#13531) --- Extension/src/LanguageServer/configurations.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Extension/src/LanguageServer/configurations.ts b/Extension/src/LanguageServer/configurations.ts index 6870619b8..26bbd86ec 100644 --- a/Extension/src/LanguageServer/configurations.ts +++ b/Extension/src/LanguageServer/configurations.ts @@ -1617,7 +1617,11 @@ export class CppProperties { } const settings: CppSettings = new CppSettings(this.rootUri); const compilerPathAndArgs: util.CompilerPathAndArgs = util.extractCompilerPathAndArgs(!!settings.legacyCompilerArgsBehavior, resolvedCompilerPath); + + // compilerPath + args in the same string isn't working yet. + const skipFullCommandString = !compilerPathAndArgs.compilerName && resolvedCompilerPath.includes(" "); if (resolvedCompilerPath + && !skipFullCommandString // Don't error cl.exe paths because it could be for an older preview build. && compilerPathAndArgs.compilerName.toLowerCase() !== "cl.exe" && compilerPathAndArgs.compilerName.toLowerCase() !== "cl") { @@ -1795,7 +1799,7 @@ export class CppProperties { if (!this.configurationJson) { return; } - if ((this.configurationJson.enableConfigurationSquiggles !== undefined && !this.configurationJson.enableConfigurationSquiggles) || + if ((this.configurationJson.enableConfigurationSquiggles === false) || (this.configurationJson.enableConfigurationSquiggles === undefined && !settings.defaultEnableConfigurationSquiggles)) { this.diagnosticCollection.clear(); return; From c21a214fc473bf92a43fe6a6e9b70a1566b160c7 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Mon, 21 Apr 2025 13:58:34 -0700 Subject: [PATCH 23/33] Fix translations export. (#13539) --- Extension/package.nls.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Extension/package.nls.json b/Extension/package.nls.json index 81c5fb476..262dd3f26 100644 --- a/Extension/package.nls.json +++ b/Extension/package.nls.json @@ -880,7 +880,9 @@ "c_cpp.debuggers.showDisplayString.description": "When a visualizerFile is specified, showDisplayString will enable the display string. Turning this option on can cause slower performance during debugging.", "c_cpp.debuggers.environment.description": { "message": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", - "comment": "{Locked=\"[ { \\\"name\": \\\"\"} {Locked=\"\\\", \\\"value\\\": \\\"\"} {Locked=\"\\\" } ]\"} {Locked=\"[ { \\\"\"} {Locked=\"\\\": \\\"\"} {Locked=\"\\\" } ]\"}" + "comment": [ + "{Locked=\"[ { \\\"name\": \\\"\"} {Locked=\"\\\", \\\"value\\\": \\\"\"} {Locked=\"\\\" } ]\"} {Locked=\"[ { \\\"\"} {Locked=\"\\\": \\\"\"} {Locked=\"\\\" } ]\"}" + ] }, "c_cpp.debuggers.envFile.description": "Absolute path to a file containing environment variable definitions. This file has key value pairs separated by an equals sign per line. E.g. KEY=VALUE.", "c_cpp.debuggers.additionalSOLibSearchPath.description": "Semicolon separated list of directories to use to search for .so files. Example: \"c:\\dir1;c:\\dir2\".", From ab79eedf6fc81d3f02000e5ef0833a0d771e4bb2 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Mon, 21 Apr 2025 17:20:19 -0700 Subject: [PATCH 24/33] Localization update (#13540) * Localization - Translated Strings * Fixes. --- .../LanguageServer/configurations.i18n.json | 1 + Extension/i18n/chs/ui/settings.html.i18n.json | 4 +-- .../LanguageServer/configurations.i18n.json | 1 + Extension/i18n/cht/ui/settings.html.i18n.json | 4 +-- .../LanguageServer/configurations.i18n.json | 1 + Extension/i18n/csy/ui/settings.html.i18n.json | 4 +-- .../LanguageServer/configurations.i18n.json | 1 + Extension/i18n/deu/ui/settings.html.i18n.json | 4 +-- .../LanguageServer/configurations.i18n.json | 1 + Extension/i18n/esn/ui/settings.html.i18n.json | 4 +-- .../LanguageServer/configurations.i18n.json | 1 + Extension/i18n/fra/ui/settings.html.i18n.json | 4 +-- .../LanguageServer/configurations.i18n.json | 1 + Extension/i18n/ita/ui/settings.html.i18n.json | 4 +-- .../LanguageServer/configurations.i18n.json | 1 + Extension/i18n/jpn/ui/settings.html.i18n.json | 4 +-- .../LanguageServer/configurations.i18n.json | 1 + Extension/i18n/kor/src/common.i18n.json | 2 +- Extension/i18n/kor/src/expand.i18n.json | 4 +-- Extension/i18n/kor/src/main.i18n.json | 2 +- .../i18n/kor/src/nativeStrings.i18n.json | 36 +++++++++---------- Extension/i18n/kor/src/platform.i18n.json | 2 +- Extension/i18n/kor/ui/settings.html.i18n.json | 18 +++++----- .../LanguageServer/configurations.i18n.json | 1 + Extension/i18n/plk/ui/settings.html.i18n.json | 4 +-- .../LanguageServer/configurations.i18n.json | 1 + Extension/i18n/ptb/ui/settings.html.i18n.json | 4 +-- .../LanguageServer/configurations.i18n.json | 1 + Extension/i18n/rus/ui/settings.html.i18n.json | 4 +-- Extension/i18n/trk/package.i18n.json | 2 +- .../LanguageServer/configurations.i18n.json | 1 + Extension/i18n/trk/ui/settings.html.i18n.json | 4 +-- 32 files changed, 70 insertions(+), 57 deletions(-) diff --git a/Extension/i18n/chs/src/LanguageServer/configurations.i18n.json b/Extension/i18n/chs/src/LanguageServer/configurations.i18n.json index e619310f5..a2a854e4c 100644 --- a/Extension/i18n/chs/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/chs/src/LanguageServer/configurations.i18n.json @@ -14,6 +14,7 @@ "cannot.find": "无法找到: {0}", "cannot.resolve.compiler.path": "输入无效,无法解析编译器路径", "path.is.not.a.file": "路径不是文件: {0}", + "wrapped.with.quotes": "Do not add extra quotes around paths.", "path.is.not.a.directory": "路径不是目录: {0}", "duplicate.name": "{0} 重复。配置名称应是唯一的。", "multiple.paths.not.allowed": "不允许使用多个路径。", diff --git a/Extension/i18n/chs/ui/settings.html.i18n.json b/Extension/i18n/chs/ui/settings.html.i18n.json index 27c9452ad..742da60e7 100644 --- a/Extension/i18n/chs/ui/settings.html.i18n.json +++ b/Extension/i18n/chs/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "如果为 {0} (或已勾选),则标记分析器将仅分析在 {1} 中由源文件直接或间接包含的代码文件。如果为 {2} (或未选中),标记分析器将分析在 {3} 列表内指定路径中找到的所有代码文件。", "database.filename": "浏览: 数据库文件名", "database.filename.description": "所生成的符号数据库的路径。这指示扩展将标记分析器的符号数据库保存在工作区默认存储位置以外的其他位置。如果指定了相对路径,则它将相对于工作区的默认存储位置(而不是工作区文件夹本身)。{0} 变量可用于指定相对于工作区文件夹的路径(例如 {1})。", - "recursiveIncludes.reduce": "Recursive includes: reduce", + "recursiveIncludes.reduce": "递归包括: 缩减", "recursiveIncludes.reduce.description": "设置为 {0} 可将提供给 IntelliSense 的递归包含路径数减少到仅限当前由 #include 语句引用的路径。这需要首先分析文件以确定包含哪些文件。设置为 {1} 可将所有递归包含路径提供给 IntelliSense。当涉及到大量递归包含路径时,减少递归包含路径的数量可能会提高 IntelliSense 性能。如果不减少递归包含路径的数量,则可以通过避免需要分析文件以确定要提供的包含路径来提高 IntelliSense 性能。", "recursiveIncludes.priority": "递归包括: 优先级", "recursiveIncludes.priority.description": "递归包含路径的优先级。如果设置为 {0},则将在系统包含路径之前搜索递归包含路径。如果设置为 {1},则将在系统包含路径之后搜索递归包含路径。", - "recursiveIncludes.order": "Recursive includes: order", + "recursiveIncludes.order": "递归包括: 顺序", "recursiveIncludes.order.description": "搜索递归包含路径下子目录的顺序。" } \ No newline at end of file diff --git a/Extension/i18n/cht/src/LanguageServer/configurations.i18n.json b/Extension/i18n/cht/src/LanguageServer/configurations.i18n.json index f34fb3277..ab3ad8dec 100644 --- a/Extension/i18n/cht/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/cht/src/LanguageServer/configurations.i18n.json @@ -14,6 +14,7 @@ "cannot.find": "找不到: {0}", "cannot.resolve.compiler.path": "輸入無效,無法解析編譯器路徑", "path.is.not.a.file": "路徑不是檔案: {0}", + "wrapped.with.quotes": "Do not add extra quotes around paths.", "path.is.not.a.directory": "路徑不是目錄: {0}", "duplicate.name": "{0} 重複。組態名稱應該是唯一的。", "multiple.paths.not.allowed": "不允許使用多個路徑。", diff --git a/Extension/i18n/cht/ui/settings.html.i18n.json b/Extension/i18n/cht/ui/settings.html.i18n.json index f5b50e708..8cabb918a 100644 --- a/Extension/i18n/cht/ui/settings.html.i18n.json +++ b/Extension/i18n/cht/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "若為 {0} (或已選取),標籤剖析器只會剖析 {1} 中原始程式檔直接或間接包含的程式碼檔。若為 {2} (或未選取),標籤剖析器會剖析在 {3} 清單中的指定路徑找到的所有程式碼檔。", "database.filename": "瀏覽: 資料庫檔案名稱", "database.filename.description": "產生符號資料庫路徑。這會指示延伸模組將標籤剖析器的符號資料庫儲存在工作區預設儲存位置以外的某處。如果指定了相對路徑,就會是相對於工作區預設儲存位置 (非工作區資料夾本身) 的路徑。{0} 變數可用於指定相對於工作區資料夾的路徑 (例如 {1})。", - "recursiveIncludes.reduce": "Recursive includes: reduce", + "recursiveIncludes.reduce": "遞迴包含: 減少", "recursiveIncludes.reduce.description": "設定為 {0},可使 IntelliSense 僅提供目前由 #include 陳述式參考的遞迴包含路徑。這需要先剖析檔案,以確定包含哪些檔案。設定為 {1} 以將所有遞迴包含路徑提供給 IntelliSense。當涉及非常大量的遞迴包含路徑時,減少遞迴包含路徑數目可能會改善 IntelliSense 的效能。不減少遞迴包含路徑的數量,可避免需要剖析檔案以決定要提供哪些包含路徑,從而 IntelliSense 效能。", "recursiveIncludes.priority": "遞迴包含: 優先順序", "recursiveIncludes.priority.description": "遞迴包含路徑的優先順序。如果設定為 {0},則會在系統包含路徑之前搜尋遞迴包含路徑。如果設定為 {1},則會在系統包含路徑之後搜尋遞迴包含路徑。", - "recursiveIncludes.order": "Recursive includes: order", + "recursiveIncludes.order": "遞迴包含: 順序", "recursiveIncludes.order.description": "搜尋遞迴包含路徑下子目錄的順序。" } \ No newline at end of file diff --git a/Extension/i18n/csy/src/LanguageServer/configurations.i18n.json b/Extension/i18n/csy/src/LanguageServer/configurations.i18n.json index 29757d38e..dbfbc3142 100644 --- a/Extension/i18n/csy/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/csy/src/LanguageServer/configurations.i18n.json @@ -14,6 +14,7 @@ "cannot.find": "Nepovedlo se najít: {0}", "cannot.resolve.compiler.path": "Neplatný vstup, nedá se přeložit cesta ke kompilátoru.", "path.is.not.a.file": "Cesta není soubor: {0}", + "wrapped.with.quotes": "Do not add extra quotes around paths.", "path.is.not.a.directory": "Cesta není adresář: {0}", "duplicate.name": "{0} je duplicitní. Název konfigurace by měl být jedinečný.", "multiple.paths.not.allowed": "Více cest není povoleno.", diff --git a/Extension/i18n/csy/ui/settings.html.i18n.json b/Extension/i18n/csy/ui/settings.html.i18n.json index 4db56e852..7e2b47aec 100644 --- a/Extension/i18n/csy/ui/settings.html.i18n.json +++ b/Extension/i18n/csy/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "Když se nastaví na {0} (nebo zaškrtne), analyzátor značek bude parsovat jen soubory kódů, které přímo nebo nepřímo zahrnul zdrojový soubor v {1}. Když se nastaví na {2} (nebo nezaškrtne), analyzátor značek bude parsovat všechny soubory kódů nalezené na cestách zadaných v seznamu {3}.", "database.filename": "Procházení: název souboru databáze", "database.filename.description": "Cesta k vygenerované databázi symbolů. Na základě této možnosti bude rozšíření ukládat databázi symbolů analyzátoru značek někam jinam než do výchozího umístění úložiště pracovního prostoru. Pokud se zadá relativní cesta, bude relativní vzhledem k výchozímu umístění úložiště pracovního prostoru, nikoli k samotné složce pracovního prostoru. Pokud chcete zadat cestu relativní ke složce pracovního prostoru (třeba {1}), dá se použít proměnná {0}.", - "recursiveIncludes.reduce": "Recursive includes: reduce", + "recursiveIncludes.reduce": "Rekurzivní soubory k zahrnutí: snížení", "recursiveIncludes.reduce.description": "Nastavením na {0} se počet cest rekurzivních souborů k zahrnutí poskytovaných funkci IntelliSense vždy sníží pouze na ty cesty, na které aktuálně odkazují příkazy #include. K tomu je potřeba nejdříve analyzovat soubory a zjistit, které soubory jsou zahrnuty. Nastavením na {1} poskytnete funkci IntelliSense všechny cesty rekurzivních souborů k zahrnutí. Snížení počtu cest rekurzivních souborů k zahrnutí může zlepšit výkon funkce IntelliSense, pokud se jedná o velmi velký počet cest souborů k zahrnutí. Nesnižování počtu cest rekurzivních souborů k zahrnutí může zlepšit výkon funkce IntelliSense, protože se vyhnete nutnosti analyzovat soubory a určit, které cesty souborů k zahrnutí je třeba poskytnout.", "recursiveIncludes.priority": "Rekurzivní soubory k zahrnutí: priorita", "recursiveIncludes.priority.description": "Priorita cest rekurzivních souborů zahrnutí Pokud je nastavená hodnota {0}, budou se cesty rekurzivních souborů k zahrnutí prohledávat před cestami systémových souborů k zahrnutí. Pokud je nastavená hodnota {1}, budou se cesty rekurzivních souborů k zahrnutí prohledávat po cestách systémových souborů k zahrnutí.", - "recursiveIncludes.order": "Recursive includes: order", + "recursiveIncludes.order": "Rekurzivní soubory k zahrnutí: pořadí", "recursiveIncludes.order.description": "Pořadí, ve kterém se prohledávají podadresáře v cestách rekurzivních souborů k zahrnutí." } \ No newline at end of file diff --git a/Extension/i18n/deu/src/LanguageServer/configurations.i18n.json b/Extension/i18n/deu/src/LanguageServer/configurations.i18n.json index b61b045b3..75dbd822b 100644 --- a/Extension/i18n/deu/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/deu/src/LanguageServer/configurations.i18n.json @@ -14,6 +14,7 @@ "cannot.find": "Nicht gefunden: {0}", "cannot.resolve.compiler.path": "Ungültige Eingabe, Compilerpfad kann nicht aufgelöst werden.", "path.is.not.a.file": "Der Pfad ist keine Datei: {0}", + "wrapped.with.quotes": "Do not add extra quotes around paths.", "path.is.not.a.directory": "Der Pfad ist kein Verzeichnis: {0}", "duplicate.name": "\"{0}\" ist ein Duplikat. Der Konfigurationsname muss eindeutig sein.", "multiple.paths.not.allowed": "Mehrere Pfade sind nicht zulässig.", diff --git a/Extension/i18n/deu/ui/settings.html.i18n.json b/Extension/i18n/deu/ui/settings.html.i18n.json index 948077bfe..c46706107 100644 --- a/Extension/i18n/deu/ui/settings.html.i18n.json +++ b/Extension/i18n/deu/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "Wenn {0} (oder aktiviert) ist, analysiert der Tagparser nur Codedateien, die direkt oder indirekt von einer Quelldatei in {1} eingeschlossen wurden. Wenn {2} (oder nicht aktiviert) ist, analysiert der Tagparser alle Codedateien, die in den in der {3} Liste angegebenen Pfaden gefunden wurden.", "database.filename": "Durchsuchen: Datenbankdateiname", "database.filename.description": "Der Pfad zur generierten Symboldatenbank. Hiermit wird die Erweiterung angewiesen, die Symboldatenbank des Tagparsers an einem anderen Speicherort als dem Standardspeicherort des Arbeitsbereichs zu speichern. Bei Angabe eines relativen Pfads wird dieser relativ zum Standardspeicherort des Arbeitsbereichs und nicht zum Arbeitsbereichsordner selbst erstellt. Die Variable „{0}“ kann verwendet werden, um einen Pfad relativ zum Arbeitsbereichsordner (Beispiel: {1}) anzugeben.", - "recursiveIncludes.reduce": "Recursive includes: reduce", + "recursiveIncludes.reduce": "Rekursive Umfasst: Reduzieren", "recursiveIncludes.reduce.description": "Legen Sie diese Option auf „{0}“ fest, um die Anzahl der rekursiven Includepfade, die für IntelliSense bereitgestellt werden, auf die Pfade zu verringern, auf die derzeit von #include-Anweisungen verwiesen wird. Dazu müssen zuerst die Dateien analysiert werden, um zu bestimmen, welche Dateien eingeschlossen werden. Legen Sie diese Option auf „{1}“ fest, um alle rekursiven Includepfade für IntelliSense bereitzustellen. Wenn Sie die Anzahl rekursiver Includepfade verringern, kann sich die Leistung von IntelliSense verbessern, wenn eine sehr große Anzahl rekursiver Includepfade betroffen ist. Wenn Sie die Anzahl rekursiver Includepfade nicht verringern, kann die Leistung von IntelliSense verbessert werden, da die Dateien nicht analysiert werden müssen, um zu bestimmen, welche Includepfade bereitgestellt werden sollen.", "recursiveIncludes.priority": "„Rekursiv“ umfasst: Priorität", "recursiveIncludes.priority.description": "Die Priorität rekursiver Includepfade. Wenn sie auf „{0}“ festgelegt ist, werden die rekursiven Includepfade vor den systemseitigen Includepfaden durchsucht. Wenn sie auf „{1}“ festgelegt ist, werden die rekursiven Includepfade nach den systemseitigen Includepfaden durchsucht.", - "recursiveIncludes.order": "Recursive includes: order", + "recursiveIncludes.order": "Rekursiv umfasst: Reihenfolge", "recursiveIncludes.order.description": "Die Reihenfolge, in der Unterverzeichnisse unter rekursiven Includepfaden durchsucht werden." } \ No newline at end of file diff --git a/Extension/i18n/esn/src/LanguageServer/configurations.i18n.json b/Extension/i18n/esn/src/LanguageServer/configurations.i18n.json index 9e8abce37..dd3789012 100644 --- a/Extension/i18n/esn/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/esn/src/LanguageServer/configurations.i18n.json @@ -14,6 +14,7 @@ "cannot.find": "No se encuentra {0}", "cannot.resolve.compiler.path": "Entrada no válida. No se puede resolver la ruta de acceso del compilador.", "path.is.not.a.file": "La ruta de acceso no es un archivo: {0}", + "wrapped.with.quotes": "Do not add extra quotes around paths.", "path.is.not.a.directory": "La ruta de acceso no es un directorio: {0}", "duplicate.name": "{0} es un duplicado. El nombre de la configuración debe ser único.", "multiple.paths.not.allowed": "No se permiten varias rutas de acceso.", diff --git a/Extension/i18n/esn/ui/settings.html.i18n.json b/Extension/i18n/esn/ui/settings.html.i18n.json index 6e8c69516..f187f684e 100644 --- a/Extension/i18n/esn/ui/settings.html.i18n.json +++ b/Extension/i18n/esn/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "Cuando {0} (o activado), el analizador de etiquetas solo analizará los archivos de código que un archivo de código fuente haya incluido directa o indirectamente en {1}. Cuando {2} (o no está activado), el analizador de etiquetas analizará todos los archivos de código que se encuentran en las rutas de acceso especificadas en la lista de {3} .", "database.filename": "Examinar: nombre del archivo de base de datos", "database.filename.description": "La ruta de acceso a la base de datos de símbolos generada. Esto indica a la extensión que guarde la base de datos de símbolos del analizador de etiquetas en una ubicación distinta de la ubicación de almacenamiento predeterminada del área de trabajo. Si se especifica una ruta de acceso relativa, será relativa a la ubicación de almacenamiento predeterminada del área de trabajo, no a la carpeta del área de trabajo en sí. La variable {0} se puede usar para especificar una ruta de acceso relativa a la carpeta del área de trabajo (por ejemplo, {1}).", - "recursiveIncludes.reduce": "Recursive includes: reduce", + "recursiveIncludes.reduce": "Inclusiones recursivas: orden: reducción", "recursiveIncludes.reduce.description": "Establézcalo en {0} para reducir siempre el número de rutas de inclusión recursivas proporcionadas a IntelliSense solo a aquellas rutas a las que hacen referencia actualmente las instrucciones #include. Esto requiere primero analizar los archivos para determinar qué archivos se incluyen. Establézcalo en {1} para proporcionar todas las rutas de inclusión recursivas a IntelliSense. Reducir el número de rutas de inclusiones recursivas puede mejorar el rendimiento de IntelliSense cuando hay un gran número de rutas de inclusión recursivas involucradas. No reducir el número de rutas de inclusión recursivas puede mejorar el rendimiento de IntelliSense al evitar la necesidad de analizar archivos para determinar qué rutas de inclusión proporcionar.", "recursiveIncludes.priority": "Inclusión recursiva: prioridad", "recursiveIncludes.priority.description": "La prioridad de las rutas de acceso de inclusión recursivas. Si se establece en {0}, se buscarán las rutas de inclusión recursivas antes que las rutas de inclusión del sistema. Si se establece en {1}, se buscarán las rutas de inclusión recursivas después de las rutas de inclusión del sistema.", - "recursiveIncludes.order": "Recursive includes: order", + "recursiveIncludes.order": "Inclusiones recursivas: orden", "recursiveIncludes.order.description": "El orden en el que se buscan los subdirectorios en las rutas de acceso de inclusión recursivas." } \ No newline at end of file diff --git a/Extension/i18n/fra/src/LanguageServer/configurations.i18n.json b/Extension/i18n/fra/src/LanguageServer/configurations.i18n.json index c3994eb97..b0b131957 100644 --- a/Extension/i18n/fra/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/fra/src/LanguageServer/configurations.i18n.json @@ -14,6 +14,7 @@ "cannot.find": "{0} introuvable", "cannot.resolve.compiler.path": "Entrée non valide, impossible de résoudre le chemin du compilateur", "path.is.not.a.file": "Le chemin n'est pas un fichier : {0}", + "wrapped.with.quotes": "Do not add extra quotes around paths.", "path.is.not.a.directory": "Le chemin n'est pas un répertoire : {0}", "duplicate.name": "{0} est dupliqué. Le nom de configuration doit être unique.", "multiple.paths.not.allowed": "Il est interdit d’utiliser plusieurs chemin d’accès.", diff --git a/Extension/i18n/fra/ui/settings.html.i18n.json b/Extension/i18n/fra/ui/settings.html.i18n.json index 576abe7bf..616c1d9e2 100644 --- a/Extension/i18n/fra/ui/settings.html.i18n.json +++ b/Extension/i18n/fra/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "Lorsque {0} (ou activé), l’analyseur de balise analyse uniquement les fichiers de code qui ont été inclus directement ou indirectement par un fichier source dans {1}. Lorsque {2} (ou non activé), l’analyseur de balise analyse tous les fichiers de code trouvés dans les chemins d’accès spécifiés dans la liste {3} .", "database.filename": "Parcourir : nom de fichier de base de données", "database.filename.description": "Chemin de la base de données de symboles générée. Cela indique à l'extension d'enregistrer la base de données de symboles de l'analyseur de balises à un emplacement autre que l'emplacement de stockage par défaut de l'espace de travail. Si un chemin relatif est spécifié, il est relatif à l'emplacement de stockage par défaut de l'espace de travail et non au dossier d'espace de travail lui-même. La variable {0} peut être utilisée pour spécifier un chemin relatif au dossier d'espace de travail (par ex., {1}).", - "recursiveIncludes.reduce": "Recursive includes: reduce", + "recursiveIncludes.reduce": "Inclusions récursives : réduire", "recursiveIncludes.reduce.description": "Affectez la valeur {0} pour toujours réduire le nombre de chemins d’accès d’inclusion récursive fournis à IntelliSense uniquement aux chemins actuellement référencés par des instructions #include. Pour cela, vous devez d’abord analyser les fichiers pour déterminer lesquels sont inclus. Affectez la valeur {1} pour fournir tous les chemins d’accès d’inclusion récursive à IntelliSense. La réduction du nombre de chemins d’accès d’inclusion récursive peut améliorer les performances d’IntelliSense lorsque de très nombreux chemins d’accès d’inclusion récursive sont impliqués. Ne pas réduire le nombre de chemins d’accès d’inclusion récursive peut améliorer les performances d’IntelliSense en évitant la nécessité d’analyser les fichiers pour déterminer quels chemins d’accès d’inclusion fournir.", "recursiveIncludes.priority": "Inclusions récursives : priorité", "recursiveIncludes.priority.description": "Priorité des chemins d’accès d’inclusion récursive. Si la valeur est {0}, les chemins d’accès d’inclusion récursive seront recherchés avant les chemins d’accès d’inclusion système. Si la valeur est {1}, les chemins d’accès d’inclusion récursive seront recherchés après les chemins d’accès d’inclusion système.", - "recursiveIncludes.order": "Recursive includes: order", + "recursiveIncludes.order": "Inclusions récursives : trier", "recursiveIncludes.order.description": "Ordre dans lequel les sous-répertoires sous récursifs incluent des chemins d’accès sont recherchés." } \ No newline at end of file diff --git a/Extension/i18n/ita/src/LanguageServer/configurations.i18n.json b/Extension/i18n/ita/src/LanguageServer/configurations.i18n.json index 4722976d4..9ff2af2c3 100644 --- a/Extension/i18n/ita/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/ita/src/LanguageServer/configurations.i18n.json @@ -14,6 +14,7 @@ "cannot.find": "Non è possibile trovare: {0}", "cannot.resolve.compiler.path": "Input non valido. Non è possibile risolvere il percorso del compilatore", "path.is.not.a.file": "Il percorso non è un file: {0}", + "wrapped.with.quotes": "Do not add extra quotes around paths.", "path.is.not.a.directory": "Il percorso non è una directory: {0}", "duplicate.name": "{0} è duplicato. Il nome della configurazione deve essere univoco.", "multiple.paths.not.allowed": "Più percorsi non sono consentiti.", diff --git a/Extension/i18n/ita/ui/settings.html.i18n.json b/Extension/i18n/ita/ui/settings.html.i18n.json index b56f3fb49..fe401fe7a 100644 --- a/Extension/i18n/ita/ui/settings.html.i18n.json +++ b/Extension/i18n/ita/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "Quando è impostato su {0} (o selezionato), il parser tag analizzerà solo i file di codice che sono stati inclusi direttamente o indirettamente da un file di origine in {1}. Quando è impostato su {2} (o non è selezionato), il parser tag analizzerà tutti i file di codice trovati nei percorsi specificati nell'elenco di {3}.", "database.filename": "Sfoglia: nome del file di database", "database.filename.description": "Percorso del database dei simboli generato. Indica all'estensione di salvare il database dei simboli del parser di tag in una posizione diversa da quella di archiviazione predefinita dell'area di lavoro. Se viene specificato un percorso relativo, sarà relativo alla posizione di archiviazione predefinita dell'area di lavoro e non alla cartella dell'area di lavoro. È possibile usare la variabile {0} per specificare un percorso relativo alla cartella dell'area di lavoro, ad esempio {1}.", - "recursiveIncludes.reduce": "Recursive includes: reduce", + "recursiveIncludes.reduce": "Inclusioni ricorsive: riduzione", "recursiveIncludes.reduce.description": "Imposta su {0} per ridurre il numero di percorsi di inclusione ricorsivi forniti a IntelliSense, limitandoli solo ai percorsi attualmente referenziati da istruzioni #include. Per determinare quali file sono inclusi, è necessario prima analizzare i file. Imposta su {1} per fornire tutti i percorsi di inclusione ricorsivi a IntelliSense. La riduzione del numero di percorsi di inclusione ricorsivi può migliorare le prestazioni di IntelliSense in caso di un numero molto elevato di percorsi di inclusione ricorsivi. Non ridurre il numero di percorsi di inclusione ricorsivi può migliorare le prestazioni di IntelliSense evitando la necessità di analizzare i file per determinare quali percorsi di inclusione fornire.", "recursiveIncludes.priority": "Inclusioni ricorsive: priorità", "recursiveIncludes.priority.description": "La priorità dei percorsi di inclusione ricorsivi. Se impostato su {0}, i percorsi di inclusione ricorsivi verranno cercati prima dei percorsi di inclusione di sistema. Se impostato su {1}, i percorsi di inclusione ricorsivi verranno cercati dopo i percorsi di inclusione di sistema.", - "recursiveIncludes.order": "Recursive includes: order", + "recursiveIncludes.order": "Inclusioni ricorsive: ordine", "recursiveIncludes.order.description": "L'ordine in cui vengono cercate le sottodirectory nei percorsi di inclusione ricorsivi." } \ No newline at end of file diff --git a/Extension/i18n/jpn/src/LanguageServer/configurations.i18n.json b/Extension/i18n/jpn/src/LanguageServer/configurations.i18n.json index c69388d17..aab707053 100644 --- a/Extension/i18n/jpn/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/jpn/src/LanguageServer/configurations.i18n.json @@ -14,6 +14,7 @@ "cannot.find": "{0} が見つかりません。", "cannot.resolve.compiler.path": "無効な入力です。コンパイラ パスを解決できません", "path.is.not.a.file": "パスがファイルではありません: {0}", + "wrapped.with.quotes": "Do not add extra quotes around paths.", "path.is.not.a.directory": "パスがディレクトリではありません: {0}", "duplicate.name": "{0} が重複しています。構成名は一意である必要があります。", "multiple.paths.not.allowed": "複数のパスは使用できません。", diff --git a/Extension/i18n/jpn/ui/settings.html.i18n.json b/Extension/i18n/jpn/ui/settings.html.i18n.json index 329e54c0a..7ba1321b3 100644 --- a/Extension/i18n/jpn/ui/settings.html.i18n.json +++ b/Extension/i18n/jpn/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "{0} (またはチェックボックスがオン) の場合、タグ パーサーは、{1} のソース ファイルによって直接的または間接的にインクルードされたコード ファイルのみを解析します。{2} (またはチェック ボックスがオフ) の場合、タグ パーサーは、{3} の一覧に指定されたパスで見つかったすべてのコード ファイルを解析します。", "database.filename": "参照: データベース ファイル名", "database.filename.description": "生成されたシンボル データベースへのパスです。これは、タグ パーサーのシンボル データベースをワークスペースの既定のストレージの場所以外に保存するように拡張機能に指示します。相対パスを指定した場合、ワークスペース フォルダー自体ではなく、ワークスペースの既定のストレージの場所に対する相対パスになります。{0} 変数を使用して、ワークスペース フォルダーに対する相対パスを指定することもできます (例: {1})。", - "recursiveIncludes.reduce": "Recursive includes: reduce", + "recursiveIncludes.reduce": "再帰的インクルード: 縮小", "recursiveIncludes.reduce.description": "{0} に設定すると、IntelliSense に提供される再帰インクルード パスの数は #include ステートメントによって現在参照されているパスのみに減らされます。これには、まずファイルを解析して、どのファイルが含まれているかを判断する必要があります。すべての再帰インクルード パスを IntelliSense に提供するには、{1} に設定します。非常に多数の再帰インクルード パスが関係している場合、再帰インクルード パスの数を減らすと、IntelliSense のパフォーマンスが向上する可能性があります。再帰インクルード パスの数を減らさないことで、どのインクルード パスを提供するかを判断するためのファイル解析が不要になり、IntelliSense のパフォーマンスが向上する場合があります。", "recursiveIncludes.priority": "再帰インクルード: 優先度", "recursiveIncludes.priority.description": "再帰インクルード パスの優先順位。{0} に設定すると、再帰インクルード パスはシステム インクルード パスの前に検索されます。{1} に設定すると、再帰インクルード パスはシステム インクルード パスの後に検索されます。", - "recursiveIncludes.order": "Recursive includes: order", + "recursiveIncludes.order": "再帰的インクルード: 順序", "recursiveIncludes.order.description": "再帰インクルード パスの下のサブディレクトリが検索される順序。" } \ No newline at end of file diff --git a/Extension/i18n/kor/src/LanguageServer/configurations.i18n.json b/Extension/i18n/kor/src/LanguageServer/configurations.i18n.json index 05e0af092..cc41f0652 100644 --- a/Extension/i18n/kor/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/kor/src/LanguageServer/configurations.i18n.json @@ -14,6 +14,7 @@ "cannot.find": "찾을 수 없음: {0}", "cannot.resolve.compiler.path": "입력이 잘못되었습니다. 컴파일러 경로를 확인할 수 없습니다.", "path.is.not.a.file": "경로가 파일이 아님: {0}", + "wrapped.with.quotes": "Do not add extra quotes around paths.", "path.is.not.a.directory": "경로가 디렉터리가 아님: {0}", "duplicate.name": "{0}은(는) 중복됩니다. 구성 이름은 고유해야 합니다.", "multiple.paths.not.allowed": "여러 경로는 허용되지 않습니다.", diff --git a/Extension/i18n/kor/src/common.i18n.json b/Extension/i18n/kor/src/common.i18n.json index 353448b62..c96c69354 100644 --- a/Extension/i18n/kor/src/common.i18n.json +++ b/Extension/i18n/kor/src/common.i18n.json @@ -6,7 +6,7 @@ { "failed.to.parse.json": "주석 또는 후행 쉼표로 인해 json 파일을 구문 분석하지 못했습니다.", "extension.not.ready": "C/C++ 확장을 아직 설치하고 있습니다. 자세한 내용은 출력 창을 참조하세요.", - "refer.read.me": "문제 해결 정보를 보려면 {0}을(를) 참조하세요. 문제는 {1}에서 만들 수 있습니다.", + "refer.read.me": "문제 해결 정보를 보려면 {0} 을(를) 참조하세요. 문제는 {1} 에서 만들 수 있습니다.", "process.exited": "프로세스가 {0} 코드로 종료됨", "process.succeeded": "프로세스가 성공적으로 실행되었습니다.", "killing.process": "프로세스 {0} 종료 중", diff --git a/Extension/i18n/kor/src/expand.i18n.json b/Extension/i18n/kor/src/expand.i18n.json index fb52f660c..0950740f3 100644 --- a/Extension/i18n/kor/src/expand.i18n.json +++ b/Extension/i18n/kor/src/expand.i18n.json @@ -5,8 +5,8 @@ // Do not edit this file. It is machine generated. { "max.recursion.reached": "최대 문자열 확장 재귀에 도달했습니다. 순환 참조가 발생할 수 있습니다.", - "invalid.var.reference": "{1} 문자열에 잘못된 변수 참조 {0}이(가) 있습니다.", - "env.var.not.found": "환경 변수 {0}을(를) 찾을 수 없습니다.", + "invalid.var.reference": "{1} 문자열에 잘못된 변수 참조 {0} 이(가) 있습니다.", + "env.var.not.found": "환경 변수 {0} 을(를) 찾을 수 없습니다.", "commands.not.supported": "{0} 문자열에는 명령이 지원되지 않습니다.", "exception.executing.command": "{1} {2} 문자열에 대해 {0} 명령을 실행하는 동안 예외가 발생했습니다." } \ No newline at end of file diff --git a/Extension/i18n/kor/src/main.i18n.json b/Extension/i18n/kor/src/main.i18n.json index c6a8aeb7f..18730c64c 100644 --- a/Extension/i18n/kor/src/main.i18n.json +++ b/Extension/i18n/kor/src/main.i18n.json @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "macos.version.deprecated": "{0}보다 최신 버전의 C/C++ 확장에는 macOS 버전 {1} 이상이 필요합니다.", + "macos.version.deprecated": "{0} 보다 최신 버전의 C/C++ 확장에는 macOS 버전 {1} 이상이 필요합니다.", "intellisense.disabled": "IntelliSenseEngine이 비활성화되었습니다.", "more.info.button": "더 많은 정보", "ignore.button": "무시", diff --git a/Extension/i18n/kor/src/nativeStrings.i18n.json b/Extension/i18n/kor/src/nativeStrings.i18n.json index ae6d678c2..8eecc2a90 100644 --- a/Extension/i18n/kor/src/nativeStrings.i18n.json +++ b/Extension/i18n/kor/src/nativeStrings.i18n.json @@ -25,8 +25,8 @@ "request_wait_error": "요청을 기다리는 동안 예기치 않은 오류 발생: {0}", "errored_with": "다음으로 인해 {0} 오류 발생: {1}", "file_open_failed": "{0} 파일을 열지 못했습니다.", - "default_query_failed": "{0}의 기본 포함 경로 및 정의를 쿼리하지 못했습니다.", - "failed_call": "{0}을(를) 호출하지 못했습니다.", + "default_query_failed": "{0} 의 기본 포함 경로 및 정의를 쿼리하지 못했습니다.", + "failed_call": "{0} 을(를) 호출하지 못했습니다.", "quick_info_failed": "요약 정보 작업 실패: {0}", "create_intellisense_client_failed": "IntelliSense 클라이언트를 만들지 못함: {0}", "intellisense_spawn_failed": "IntelliSense 프로세스를 생성하지 못했음: {0}", @@ -38,14 +38,14 @@ "reset_timestamp_failed": "중단하는 동안 타임스탬프를 다시 설정하지 못했습니다. 오류 = {0}: {1}", "update_timestamp_failed": "타임스탬프를 업데이트할 수 없습니다. 오류 = {0}: {1}", "finalize_updates_failed": "파일 업데이트를 완료할 수 없습니다. 오류 = {0}: {1}", - "not_directory_with_mode": "{0}은(는) 디렉터리가 아닙니다(st_mode={1}).", - "retrieve_fs_info_failed": "{0}의 파일 시스템 정보를 검색할 수 없습니다. 오류 = {1}", - "not_directory": "{0}은(는) 디렉터리가 아닙니다.", + "not_directory_with_mode": "{0} 은(는) 디렉터리가 아닙니다(st_mode={1}).", + "retrieve_fs_info_failed": "{0} 의 파일 시스템 정보를 검색할 수 없습니다. 오류 = {1}", + "not_directory": "{0} 은(는) 디렉터리가 아닙니다.", "file_discovery_aborted": "파일 검색이 중단되었습니다.", "aborting_tag_parse": "{0} 및 종속성의 태그 구문 분석을 중단하는 중", "aborting_tag_parse_at_root": "루트에서 태그 구문 분석을 중단합니다.", "unable_to_retrieve_to_reset_timestamps": "타임스탬프를 다시 설정할 DB 레코드를 검색할 수 없습니다. 오류 = {0}", - "failed_to_reset_timestamps_for": "{0}에 대한 타임스탬프를 다시 설정하지 못했습니다. 오류 = {1}", + "failed_to_reset_timestamps_for": "{0} 에 대한 타임스탬프를 다시 설정하지 못했습니다. 오류 = {1}", "no_suitable_complier": "적합한 컴파일러를 찾을 수 없습니다. c_cpp_properties.json에서 \"compilerPath\"를 설정하세요.", "compiler_include_not_found": "컴파일러 포함 경로를 찾을 수 없음: {0}", "intellisense_not_responding": "IntelliSense 엔진이 응답하지 않습니다. 태그 파서를 대신 사용합니다.", @@ -55,13 +55,13 @@ "processing_folder_recursive": "폴더를 처리하는 중(재귀적): {0}", "file_exclude": "파일 제외: {0}", "search_exclude": "검색 제외: {0}", - "discovery_files_processed": "파일 검색 중: {0}개 파일 처리됨", + "discovery_files_processed": "파일 검색 중: {0} 개 파일 처리됨", "files_removed_from_database": "{0} 파일이 데이터베이스에서 제거되었습니다.", - "parsing_files_processed": "구문 분석하는 중: {0}개 파일이 처리됨", + "parsing_files_processed": "구문 분석 중: {0} 개 파일 처리됨", "shutting_down_intellisense": "IntelliSense 서버를 종료하는 중: {0}", "resetting_intellisense": "IntelliSense 서버를 다시 설정하는 중: {0}", "code_browsing_initialized": "코드 검색 서비스가 초기화되었습니다.", - "folder_will_be_indexed": "폴더: {0}이(가) 인덱싱됩니다.", + "folder_will_be_indexed": "폴더: {0} 이(가) 인덱싱됩니다.", "populate_include_completion_cache": "포함 완료 캐시를 채웁니다.", "discovering_files": "파일을 검색하는 중...", "done_discovering_files": "파일 검색을 완료했습니다.", @@ -85,13 +85,13 @@ "replaced_placeholder_file_record": "바뀐 자리 표시자 파일 레코드", "tag_parsing_file": "태그 구문 분석 파일: {0}", "tag_parsing_error": "태그 구문 분석 오류(기호를 찾을 수 없는 경우 무시할 수 있음):", - "reset_timestamp_for": "{0}에 대한 타임스탬프 다시 설정", + "reset_timestamp_for": "{0} 에 대한 타임스탬프 다시 설정", "remove_file_failed": "파일을 제거하지 못했음: {0}", "regex_parse_error": "Regex 구문 분석 오류 - vscode 패턴: {0}, regex: {1}, 오류 메시지: {2}", "terminating_child_process": "자식 프로세스를 종료하는 중: {0}", "still_alive_killing": "계속 활성화되어 있습니다. 종료하는 중...", "giving_up": "포기", - "not_exited_yet": "아직 종료되지 않았습니다. {0}밀리초 동안 일시 중지된 후 다시 시도합니다.", + "not_exited_yet": "아직 종료되지 않았습니다. {0} 밀리초 동안 일시 중지된 후 다시 시도합니다.", "failed_to_spawn_process": "프로세스를 생성하지 못했습니다. 오류: {0}({1})", "offering_completion": "완료 제공 중", "compiler_on_machine": "머신에 있는 컴파일러(경로: '{0}')에서 기본값을 가져오는 중입니다.", @@ -100,7 +100,7 @@ "intellisense_client_not_available_quick_info": "IntelliSense 클라이언트를 사용할 수 없습니다. 요약 정보에 태그 파서를 사용합니다.", "tag_parser_quick_info": "요약 정보에 태그 파서를 사용하는 중", "closing_communication_channel": "통신 채널을 닫는 중입니다.", - "sending_compilation_args": "{0}에 대한 컴파일 인수를 보내는 중", + "sending_compilation_args": "{0} 에 대한 컴파일 인수를 보내는 중", "include_label": "포함: {0}", "framework_label": "프레임워크: {0}", "define_label": "정의: {0}", @@ -138,7 +138,7 @@ "could_not_communicate_with_child_process": "자식 프로세스와 통신할 수 없습니다.", "arg_failed": "{0} 실패", "failed_to_set_flag": "{0} 플래그를 설정하지 못했습니다.", - "unable_to_create": "{0}을(를) 만들 수 없습니다.", + "unable_to_create": "{0} 을(를) 만들 수 없습니다.", "failed_to_set_stdout_flag": "stdin {0} 플래그를 설정하지 못했습니다.", "failed_to_set_stdin_flag": "stdout {0} 플래그를 설정하지 못했습니다.", "failed_to_set_stderr_flag": "stderr {0} 플래그를 설정하지 못했습니다.", @@ -147,10 +147,10 @@ "process_failed_to_run": "프로세스를 실행하지 못했습니다.", "compiler_in_compilerpath_not_found": "지정한 컴파일러를 찾을 수 없음: {0}", "config_data_invalid": "구성 데이터가 잘못됨, {0}", - "cmake_executable_not_found": "{0}에서 CMake 실행 파일을 찾을 수 없음", + "cmake_executable_not_found": "{0} 에서 CMake 실행 파일을 찾을 수 없음", "no_args_provider": "인수 공급자가 없음", "invalid_file_path": "잘못된 파일 경로 {0}", - "cant_create_intellisense_client_for": "{0}에 대한 IntelliSense 클라이언트를 만들 수 없음", + "cant_create_intellisense_client_for": "{0} 에 대한 IntelliSense 클라이언트를 만들 수 없음", "suffix_declaration": "선언", "suffix_type_alias": "형식 별칭", "fallback_to_32_bit_mode": "컴파일러가 64비트를 지원하지 않습니다. 32비트 intelliSenseMode로 대체하는 중입니다.", @@ -245,11 +245,11 @@ "multiple_locations_note": "여러 위치", "folder_tag": "폴더", "file_tag": "파일", - "compiler_default_language_standard_version_old": "컴파일러가 기본 언어 표준 버전 {0}을(를) 반환했습니다. 이 버전은 이전 버전이므로 새 버전 {1}을(를) 기본으로 사용하려고 합니다.", + "compiler_default_language_standard_version_old": "컴파일러가 기본 언어 표준 버전 {0} 을(를) 반환했습니다. 이 버전은 이전 버전이므로 새 버전 {1} 을(를) 기본으로 사용하려고 합니다.", "unexpected_output_from_clang_tidy": "clang-tidy에서 예기치 않은 출력: {0}. 예상: {1}.", "generate_doxygen_comment": "Doxygen 주석 생성", - "offer_create_declaration": "{1}에서 ‘{0}’의 선언 만들기", - "offer_create_definition": "{1}에서 ‘{0}’의 정의 만들기", + "offer_create_declaration": "{1} 에서 ‘{0}’의 선언 만들기", + "offer_create_definition": "{1} 에서 ‘{0}’의 정의 만들기", "function_definition_not_found": "'{0}'에 대한 함수 정의를 찾을 수 없습니다.", "cm_attributes": "특성", "cm_bases": "Bases", diff --git a/Extension/i18n/kor/src/platform.i18n.json b/Extension/i18n/kor/src/platform.i18n.json index 2bd9fa87a..f671df6ba 100644 --- a/Extension/i18n/kor/src/platform.i18n.json +++ b/Extension/i18n/kor/src/platform.i18n.json @@ -6,5 +6,5 @@ { "unknown.os.platform": "알 수 없는 OS 플랫폼", "missing.plist.productversion": "SystemVersion.plist에서 ProduceVersion을 가져올 수 없음", - "missing.darwin.systemversion.file": "{0}에서 SystemVersion.plist를 찾지 못했습니다." + "missing.darwin.systemversion.file": "{0} 에서 SystemVersion.plist를 찾지 못했습니다." } \ No newline at end of file diff --git a/Extension/i18n/kor/ui/settings.html.i18n.json b/Extension/i18n/kor/ui/settings.html.i18n.json index 76a69e7d8..6ac5401dd 100644 --- a/Extension/i18n/kor/ui/settings.html.i18n.json +++ b/Extension/i18n/kor/ui/settings.html.i18n.json @@ -17,7 +17,7 @@ "intellisense.configurations": "IntelliSense 구성", "intellisense.configurations.description": "이 편집기를 사용하여 기본 {0} 파일에 정의된 IntelliSense 설정을 편집합니다. 이 편집기에서 변경한 내용은 선택한 구성에만 적용됩니다. 한 번에 여러 구성을 편집하려면 {1}(으)로 이동합니다.", "configuration.name": "구성 이름", - "configuration.name.description": "구성을 식별하는 이름입니다. {0}, {1} 및 {2}은(는) 해당 플랫폼에서 자동으로 선택되는 구성의 특수 식별자입니다.", + "configuration.name.description": "구성을 식별하는 이름입니다. {0}, {1} 및 {2} 은(는) 해당 플랫폼에서 자동으로 선택되는 구성의 특수 식별자입니다.", "select.configuration.to.edit": "편집할 구성 세트를 선택합니다.", "add.configuration.button": "구성 추가", "configuration.name.input": "구성 이름...", @@ -28,15 +28,15 @@ "specify.a.compiler": "컴파일러 경로를 지정하거나 드롭다운 목록에서 검색된 컴파일러 경로를 선택합니다.", "no.compiler.paths.detected": "(검색된 컴파일러 경로가 없음)", "compiler.args": "컴파일러 인수", - "compiler.arguments": "사용된 포함 또는 정의를 수정하기 위한 컴파일러 인수입니다(예: {0}, {1} 등). 공백으로 구분된 추가 인수를 사용하는 인수는 배열에 별도의 인수로 입력해야 합니다(예: {2}의 경우 {3}을(를) 사용하세요).", + "compiler.arguments": "사용된 포함 또는 정의를 수정하기 위한 컴파일러 인수입니다(예: {0}, {1} 등). 공백으로 구분된 추가 인수를 사용하는 인수는 배열에 별도의 인수로 입력해야 합니다(예: {2} 의 경우 {3} 을(를) 사용하세요).", "one.argument.per.line": "줄당 하나의 인수입니다.", "intellisense.mode": "IntelliSense 모드", "intellisense.mode.description": "MSVC, gcc 또는 Clang의 플랫폼 및 아키텍처 변형에 매핑되는 사용할 IntelliSense 모드입니다. 설정되지 않거나 {0}(으)로 설정된 경우 확장에서 해당 플랫폼의 기본값을 선택합니다. Windows의 경우 기본값인 {1}(으)로 설정되고, Linux의 경우 기본값인 {2}(으)로 설정되며, macOS의 경우 기본값인 {3}(으)로 설정됩니다. {4} 모드를 재정의하려면 특정 IntelliSense 모드를 선택합니다. {5} 변형(예: {6})만 지정하는 IntelliSense 모드는 레거시 모드이며 호스트 플랫폼에 따라 {7} 변형으로 자동으로 변환됩니다.", "include.path": "경로 포함", - "include.path.description": "포함 경로는 소스 파일에 포함된 헤더 파일(예: {0})을 포함하는 폴더입니다. 포함된 헤더 파일을 검색하는 동안 사용할 IntelliSense 엔진의 경로 목록을 지정합니다. 이러한 경로 검색은 비재귀적입니다. 재귀적 검색을 나타내려면 {1}을(를) 지정합니다. 예를 들어 {2}은(는) 모든 하위 디렉터리를 검색하지만 {3}은(는) 그러지 않습니다. Visual Studio가 설치된 Windows를 사용하거나 {4} 설정에 컴파일러가 지정된 경우 이 목록에 시스템 포함 경로를 나열할 필요가 없습니다.", + "include.path.description": "포함 경로는 소스 파일에 포함된 헤더 파일(예: {0})을 포함하는 폴더입니다. 포함된 헤더 파일을 검색하는 동안 사용할 IntelliSense 엔진의 경로 목록을 지정합니다. 이러한 경로 검색은 비재귀적입니다. 재귀적 검색을 나타내려면 {1} 을(를) 지정합니다. 예를 들어 {2} 은(는) 모든 하위 디렉터리를 검색하지만 {3} 은(는) 그러지 않습니다. Visual Studio가 설치된 Windows를 사용하거나 {4} 설정에 컴파일러가 지정된 경우 이 목록에 시스템 포함 경로를 나열할 필요가 없습니다.", "one.include.path.per.line": "줄당 하나의 포함 경로입니다.", "defines": "정의", - "defines.description": "파일을 구문 분석하는 동안 사용할 IntelliSense 엔진의 전처리기 정의 목록입니다. 필요에 따라 {0}을(를) 사용하여 값(예: {1})을 설정할 수 있습니다.", + "defines.description": "파일을 구문 분석하는 동안 사용할 IntelliSense 엔진의 전처리기 정의 목록입니다. 필요에 따라 {0} 을(를) 사용하여 값(예: {1})을 설정할 수 있습니다.", "one.definition.per.line": "줄당 하나의 정의입니다.", "c.standard": "C 표준", "c.standard.description": "IntelliSense에 사용할 C 언어 표준의 버전입니다. 참고: GNU 표준은 GNU 정의를 가져오기 위해 설정된 컴파일러를 쿼리하는 데만 사용되며, IntelliSense는 해당 C 표준 버전을 에뮬레이트합니다.", @@ -44,7 +44,7 @@ "cpp.standard.description": "IntelliSense에 사용할 C++ 언어 표준의 버전입니다. 참고: GNU 표준은 GNU 정의를 가져오기 위해 설정된 컴파일러를 쿼리하는 데만 사용되며, IntelliSense는 해당 C++ 표준 버전을 에뮬레이트합니다.", "advanced.settings": "고급 설정", "configuration.provider": "구성 공급자", - "configuration.provider.description": "소스 파일에 대한 IntelliSense 구성 정보를 제공할 수 있는 VS Code 확장의 ID입니다. 예를 들어 VS Code 확장 ID {0}을(를) 사용하여 CMake 도구 확장의 구성 정보를 제공합니다.", + "configuration.provider.description": "소스 파일에 대한 IntelliSense 구성 정보를 제공할 수 있는 VS Code 확장의 ID입니다. 예를 들어 VS Code 확장 ID {0} 을(를) 사용하여 CMake 도구 확장의 구성 정보를 제공합니다.", "windows.sdk.version": "Windows SDK 버전", "windows.sdk.version.description": "Windows에서 사용할 Windows SDK 포함 경로의 버전입니다(예: {0}).", "mac.framework.path": "Mac 프레임워크 경로", @@ -61,16 +61,16 @@ "merge.configurations": "구성 병합", "merge.configurations.description": "{0}(또는 선택)인 경우, 포함 경로, 정의 및 강제 포함을 구성 제공자의 경로와 병합합니다.", "browse.path": "찾아보기: 경로", - "browse.path.description": "태그 파서가 소스 파일에 포함된 헤더를 검색할 경로의 목록입니다. 생략된 경우 {0}이(가) {1}(으)로 사용됩니다. 기본적으로 이 경로 검색은 재귀적입니다. 비재귀적 검색을 나타내려면 {2}을(를) 지정합니다. 예: {3}은(는) 모든 하위 디렉터리를 검색하지만 {4}은(는) 하위 디렉터리를 검색하지 않습니다.", + "browse.path.description": "태그 파서가 소스 파일에 포함된 헤더를 검색할 경로의 목록입니다. 생략된 경우 {0} 이(가) {1} (으)로 사용됩니다. 기본적으로 이 경로 검색은 재귀적입니다. 비재귀적 검색을 나타내려면 {2} 을(를) 지정합니다. 예: {3} 은(는) 모든 하위 디렉터리를 검색하지만 {4} 은(는) 하위 디렉터리를 검색하지 않습니다.", "one.browse.path.per.line": "줄당 하나의 검색 경로입니다.", "limit.symbols": "찾아보기: 포함된 헤더로 기호 제한", - "limit.symbols.checkbox": "{0}(또는 선택)인 경우 태그 파서는 {1}의 원본 파일에 직접 또는 간접적으로 포함된 코드 파일만 구문 분석합니다. {2}인 경우(또는 선택하지 않은 경우) 태그 파서는 {3} 목록에 지정된 경로에 있는 모든 코드 파일을 구문 분석합니다.", + "limit.symbols.checkbox": "{0}(또는 선택)인 경우 태그 파서는 {1} 의 원본 파일에 직접 또는 간접적으로 포함된 코드 파일만 구문 분석합니다. {2} 인 경우(또는 선택하지 않은 경우) 태그 파서는 {3} 목록에 지정된 경로에 있는 모든 코드 파일을 구문 분석합니다.", "database.filename": "찾아보기: 데이터베이스 파일 이름", "database.filename.description": "생성된 기호 데이터베이스의 경로입니다. 이 경로는 태그 파서의 기호 데이터베이스를 작업 영역의 기본 스토리지 위치가 아닌 다른 곳에 저장하도록 확장에 지시합니다. 상대 경로가 지정된 경우 작업 영역 폴더 자체가 아니라 작업 영역의 기본 스토리지 위치에 대해 상대적으로 만들어집니다. {0} 변수를 사용하여 작업 영역 폴더에 상대적인 경로를 지정할 수 있습니다(예: {1}).", - "recursiveIncludes.reduce": "Recursive includes: reduce", + "recursiveIncludes.reduce": "재귀 포함: 축소", "recursiveIncludes.reduce.description": "IntelliSense에 제공된 재귀 포함 경로의 수를 현재 #include 문에서 참조하는 경로로만 줄이려면 {0}(으)로 설정합니다. 이를 위해서는 포함된 파일을 확인하기 위해 먼저 파일을 구문 분석해야 합니다. IntelliSense에 대한 모든 재귀 포함 경로를 제공하려면 {1}(으)로 설정합니다. 재귀 포함 경로의 수를 줄이면 매우 많은 수의 재귀 포함 경로가 관련된 경우 IntelliSense 성능이 향상될 수 있습니다. 재귀 포함 경로의 수를 줄이지 않으면 제공할 포함 경로를 확인하기 위해 파일을 구문 분석할 필요가 없으므로 IntelliSense 성능을 향상시킬 수 있습니다.", "recursiveIncludes.priority": "재귀 포함: 우선 순위", "recursiveIncludes.priority.description": "재귀 포함 경로의 우선 순위입니다. {0}(으)로 설정하면 재귀 포함 경로가 시스템 포함 경로 전에 검색됩니다. {1}(으)로 설정하면 시스템 포함 경로 후에 재귀 포함 경로가 검색됩니다.", - "recursiveIncludes.order": "Recursive includes: order", + "recursiveIncludes.order": "재귀 포함: 주문", "recursiveIncludes.order.description": "재귀 포함 경로 아래의 하위 디렉터리가 검색되는 순서입니다." } \ No newline at end of file diff --git a/Extension/i18n/plk/src/LanguageServer/configurations.i18n.json b/Extension/i18n/plk/src/LanguageServer/configurations.i18n.json index b092b44ba..14f2b9d9d 100644 --- a/Extension/i18n/plk/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/plk/src/LanguageServer/configurations.i18n.json @@ -14,6 +14,7 @@ "cannot.find": "Nie można znaleźć: {0}", "cannot.resolve.compiler.path": "Nieprawidłowe dane wejściowe, nie można rozpoznać ścieżki kompilatora", "path.is.not.a.file": "Ścieżka nie jest plikiem: {0}", + "wrapped.with.quotes": "Do not add extra quotes around paths.", "path.is.not.a.directory": "Ścieżka nie jest katalogiem: {0}", "duplicate.name": "Element {0} jest duplikatem. Nazwa konfiguracji musi być unikatowa.", "multiple.paths.not.allowed": "Wiele ścieżek jest niedozwolonych.", diff --git a/Extension/i18n/plk/ui/settings.html.i18n.json b/Extension/i18n/plk/ui/settings.html.i18n.json index 050787215..dff332d05 100644 --- a/Extension/i18n/plk/ui/settings.html.i18n.json +++ b/Extension/i18n/plk/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "Jeśli wartość jest równa {0} (lub jest zaznaczona), analizator tagów analizuje tylko pliki kodu, które zostały bezpośrednio lub pośrednio dołączone przez plik źródłowy w {1}. Jeśli wartość jest równa {2} (lub nie jest zaznaczona), analizator tagów będzie analizować wszystkie pliki kodu znalezione w ścieżkach określonych na {3} liście.", "database.filename": "Przeglądaj: nazwa pliku bazy danych", "database.filename.description": "Ścieżka do generowanej bazy danych symboli. Określa ona, że rozszerzenie ma zapisać bazę danych symboli analizatora tagów w innym miejscu niż domyślna lokalizacja magazynowania obszaru roboczego. Jeśli zostanie określona ścieżka względna, będzie to ścieżka względem domyślnej lokalizacji magazynowania obszaru roboczego, a nie folderu obszaru roboczego. Można użyć zmiennej {0} do określenia ścieżki względem folderu obszaru roboczego (np. {1}).", - "recursiveIncludes.reduce": "Recursive includes: reduce", + "recursiveIncludes.reduce": "Rekursywne obejmuje: redukcję", "recursiveIncludes.reduce.description": "Ustaw na wartość {0}, aby zmniejszyć liczbę ścieżek rekursywnego dołączania dostarczanych do funkcji IntelliSense tylko do tych ścieżek, do których obecnie odwołują się instrukcje #include. Wymaga to najpierw przeanalizowania plików w celu określenia, które pliki są dołączane. Ustaw na wartość{1}, aby dostarczać wszystkie ścieżki rekursywnego dołączania do funkcji IntelliSense. Zmniejszenie liczby ścieżek rekursywnego dołączania może zwiększyć wydajność funkcji IntelliSense w przypadku dużej liczby ścieżek rekursywnego dołączania. Brak zmniejszenia liczby ścieżek rekursywnego dołączania może zwiększyć wydajność funkcji IntelliSense, unikając konieczności analizowania plików w celu określenia, które ścieżki dołączane należy podać.", "recursiveIncludes.priority": "Rekursywne dołączania: priorytet", "recursiveIncludes.priority.description": "Priorytet ścieżek rekursywnego dołączania. Jeśli ustawiono na wartość {0}, ścieżki rekursywnego dołączania będą przeszukiwane przed ścieżkami systemowego dołączania. Jeśli ustawiono na wartość {1}, ścieżki rekursywnego dołączania będą przeszukiwane po ścieżkach systemowego dołączania.", - "recursiveIncludes.order": "Recursive includes: order", + "recursiveIncludes.order": "Rekursywne obejmuje: kolejność", "recursiveIncludes.order.description": "Kolejność przeszukiwania podkatalogów w ścieżkach dołączania rekursywnego." } \ No newline at end of file diff --git a/Extension/i18n/ptb/src/LanguageServer/configurations.i18n.json b/Extension/i18n/ptb/src/LanguageServer/configurations.i18n.json index b0beff6ba..856135f5f 100644 --- a/Extension/i18n/ptb/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/ptb/src/LanguageServer/configurations.i18n.json @@ -14,6 +14,7 @@ "cannot.find": "Não é possível localizar: {0}", "cannot.resolve.compiler.path": "Entrada inválida. Não é possível resolver o caminho do compilador", "path.is.not.a.file": "O caminho não é um arquivo: {0}", + "wrapped.with.quotes": "Do not add extra quotes around paths.", "path.is.not.a.directory": "O caminho não é um diretório: {0}", "duplicate.name": "{0} é uma duplicata. O nome da configuração deve ser exclusivo.", "multiple.paths.not.allowed": "Vários caminhos não são permitidos.", diff --git a/Extension/i18n/ptb/ui/settings.html.i18n.json b/Extension/i18n/ptb/ui/settings.html.i18n.json index d052b8462..68232441f 100644 --- a/Extension/i18n/ptb/ui/settings.html.i18n.json +++ b/Extension/i18n/ptb/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "Quando {0} (ou marcado), o Analisador de Marca analisará somente os arquivos de código que foram diretamente ou indiretamente incluídos em um arquivo de origem no {1}. Quando {2} (ou não marcado), o Analisador de Marca analisará todos os arquivos de código encontrados nos caminhos especificados na lista de {3}.", "database.filename": "Procurar: nome do arquivo do banco de dados", "database.filename.description": "O caminho para o banco de dados de símbolo gerado. Isso instrui a extensão a salvar o banco de dados de símbolos do Analisador de Marca em algum lugar diferente do local de armazenamento padrão do workspace. Se um caminho relativo for especificado, ele será feito em relação ao local de armazenamento padrão do workspace, não à própria pasta do workspace. A {0} variável pode ser usada para especificar um caminho relativo à pasta do workspace (por exemplo, {1}).", - "recursiveIncludes.reduce": "Recursive includes: reduce", + "recursiveIncludes.reduce": "Inclusões recursivas: reduzir", "recursiveIncludes.reduce.description": "Defina como {0} para reduzir o número de caminhos de inclusão recursivos fornecidos ao IntelliSense apenas para os caminhos atualmente referenciados por instruções #include. Isso requer primeiro a análise de arquivos para determinar quais arquivos estão incluídos. Defina como {1} para fornecer todos os caminhos de inclusão recursivos para o IntelliSense. Reduzir o número de caminhos de inclusão recursivos pode melhorar o desempenho do IntelliSense quando um número muito grande de caminhos de inclusão recursivos está envolvido. Não reduzir o número de caminhos de inclusão recursivos pode melhorar o desempenho do IntelliSense, evitando a necessidade de analisar arquivos para determinar quais caminhos de inclusão fornecer.", "recursiveIncludes.priority": "Inclui recursiva: prioridade", "recursiveIncludes.priority.description": "A prioridade dos caminhos de inclusão recursivo. Se definido como {0}, os caminhos de inclusão recursivos serão pesquisados antes que o sistema inclua caminhos. Se definido como {1}, os caminhos de inclusão recursivos serão pesquisados depois que o sistema incluir caminhos.", - "recursiveIncludes.order": "Recursive includes: order", + "recursiveIncludes.order": "Inclusões recursivas: pedido", "recursiveIncludes.order.description": "A ordem na qual os subdiretórios em caminhos de inclusão recursivos são pesquisados." } \ No newline at end of file diff --git a/Extension/i18n/rus/src/LanguageServer/configurations.i18n.json b/Extension/i18n/rus/src/LanguageServer/configurations.i18n.json index d33ef90cd..758c606bc 100644 --- a/Extension/i18n/rus/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/rus/src/LanguageServer/configurations.i18n.json @@ -14,6 +14,7 @@ "cannot.find": "Не удается найти: {0}", "cannot.resolve.compiler.path": "Недопустимые входные данные; не удается разрешить путь компилятора", "path.is.not.a.file": "Путь не является файлом: {0}", + "wrapped.with.quotes": "Do not add extra quotes around paths.", "path.is.not.a.directory": "Путь не является каталогом: {0}", "duplicate.name": "{0} является дубликатом. Имя конфигурации должно быть уникальным.", "multiple.paths.not.allowed": "Запрещено использовать несколько путей.", diff --git a/Extension/i18n/rus/ui/settings.html.i18n.json b/Extension/i18n/rus/ui/settings.html.i18n.json index ec6729288..cf0bf8dbb 100644 --- a/Extension/i18n/rus/ui/settings.html.i18n.json +++ b/Extension/i18n/rus/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "При значении {0} (или если установлен флажок) анализатор тегов будет анализировать только файлы кода, прямо или косвенно включаемые исходным файлом в {1}. При значении {2} (или если флажок не установлен) анализатор тегов будет анализировать все файлы кода, найденные по путям, указанным в списке {3}.", "database.filename": "Обзор: имя файла базы данных", "database.filename.description": "Путь к создаваемой базе данных символов. Этот параметр указывает расширению расположение для сохранение базы данных символов анализатора тегов, отличное от используемого в этой рабочей области места хранения по умолчанию.Если указать относительный путь, он будет определяться относительно места хранения по умолчанию, а не от папки самой рабочей области. Чтобы указать путь относительно папки рабочей области, можно использовать переменную {0} (например, {1}).", - "recursiveIncludes.reduce": "Recursive includes: reduce", + "recursiveIncludes.reduce": "Рекурсивные включения: уменьшение", "recursiveIncludes.reduce.description": "Задайте значение {0}, чтобы всегда уменьшать количество путей рекурсивного включения, предоставляемых для IntelliSense, только до тех путей, на которые в настоящее время ссылаются инструкции #include. Для этого необходимо сначала проанализировать файлы, чтобы определить, какие файлы включены. Задайте значение {1}, чтобы предоставить все пути рекурсивного включения для IntelliSense. Уменьшение количества путей рекурсивного включения может повысить производительность IntelliSense, если задействовано очень большое количество путей рекурсивного включения. Отсутствие уменьшения количества путей рекурсивного включения может улучшить производительность IntelliSense благодаря отказу от необходимости анализа файлов для определения того, какие пути включения следует предоставить.", "recursiveIncludes.priority": "Рекурсивные включения: приоритет", "recursiveIncludes.priority.description": "Приоритет путей рекурсивного включения. Если задано значение {0}, поиск путей рекурсивного включения будет выполняться до путей системного включения. Если задано значение {1}, поиск путей рекурсивного включения будет выполняться после путей системного включения.", - "recursiveIncludes.order": "Recursive includes: order", + "recursiveIncludes.order": "Рекурсивные включения: порядок", "recursiveIncludes.order.description": "Порядок поиска подкаталогов в путях рекурсивного включения." } \ No newline at end of file diff --git a/Extension/i18n/trk/package.i18n.json b/Extension/i18n/trk/package.i18n.json index e4d7f638e..d36424816 100644 --- a/Extension/i18n/trk/package.i18n.json +++ b/Extension/i18n/trk/package.i18n.json @@ -430,7 +430,7 @@ "c_cpp.walkthrough.create.cpp.file.description": "Bir C++ dosyasını [açın](command:toSide:workbench.action.files.openFile) veya C++ dosyası [oluşturun](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D). Dosyayı \".cpp\" uzantısıyla (ör. \"helloworld.cpp\".) kaydetmeyi unutmayın.\n[C++ dosyası oluşturun](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D)", "c_cpp.walkthrough.create.cpp.file.altText": "Bir C++ dosyası veya bir klasörü C++ projesiyle açın.", "c_cpp.walkthrough.command.prompt.title": "VS için Developer Command Prompt'tan başlat", - "c_cpp.walkthrough.command.prompt.description": "Microsoft Visual Studio C++ derleyicisini kullanırken, C++ uzantısı, VS için Developer Command Prompt'tan VS Code'u başlatmanızı gerektirir. Yeniden başlatmak için sağdaki talimatları izleyin.\n[Yeniden Yükleme Penceresi](komut:workbench.action.reloadWindow)", + "c_cpp.walkthrough.command.prompt.description": "Microsoft Visual Studio C++ derleyicisini kullanırken, C++ uzantısı, VS için Developer Command Prompt'tan VS Code'u başlatmanızı gerektirir. Yeniden başlatmak için sağdaki talimatları izleyin.\n[Yeniden Yükleme Penceresi](command:workbench.action.reloadWindow)", "c_cpp.walkthrough.run.debug.title": "C++ dosyanızı çalıştırın ve hata ayıklayın", "c_cpp.walkthrough.run.debug.mac.description": "C++ dosyanızı açın ve düzenleyicinin sağ üst köşesindeki oynat düğmesine tıklayın veya dosyadayken F5'e basın. Hata ayıklayıcı ile çalıştırmak için \"clang++ - Etkin dosya derle ve hata ayıkla\" seçeneğini seçin.", "c_cpp.walkthrough.run.debug.linux.description": "C++ dosyanızı açın ve düzenleyicinin sağ üst köşesindeki oynat düğmesine tıklayın veya dosyadayken F5'e basın. Hata ayıklayıcı ile çalıştırmak için \"g++ - Aktif dosya derle ve hata ayıkla\"yı seçin.", diff --git a/Extension/i18n/trk/src/LanguageServer/configurations.i18n.json b/Extension/i18n/trk/src/LanguageServer/configurations.i18n.json index a9e5c26f2..1f1a6369b 100644 --- a/Extension/i18n/trk/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/trk/src/LanguageServer/configurations.i18n.json @@ -14,6 +14,7 @@ "cannot.find": "{0} bulunamıyor", "cannot.resolve.compiler.path": "Giriş geçersiz, derleyici yolu çözümlenemiyor", "path.is.not.a.file": "Yol bir dosya değil: {0}", + "wrapped.with.quotes": "Do not add extra quotes around paths.", "path.is.not.a.directory": "Yol bir dizin değil: {0}", "duplicate.name": "{0} yineleniyor. Yapılandırma adı benzersiz olmalıdır.", "multiple.paths.not.allowed": "Birden fazla yola izin verilmez.", diff --git a/Extension/i18n/trk/ui/settings.html.i18n.json b/Extension/i18n/trk/ui/settings.html.i18n.json index 8cd6537cf..611ea858d 100644 --- a/Extension/i18n/trk/ui/settings.html.i18n.json +++ b/Extension/i18n/trk/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "{0} (veya işaretli) olduğunda, Etiket Ayrıştırıcı yalnızca {1} içindeki bir kaynak dosya tarafından doğrudan veya dolaylı olarak dahil edilen kod dosyalarını ayrıştırır. {2} olduğunda (veya işaretlenmediğinde), Etiket Ayrıştırıcı {3} listesinde belirtilen yollarda bulunan tüm kod dosyalarını ayrıştırır.", "database.filename": "Gözat: veritabanı dosya adı", "database.filename.description": "Oluşturulan sembol veritabanının yolu. Bu, uzantının Etiket Ayrıştırıcısının sembol veritabanının çalışma alanı varsayılan depolama konumundan başka bir yerde kaydedilmesini sağlar. Göreli yol belirtilirse, çalışma alanı klasörünün kendisi değil, çalışma alanının varsayılan depolama konumuyla göreli olarak yapılır. {0} değişkeni, çalışma alanı klasörüne göreli bir yol belirtmek için kullanılabilir (örneğin, {1}).", - "recursiveIncludes.reduce": "Recursive includes: reduce", + "recursiveIncludes.reduce": "Özyinelemeli eklemeler: azalt", "recursiveIncludes.reduce.description": "IntelliSense'e sağlanan özyinelemeli ekleme yollarının sayısını her zaman yalnızca o anda #include deyimleri tarafından başvurulan yollara indirgemek için {0} olarak ayarlayın. Bu, hangi dosyaların eklendiğini belirlemek için önce dosyaların ayrıştırılmasını gerektirir. IntelliSense'e tüm özyinelemeli ekleme yollarını sağlamak için {1} olarak ayarlayın. Özyinelemeli ekleme yollarının sayısının azaltılması, çok sayıda özyinelemeli ekleme yolu söz konusu olduğunda IntelliSense performansını artırabilir. Özyinelemeli ekleme yollarının sayısını azaltmamak, hangi ekleme yollarının sağlanacağını belirlemek için dosyaları ayrıştırma ihtiyacını ortadan kaldırarak IntelliSense performansını artırabilir.", "recursiveIncludes.priority": "Özyinelemeli içerikler: öncelik", "recursiveIncludes.priority.description": "Özyinelemeli ekleme yollarının önceliği. {0} olarak ayarlanırsa özyinelemeli ekleme yolları, sistem ekleme yollarından önce aranır. {1} olarak ayarlanırsa özyinelemeli ekleme yolları, sistem ekleme yollarından sonra aranır.", - "recursiveIncludes.order": "Recursive includes: order", + "recursiveIncludes.order": "Özyinelemeli eklemeler: düzenle", "recursiveIncludes.order.description": "Özyinelemeli ekleme yolları altındaki alt dizinlerin aranma sırası." } \ No newline at end of file From 964bc5b6bdad1e9897d897be325c7b7d6f639b44 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Mon, 21 Apr 2025 18:56:11 -0700 Subject: [PATCH 25/33] Update version and changelog for 1.25.1. (#13524) * Update version and changelog for 1.25.1. --- Extension/CHANGELOG.md | 13 ++++++++++++- Extension/package.json | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index df74ab20a..592bd66d5 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -1,11 +1,22 @@ # C/C++ for Visual Studio Code Changelog +## Version 1.25.1: April 22, 2025 +### Enhancement +* Add a configuration warning message explaining why paths in quotes can't be found. [#11955](https://github.com/microsoft/vscode-cpptools/issues/11955) + +### Bug Fixes +* Fix no error appearing in the configuration UI when an invalid `compilerPath` is used. [#12661](https://github.com/microsoft/vscode-cpptools/issues/12661) +* Fix the 'Debug C/C++ File' button sometimes disappearing. [#13400](https://github.com/microsoft/vscode-cpptools/issues/13400) +* Fix some cases of a tag parser crash with `read_double`. [#13435](https://github.com/Microsoft/vscode-cpptools/issues/13435) +* Fix issues with the `recursiveIncludes` properties in the configuration UI editor. [PR #13498](https://github.com/microsoft/vscode-cpptools/pull/13498) +* Update clang-tidy and clang-format from 20.1.2 to 20.1.3 (which has some bug fixes). +* Fix some translation issues. + ## Version 1.25.0: April 10, 2025 ### Enhancement * Improve the description of the `C_Cpp.copilotHover` setting. [PR #13461](https://github.com/microsoft/vscode-cpptools/pull/13461) ### Bug Fixes -* Fix a crash during tag parsing (in `read_double`). [#13435](https://github.com/Microsoft/vscode-cpptools/issues/13435) * Fix the handling of default file associations for certain file extensions. [PR #13455](https://github.com/microsoft/vscode-cpptools/pull/13455) * Fix shell parsing of the arguments of a full command line in `compilerPath`. [PR #13468](https://github.com/microsoft/vscode-cpptools/pull/13468) * Fix C and CUDA files being interpreted as C++ in `compile_commands.json`. [#13471](https://github.com/microsoft/vscode-cpptools/issues/13471) diff --git a/Extension/package.json b/Extension/package.json index 91d1169e6..2a8ef1a61 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -2,7 +2,7 @@ "name": "cpptools", "displayName": "C/C++", "description": "C/C++ IntelliSense, debugging, and code browsing.", - "version": "1.25.0-main", + "version": "1.25.1-main", "publisher": "ms-vscode", "icon": "LanguageCCPP_color_128x.png", "readme": "README.md", From 92a34d51b1174f93af2aabe41bd591dbf6586578 Mon Sep 17 00:00:00 2001 From: Luca <681992+lukka@users.noreply.github.com> Date: Tue, 22 Apr 2025 03:00:49 -0700 Subject: [PATCH 26/33] codesnippets v2 changes (#13525) --- Extension/src/LanguageServer/client.ts | 10 +- .../copilotCompletionContextProvider.ts | 156 ++++++++++++++---- .../copilotCompletionContextTelemetry.ts | 11 +- Extension/src/LanguageServer/settings.ts | 4 +- 4 files changed, 137 insertions(+), 44 deletions(-) diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index 92107158a..44b537d1e 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -585,6 +585,9 @@ export interface CopilotCompletionContextParams { uri: string; caretOffset: number; featureFlag: CopilotCompletionContextFeatures; + maxSnippetCount: number; + maxSnippetLength: number; + doAggregateSnippets: boolean; } // Requests @@ -843,7 +846,7 @@ export interface Client { getIncludes(uri: vscode.Uri, maxDepth: number): Promise; getChatContext(uri: vscode.Uri, token: vscode.CancellationToken): Promise; filesEncodingChanged(filesEncodingChanged: FilesEncodingChanged): void; - getCompletionContext(fileName: vscode.Uri, caretOffset: number, featureFlag: CopilotCompletionContextFeatures, token: vscode.CancellationToken): Promise; + getCompletionContext(fileName: vscode.Uri, caretOffset: number, featureFlag: CopilotCompletionContextFeatures, maxSnippetCount: number, maxSnippetLength: number, doAggregateSnippets: boolean, token: vscode.CancellationToken): Promise; } export function createClient(workspaceFolder?: vscode.WorkspaceFolder): Client { @@ -2352,11 +2355,12 @@ export class DefaultClient implements Client { } public async getCompletionContext(file: vscode.Uri, caretOffset: number, featureFlag: CopilotCompletionContextFeatures, + maxSnippetCount: number, maxSnippetLength: number, doAggregateSnippets: boolean, token: vscode.CancellationToken): Promise { await withCancellation(this.ready, token); return DefaultClient.withLspCancellationHandling( () => this.languageClient.sendRequest(CopilotCompletionContextRequest, - { uri: file.toString(), caretOffset, featureFlag }, token), token); + { uri: file.toString(), caretOffset, featureFlag, maxSnippetCount, maxSnippetLength, doAggregateSnippets }, token), token); } /** @@ -4277,5 +4281,5 @@ class NullClient implements Client { getIncludes(uri: vscode.Uri, maxDepth: number): Promise { return Promise.resolve({} as GetIncludesResult); } getChatContext(uri: vscode.Uri, token: vscode.CancellationToken): Promise { return Promise.resolve({} as ChatContextResult); } filesEncodingChanged(filesEncodingChanged: FilesEncodingChanged): void { } - getCompletionContext(file: vscode.Uri, caretOffset: number, featureFlag: CopilotCompletionContextFeatures, token: vscode.CancellationToken): Promise { return Promise.resolve({} as CopilotCompletionContextResult); } + getCompletionContext(file: vscode.Uri, caretOffset: number, featureFlag: CopilotCompletionContextFeatures, maxSnippetCount: number, maxSnippetLength: number, doAggregateSnippets: boolean, token: vscode.CancellationToken): Promise { return Promise.resolve({} as CopilotCompletionContextResult); } } diff --git a/Extension/src/LanguageServer/copilotCompletionContextProvider.ts b/Extension/src/LanguageServer/copilotCompletionContextProvider.ts index 17ec88028..d255f24a3 100644 --- a/Extension/src/LanguageServer/copilotCompletionContextProvider.ts +++ b/Extension/src/LanguageServer/copilotCompletionContextProvider.ts @@ -6,7 +6,7 @@ import { ContextResolver, ResolveRequest, SupportedContextItem } from '@github/c import { randomUUID } from 'crypto'; import * as vscode from 'vscode'; import { DocumentSelector } from 'vscode-languageserver-protocol'; -import { isNumber, isString } from '../common'; +import { isBoolean, isNumber, isString } from '../common'; import { getOutputChannelLogger, Logger } from '../logger'; import * as telemetry from '../telemetry'; import { CopilotCompletionContextResult } from './client'; @@ -75,11 +75,21 @@ export class CopilotCompletionContextProvider implements ContextResolver = new Map(); private static readonly defaultCppDocumentSelector: DocumentSelector = [{ language: 'cpp' }, { language: 'c' }, { language: 'cuda-cpp' }]; - // A percentage expressed as an integer number, i.e. 50 means 50%. - private static readonly defaultTimeBudgetFactor: number = 50; - private static readonly defaultMaxCaretDistance = 4096; + // The default time budget for providing a value from resolve(). + private static readonly defaultTimeBudgetMs: number = 7; + // Assume the cache is stale when the distance to the current caret is greater than this value. + private static readonly defaultMaxCaretDistance = 8192; + private static readonly defaultMaxSnippetCount = 15; + private static readonly defaultMaxSnippetLength = 10 * 1024; // 10KB + private static readonly defaultDoAggregateSnippets = true; private completionContextCancellation = new vscode.CancellationTokenSource(); private contextProviderDisposable: vscode.Disposable | undefined; + static readonly CppContextProviderEnabledFeatures = 'enabledFeatures'; + static readonly CppContextProviderTimeBudgetMs = 'timeBudgetMs'; + static readonly CppContextProviderMaxSnippetCount = 'maxSnippetCount'; + static readonly CppContextProviderMaxSnippetLength = 'maxSnippetLength'; + static readonly CppContextProviderMaxDistanceToCaret = 'maxDistanceToCaret'; + static readonly CppContextProviderDoAggregateSnippets = 'doAggregateSnippets'; constructor(private readonly logger: Logger) { } @@ -125,7 +135,8 @@ export class CopilotCompletionContextProvider implements ContextResolver { const documentUri = context.documentContext.uri; const caretOffset = context.documentContext.offset; @@ -143,7 +154,7 @@ export class CopilotCompletionContextProvider implements ContextResolver"}:${copilotC telemetry.send("cache"); } } - static readonly CppCodeSnippetsEnabledFeatures = 'CppCodeSnippetsEnabledFeatures'; - static readonly CppCodeSnippetsTimeBudgetFactor = 'CppCodeSnippetsTimeBudgetFactor'; - static readonly CppCodeSnippetsMaxDistanceToCaret = 'CppCodeSnippetsMaxDistanceToCaret'; - private async fetchTimeBudgetFactor(context: ResolveRequest): Promise { + static readonly paramsCache: Record = {}; + static paramsCacheCreated = false; + private getContextProviderParam(paramName: string): T | undefined { try { - const budgetFactor = context.activeExperiments.get(CopilotCompletionContextProvider.CppCodeSnippetsTimeBudgetFactor); - return (isNumber(budgetFactor) ? budgetFactor : CopilotCompletionContextProvider.defaultTimeBudgetFactor) / 100.0; + if (!CopilotCompletionContextProvider.paramsCacheCreated) { + CopilotCompletionContextProvider.paramsCacheCreated = true; + const paramsJson = new CppSettings().cppContextProviderParams; + if (isString(paramsJson)) { + try { + const params = JSON.parse(paramsJson.replaceAll(/'/g, '"')); + for (const key in params) { + CopilotCompletionContextProvider.paramsCache[key] = params[key]; + } + } catch (e) { + console.warn(`getContextProviderParam(): error parsing getContextProviderParam: `, e); + } + } + } + return CopilotCompletionContextProvider.paramsCache[paramName] as T; + } catch (e) { + console.warn(`getContextProviderParam(): error fetching getContextProviderParam: `, e); + return undefined; + } + } + + private async fetchTimeBudgetMs(context: ResolveRequest): Promise { + try { + const timeBudgetMs = this.getContextProviderParam(CopilotCompletionContextProvider.CppContextProviderTimeBudgetMs) ?? + context.activeExperiments.get(CopilotCompletionContextProvider.CppContextProviderTimeBudgetMs); + return isNumber(timeBudgetMs) ? timeBudgetMs : CopilotCompletionContextProvider.defaultTimeBudgetMs; } catch (e) { - console.warn(`fetchTimeBudgetFactor(): error fetching ${CopilotCompletionContextProvider.CppCodeSnippetsTimeBudgetFactor}, using default: `, e); - return CopilotCompletionContextProvider.defaultTimeBudgetFactor; + console.warn(`fetchTimeBudgetMs(): error fetching ${CopilotCompletionContextProvider.CppContextProviderTimeBudgetMs}, using default: `, e); + return CopilotCompletionContextProvider.defaultTimeBudgetMs; } } private async fetchMaxDistanceToCaret(context: ResolveRequest): Promise { try { - const maxDistance = context.activeExperiments.get(CopilotCompletionContextProvider.CppCodeSnippetsMaxDistanceToCaret); + const maxDistance = this.getContextProviderParam(CopilotCompletionContextProvider.CppContextProviderMaxDistanceToCaret) ?? + context.activeExperiments.get(CopilotCompletionContextProvider.CppContextProviderMaxDistanceToCaret); return isNumber(maxDistance) ? maxDistance : CopilotCompletionContextProvider.defaultMaxCaretDistance; } catch (e) { - console.warn(`fetchMaxDistanceToCaret(): error fetching ${CopilotCompletionContextProvider.CppCodeSnippetsMaxDistanceToCaret}, using default: `, e); + console.warn(`fetchMaxDistanceToCaret(): error fetching ${CopilotCompletionContextProvider.CppContextProviderMaxDistanceToCaret}, using default: `, e); return CopilotCompletionContextProvider.defaultMaxCaretDistance; } } + private async fetchMaxSnippetCount(context: ResolveRequest): Promise { + try { + const maxSnippetCount = this.getContextProviderParam(CopilotCompletionContextProvider.CppContextProviderMaxSnippetCount) ?? + context.activeExperiments.get(CopilotCompletionContextProvider.CppContextProviderMaxSnippetCount); + return isNumber(maxSnippetCount) ? maxSnippetCount : CopilotCompletionContextProvider.defaultMaxSnippetCount; + } catch (e) { + console.warn(`fetchMaxSnippetCount(): error fetching ${CopilotCompletionContextProvider.defaultMaxSnippetCount}, using default: `, e); + return CopilotCompletionContextProvider.defaultMaxSnippetCount; + } + } + + private async fetchMaxSnippetLength(context: ResolveRequest): Promise { + try { + const maxSnippetLength = this.getContextProviderParam(CopilotCompletionContextProvider.CppContextProviderMaxSnippetLength) ?? + context.activeExperiments.get(CopilotCompletionContextProvider.CppContextProviderMaxSnippetLength); + return isNumber(maxSnippetLength) ? maxSnippetLength : CopilotCompletionContextProvider.defaultMaxSnippetLength; + } catch (e) { + console.warn(`fetchMaxSnippetLength(): error fetching ${CopilotCompletionContextProvider.defaultMaxSnippetLength}, using default: `, e); + return CopilotCompletionContextProvider.defaultMaxSnippetLength; + } + } + + private async fetchDoAggregateSnippets(context: ResolveRequest): Promise { + try { + const doAggregateSnippets = this.getContextProviderParam(CopilotCompletionContextProvider.CppContextProviderDoAggregateSnippets) ?? + context.activeExperiments.get(CopilotCompletionContextProvider.CppContextProviderDoAggregateSnippets); + return isBoolean(doAggregateSnippets) ? doAggregateSnippets : CopilotCompletionContextProvider.defaultDoAggregateSnippets; + } catch (e) { + console.warn(`fetchDoAggregateSnippets(): error fetching ${CopilotCompletionContextProvider.defaultDoAggregateSnippets}, using default: `, e); + return CopilotCompletionContextProvider.defaultDoAggregateSnippets; + } + } + private async getEnabledFeatureNames(context: ResolveRequest): Promise { try { - const enabledFeatureNames = new CppSettings().cppCodeSnippetsFeatureNames ?? context.activeExperiments.get(CopilotCompletionContextProvider.CppCodeSnippetsEnabledFeatures); + const enabledFeatureNames = this.getContextProviderParam(CopilotCompletionContextProvider.CppContextProviderEnabledFeatures) ?? + context.activeExperiments.get(CopilotCompletionContextProvider.CppContextProviderEnabledFeatures); if (isString(enabledFeatureNames)) { return enabledFeatureNames.split(',').map(s => s.trim()); } } catch (e) { - console.warn(`getEnabledFeatures(): error fetching ${CopilotCompletionContextProvider.CppCodeSnippetsEnabledFeatures}: `, e); + console.warn(`getEnabledFeatureNames(): error fetching ${CopilotCompletionContextProvider.CppContextProviderEnabledFeatures}: `, e); } return undefined; } @@ -251,11 +320,32 @@ response.uri:${copilotCompletionContext.sourceFileUri || ""}:${copilotC this.completionContextCache.delete(fileUri); } + private computeSnippetsResolved: boolean = true; + + private async resolveResultAndKind(context: ResolveRequest, featureFlag: CopilotCompletionContextFeatures, + telemetry: CopilotCompletionContextTelemetry, defaultValue: CopilotCompletionContextResult | undefined, + resolveStartTime: number, timeBudgetMs: number, maxSnippetCount: number, maxSnippetLength: number, doAggregateSnippets: boolean, + copilotCancel: vscode.CancellationToken): Promise<[CopilotCompletionContextResult | undefined, CopilotCompletionKind]> { + if (this.computeSnippetsResolved) { + this.computeSnippetsResolved = false; + const computeSnippetsPromise = this.getCompletionContextWithCancellation(context, featureFlag, + maxSnippetCount, maxSnippetLength, doAggregateSnippets, resolveStartTime, telemetry.fork(), this.completionContextCancellation.token).finally( + () => this.computeSnippetsResolved = true + ); + const res = await this.waitForCompletionWithTimeoutAndCancellation( + computeSnippetsPromise, defaultValue, timeBudgetMs, copilotCancel); + return res; + } else { return [defaultValue, defaultValue ? CopilotCompletionKind.GotFromCache : CopilotCompletionKind.MissingCacheMiss]; } + } + public async resolve(context: ResolveRequest, copilotCancel: vscode.CancellationToken): Promise { const resolveStartTime = performance.now(); - let logMessage = `Copilot: resolve(${context.documentContext.uri}:${context.documentContext.offset}):`; - const timeBudgetFactor = await this.fetchTimeBudgetFactor(context); + let logMessage = `Copilot: resolve(${context.documentContext.uri}: ${context.documentContext.offset}):`; + const cppTimeBudgetMs = await this.fetchTimeBudgetMs(context); const maxCaretDistance = await this.fetchMaxDistanceToCaret(context); + const maxSnippetCount = await this.fetchMaxSnippetCount(context); + const maxSnippetLength = await this.fetchMaxSnippetLength(context); + const doAggregateSnippets = await this.fetchDoAggregateSnippets(context); const telemetry = new CopilotCompletionContextTelemetry(); let copilotCompletionContext: CopilotCompletionContextResult | undefined; let copilotCompletionContextKind: CopilotCompletionKind = CopilotCompletionKind.Unknown; @@ -265,16 +355,12 @@ response.uri:${copilotCompletionContext.sourceFileUri || ""}:${copilotC try { featureFlag = await this.getEnabledFeatureFlag(context); telemetry.addRequestMetadata(context.documentContext.uri, context.documentContext.offset, - context.completionId, context.documentContext.languageId, { featureFlag, timeBudgetFactor, maxCaretDistance }); + context.completionId, context.documentContext.languageId, { featureFlag, timeBudgetMs: cppTimeBudgetMs, maxCaretDistance }); if (featureFlag === undefined) { return []; } - this.completionContextCancellation.cancel(); - this.completionContextCancellation = new vscode.CancellationTokenSource(); const cacheEntry: CacheEntry | undefined = this.completionContextCache.get(docUri.toString()); const defaultValue = cacheEntry?.[1]; - const computeSnippetsPromise = this.getCompletionContextWithCancellation(context, featureFlag, - resolveStartTime, telemetry.fork(), this.completionContextCancellation.token); - [copilotCompletionContext, copilotCompletionContextKind] = await this.waitForCompletionWithTimeoutAndCancellation( - computeSnippetsPromise, defaultValue, context.timeBudget * timeBudgetFactor, copilotCancel); + [copilotCompletionContext, copilotCompletionContextKind] = await this.resolveResultAndKind(context, featureFlag, + telemetry.fork(), defaultValue, resolveStartTime, cppTimeBudgetMs, maxSnippetCount, maxSnippetLength, doAggregateSnippets, copilotCancel); // Fix up copilotCompletionContextKind accounting for stale-cache-hits. if (copilotCompletionContextKind === CopilotCompletionKind.GotFromCache && copilotCompletionContext && cacheEntry) { @@ -292,12 +378,12 @@ response.uri:${copilotCompletionContext.sourceFileUri || ""}:${copilotC telemetry.addCopilotCanceled(duration); throw new CopilotCancellationError(); } - logMessage += ` (id:${copilotCompletionContext?.requestId}) `; + logMessage += ` (id: ${copilotCompletionContext?.requestId})`; return [...copilotCompletionContext?.snippets ?? [], ...copilotCompletionContext?.traits ?? []] as SupportedContextItem[]; } catch (e: any) { if (e instanceof CopilotCancellationError) { telemetry.addCopilotCanceled(CopilotCompletionContextProvider.getRoundedDuration(resolveStartTime)); - logMessage += ` (copilot cancellation) `; + logMessage += ` (copilot cancellation)`; throw e; } if (e instanceof InternalCancellationError) { @@ -312,12 +398,12 @@ response.uri:${copilotCompletionContext.sourceFileUri || ""}:${copilotC throw e; } finally { const duration: number = CopilotCompletionContextProvider.getRoundedDuration(resolveStartTime); - logMessage += `featureFlag:${featureFlag?.toString()},`; + logMessage += `featureFlag:${featureFlag?.toString()}, `; if (copilotCompletionContext === undefined) { - logMessage += ` result is undefined and no snippets provided (${copilotCompletionContextKind.toString()}), elapsed time:${duration}ms`; + logMessage += `result is undefined and no code snippets provided(${copilotCompletionContextKind.toString()}), elapsed time:${duration} ms`; } else { - logMessage += ` for ${docUri}:${docOffset} provided ${copilotCompletionContext.snippets.length} code-snippet(s) (${copilotCompletionContextKind.toString()}\ -${copilotCompletionContext?.areSnippetsMissing ? ", missing code-snippets" : ""}) and ${copilotCompletionContext.traits.length} trait(s), elapsed time:${duration}ms`; + logMessage += `for ${docUri}:${docOffset} provided ${copilotCompletionContext.snippets.length} code snippet(s)(${copilotCompletionContextKind.toString()}\ + ${copilotCompletionContext?.areSnippetsMissing ? ", missing code snippets" : ""}) and ${copilotCompletionContext.traits.length} trait(s), elapsed time:${duration} ms`; } telemetry.addResponseMetadata(copilotCompletionContext?.areSnippetsMissing ?? true, copilotCompletionContext?.snippets.length, copilotCompletionContext?.traits.length, @@ -349,7 +435,7 @@ ${copilotCompletionContext?.areSnippetsMissing ? ", missing code-snippets" : ""} console.debug("Failed to register the Copilot Context Provider."); properties["error"] = "Failed to register the Copilot Context Provider"; if (e instanceof CopilotContextProviderException) { - properties["error"] += `: ${e.message}`; + properties["error"] += `: ${e.message} `; } } finally { telemetry.logCopilotEvent(registerCopilotContextProvider, { ...properties }); diff --git a/Extension/src/LanguageServer/copilotCompletionContextTelemetry.ts b/Extension/src/LanguageServer/copilotCompletionContextTelemetry.ts index 26ecc7537..802204e9c 100644 --- a/Extension/src/LanguageServer/copilotCompletionContextTelemetry.ts +++ b/Extension/src/LanguageServer/copilotCompletionContextTelemetry.ts @@ -88,16 +88,19 @@ export class CopilotCompletionContextTelemetry { } public addRequestMetadata(uri: string, caretOffset: number, completionId: string, - languageId: string, { featureFlag, timeBudgetFactor, maxCaretDistance }: { - featureFlag?: CopilotCompletionContextFeatures; - timeBudgetFactor?: number; maxCaretDistance?: number; + languageId: string, { featureFlag, timeBudgetMs, maxCaretDistance, maxSnippetCount, maxSnippetLength, doAggregateSnippets }: { + featureFlag?: CopilotCompletionContextFeatures; timeBudgetMs?: number; maxCaretDistance?: number; + maxSnippetCount?: number; maxSnippetLength?: number; doAggregateSnippets?: boolean; } = {}): void { this.addProperty('request.completionId', completionId); this.addProperty('request.languageId', languageId); this.addMetric('request.caretOffset', caretOffset); this.addProperty('request.featureFlag', featureFlag?.toString() ?? ''); - if (timeBudgetFactor !== undefined) { this.addMetric('request.timeBudgetFactor', timeBudgetFactor); } + if (timeBudgetMs !== undefined) { this.addMetric('request.timeBudgetMs', timeBudgetMs); } if (maxCaretDistance !== undefined) { this.addMetric('request.maxCaretDistance', maxCaretDistance); } + if (maxSnippetCount !== undefined) { this.addMetric('request.maxSnippetCount', maxSnippetCount); } + if (maxSnippetLength !== undefined) { this.addMetric('request.maxSnippetLength', maxSnippetLength); } + if (doAggregateSnippets !== undefined) { this.addProperty('request.doAggregateSnippets', doAggregateSnippets.toString()); } } public addCppStandardVersionMetadata(standardVersion: string, elapsedMs: number): void { diff --git a/Extension/src/LanguageServer/settings.ts b/Extension/src/LanguageServer/settings.ts index 999e8114e..cff19f2d9 100644 --- a/Extension/src/LanguageServer/settings.ts +++ b/Extension/src/LanguageServer/settings.ts @@ -478,8 +478,8 @@ export class CppSettings extends Settings { } return this.getAsString("copilotHover"); } - public get cppCodeSnippetsFeatureNames(): string | undefined { - const value = super.Section.get("cppCodeSnippetsFeatureNames"); + public get cppContextProviderParams(): string | undefined { + const value = super.Section.get("copilotContextProviderParams"); if (isString(value)) { return value; } From 9eb37abe16fbe4f64cf74b1145e5f043f4fcf863 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson <49173979+Colengms@users.noreply.github.com> Date: Thu, 24 Apr 2025 15:27:06 -0700 Subject: [PATCH 27/33] Fix how C_Cpp.default recursive include settings are defined (#13549) --- Extension/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Extension/package.json b/Extension/package.json index 2a8ef1a61..554940501 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -900,31 +900,31 @@ "C_Cpp.default.recursiveIncludes.reduce": { "type": "string", "enum": [ + "", "always", "never", "default" ], - "default": "default", "markdownDescription": "%c_cpp.configuration.default.recursiveIncludes.reduce.markdownDescription%", "scope": "resource" }, "C_Cpp.default.recursiveIncludes.priority": { "type": "string", "enum": [ + "", "beforeSystemIncludes", "afterSystemIncludes" ], - "default": "afterSystemIncludes", "markdownDescription": "%c_cpp.configuration.default.recursiveIncludes.priority.markdownDescription%", "scope": "resource" }, "C_Cpp.default.recursiveIncludes.order": { "type": "string", "enum": [ + "", "depthFirst", "breadthFirst" ], - "default": "depthFirst", "markdownDescription": "%c_cpp.configuration.default.recursiveIncludes.order.markdownDescription%", "scope": "resource" }, From 4639ac60493b8f6648348c552ce49120fd3d424b Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Fri, 25 Apr 2025 11:22:01 -0700 Subject: [PATCH 28/33] Update changelog for 1.25.2 (#13550) * Update changelog for 1.25.2. --- Extension/CHANGELOG.md | 6 +++++- Extension/package.json | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index 592bd66d5..f5c5e6350 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -1,5 +1,10 @@ # C/C++ for Visual Studio Code Changelog +## Version 1.25.2: April 25, 2025 +### Bug Fixes +* Fix a crash in `read_double`. [#13435](https://github.com/Microsoft/vscode-cpptools/issues/13435) +* Fix a crash with Copilot hover. + ## Version 1.25.1: April 22, 2025 ### Enhancement * Add a configuration warning message explaining why paths in quotes can't be found. [#11955](https://github.com/microsoft/vscode-cpptools/issues/11955) @@ -7,7 +12,6 @@ ### Bug Fixes * Fix no error appearing in the configuration UI when an invalid `compilerPath` is used. [#12661](https://github.com/microsoft/vscode-cpptools/issues/12661) * Fix the 'Debug C/C++ File' button sometimes disappearing. [#13400](https://github.com/microsoft/vscode-cpptools/issues/13400) -* Fix some cases of a tag parser crash with `read_double`. [#13435](https://github.com/Microsoft/vscode-cpptools/issues/13435) * Fix issues with the `recursiveIncludes` properties in the configuration UI editor. [PR #13498](https://github.com/microsoft/vscode-cpptools/pull/13498) * Update clang-tidy and clang-format from 20.1.2 to 20.1.3 (which has some bug fixes). * Fix some translation issues. diff --git a/Extension/package.json b/Extension/package.json index 554940501..147cd685c 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -2,7 +2,7 @@ "name": "cpptools", "displayName": "C/C++", "description": "C/C++ IntelliSense, debugging, and code browsing.", - "version": "1.25.1-main", + "version": "1.25.2-main", "publisher": "ms-vscode", "icon": "LanguageCCPP_color_128x.png", "readme": "README.md", @@ -6651,4 +6651,4 @@ "postcss": "^8.4.31", "gulp-typescript/**/glob-parent": "^5.1.2" } -} +} \ No newline at end of file From 35e53762355eff7afac62d43418036d68416d539 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson <49173979+Colengms@users.noreply.github.com> Date: Fri, 25 Apr 2025 15:07:35 -0700 Subject: [PATCH 29/33] Fix errors reported for recursive includes settings validations (#13554) --- Extension/src/LanguageServer/settings.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Extension/src/LanguageServer/settings.ts b/Extension/src/LanguageServer/settings.ts index cff19f2d9..449143439 100644 --- a/Extension/src/LanguageServer/settings.ts +++ b/Extension/src/LanguageServer/settings.ts @@ -444,9 +444,9 @@ export class CppSettings extends Settings { public get defaultBrowsePath(): string[] | undefined { return this.getArrayOfStringsWithUndefinedDefault("default.browse.path"); } public get defaultDatabaseFilename(): string | undefined { return changeBlankStringToUndefined(this.getAsStringOrUndefined("default.browse.databaseFilename")); } public get defaultLimitSymbolsToIncludedHeaders(): boolean { return this.getAsBoolean("default.browse.limitSymbolsToIncludedHeaders"); } - public get defaultRecursiveIncludesReduce(): string { return this.getAsString("default.recursiveIncludes.reduce"); } - public get defaultRecursiveIncludesPriority(): string { return this.getAsString("default.recursiveIncludes.priority"); } - public get defaultRecursiveIncludesOrder(): string { return this.getAsString("default.recursiveIncludes.order"); } + public get defaultRecursiveIncludesReduce(): string | undefined { return this.getAsStringOrUndefined("default.recursiveIncludes.reduce"); } + public get defaultRecursiveIncludesPriority(): string | undefined { return this.getAsStringOrUndefined("default.recursiveIncludes.priority"); } + public get defaultRecursiveIncludesOrder(): string | undefined { return this.getAsStringOrUndefined("default.recursiveIncludes.order"); } public get defaultSystemIncludePath(): string[] | undefined { return this.getArrayOfStringsWithUndefinedDefault("default.systemIncludePath"); } public get defaultEnableConfigurationSquiggles(): boolean { return this.getAsBoolean("default.enableConfigurationSquiggles"); } public get defaultCustomConfigurationVariables(): Associations | undefined { return this.getAsAssociations("default.customConfigurationVariables", true) ?? undefined; } From 4fc36fa25d8ea75b5d8dacf1ca7e66145fa768ba Mon Sep 17 00:00:00 2001 From: Luca <681992+lukka@users.noreply.github.com> Date: Fri, 25 Apr 2025 16:27:27 -0700 Subject: [PATCH 30/33] avoid reporting cancellation as errors (#13552) --- .../src/LanguageServer/copilotProviders.ts | 21 +++++++++++-------- .../tests/copilotProviders.test.ts | 10 ++++----- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/Extension/src/LanguageServer/copilotProviders.ts b/Extension/src/LanguageServer/copilotProviders.ts index 32a63013e..e0551edcb 100644 --- a/Extension/src/LanguageServer/copilotProviders.ts +++ b/Extension/src/LanguageServer/copilotProviders.ts @@ -31,7 +31,7 @@ export interface CopilotApi { uri: vscode.Uri, context: { flags: Record }, cancellationToken: vscode.CancellationToken - ) => Promise<{ entries: vscode.Uri[]; traits?: CopilotTrait[] }> + ) => Promise<{ entries: vscode.Uri[]; traits?: CopilotTrait[] } | undefined> ): Disposable; getContextProviderAPI(version: string): Promise; } @@ -91,15 +91,18 @@ export async function registerRelatedFilesProvider(): Promise { return { entries: await includesPromise, traits: await traitsPromise }; } catch (exception) { - try { - const err: Error = exception as Error; - logger.getOutputChannelLogger().appendLine(localize("copilot.relatedfilesprovider.error", "Error while retrieving result. Reason: {0}", err.message)); + // Avoid logging the error message if it is a cancellation error. + if (exception instanceof vscode.CancellationError) { + telemetryProperties["error"] = "cancellation"; + telemetryProperties["cancellation"] = "true"; + throw exception; // Rethrow the cancellation error to be handled by the caller. + } else if (exception instanceof Error) { + telemetryProperties["error"] = "true"; + logger.getOutputChannelLogger().appendLine(localize("copilot.relatedfilesprovider.error", "Error while retrieving result. Reason: {0}", exception.message)); } - catch { - // Intentionally swallow any exception. - } - telemetryProperties["error"] = "true"; - throw exception; // Throw the exception for auto-retry. + + // In case of error retrieving the include files, we signal the caller of absence of the results by returning undefined. + return undefined; } finally { telemetryMetrics['duration'] = performance.now() - start; telemetry.logCopilotEvent('RelatedFilesProvider', telemetryProperties, telemetryMetrics); diff --git a/Extension/test/scenarios/SingleRootProject/tests/copilotProviders.test.ts b/Extension/test/scenarios/SingleRootProject/tests/copilotProviders.test.ts index ba466323d..4a5c2c824 100644 --- a/Extension/test/scenarios/SingleRootProject/tests/copilotProviders.test.ts +++ b/Extension/test/scenarios/SingleRootProject/tests/copilotProviders.test.ts @@ -24,7 +24,7 @@ describe('copilotProviders Tests', () => { let getClientsStub: sinon.SinonStub; let activeClientStub: sinon.SinonStubbedInstance; let vscodeGetExtensionsStub: sinon.SinonStub; - let callbackPromise: Promise<{ entries: vscode.Uri[]; traits?: CopilotTrait[] }> | undefined; + let callbackPromise: Promise<{ entries: vscode.Uri[]; traits?: CopilotTrait[] } | undefined> | undefined; let vscodeExtension: vscode.Extension; let telemetryStub: sinon.SinonStub; @@ -52,7 +52,7 @@ describe('copilotProviders Tests', () => { uri: vscode.Uri, context: { flags: Record }, cancellationToken: vscode.CancellationToken - ) => Promise<{ entries: vscode.Uri[]; traits?: CopilotTrait[] }> + ) => Promise<{ entries: vscode.Uri[]; traits?: CopilotTrait[] } | undefined> ): vscode.Disposable & { [Symbol.dispose](): void } { return { dispose: () => { }, @@ -88,13 +88,13 @@ describe('copilotProviders Tests', () => { }); const arrange = ({ vscodeExtension, getIncludeFiles, projectContext, rootUri, flags }: - { vscodeExtension?: vscode.Extension; getIncludeFiles?: GetIncludesResult; projectContext?: ProjectContext; rootUri?: vscode.Uri; flags?: Record } = - { vscodeExtension: undefined, getIncludeFiles: undefined, projectContext: undefined, rootUri: undefined, flags: {} } + { vscodeExtension?: vscode.Extension; getIncludeFiles?: GetIncludesResult; projectContext?: ProjectContext; rootUri?: vscode.Uri; flags?: Record } = + { vscodeExtension: undefined, getIncludeFiles: undefined, projectContext: undefined, rootUri: undefined, flags: {} } ) => { activeClientStub.getIncludes.resolves(getIncludeFiles); sinon.stub(lmTool, 'getProjectContext').resolves(projectContext); sinon.stub(activeClientStub, 'RootUri').get(() => rootUri); - mockCopilotApi.registerRelatedFilesProvider.callsFake((_providerId: { extensionId: string; languageId: string }, callback: (uri: vscode.Uri, context: { flags: Record }, cancellationToken: vscode.CancellationToken) => Promise<{ entries: vscode.Uri[]; traits?: CopilotTrait[] }>) => { + mockCopilotApi.registerRelatedFilesProvider.callsFake((_providerId: { extensionId: string; languageId: string }, callback: (uri: vscode.Uri, context: { flags: Record }, cancellationToken: vscode.CancellationToken) => Promise<{ entries: vscode.Uri[]; traits?: CopilotTrait[] } | undefined>) => { if (_providerId.languageId === 'cpp') { const tokenSource = new vscode.CancellationTokenSource(); try { From fd57bfd074d9db3a17e611dbc87c42db4edc3df4 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Mon, 28 Apr 2025 11:57:31 -0700 Subject: [PATCH 31/33] Localization update for 1.25.3 (#13561) * Localization - Translated Strings --- .../i18n/chs/src/LanguageServer/configurations.i18n.json | 2 +- .../i18n/cht/src/LanguageServer/configurations.i18n.json | 2 +- Extension/i18n/csy/package.i18n.json | 2 +- .../i18n/csy/src/LanguageServer/configurations.i18n.json | 2 +- Extension/i18n/deu/package.i18n.json | 2 +- .../i18n/deu/src/LanguageServer/configurations.i18n.json | 2 +- .../i18n/esn/src/LanguageServer/configurations.i18n.json | 2 +- .../i18n/fra/src/LanguageServer/configurations.i18n.json | 2 +- Extension/i18n/ita/package.i18n.json | 4 ++-- .../i18n/ita/src/LanguageServer/configurations.i18n.json | 2 +- .../i18n/jpn/src/LanguageServer/configurations.i18n.json | 2 +- .../i18n/kor/src/LanguageServer/configurations.i18n.json | 2 +- .../i18n/plk/src/LanguageServer/configurations.i18n.json | 2 +- .../i18n/ptb/src/LanguageServer/configurations.i18n.json | 2 +- .../i18n/rus/src/LanguageServer/configurations.i18n.json | 2 +- Extension/i18n/trk/package.i18n.json | 4 ++-- .../i18n/trk/src/LanguageServer/configurations.i18n.json | 2 +- 17 files changed, 19 insertions(+), 19 deletions(-) diff --git a/Extension/i18n/chs/src/LanguageServer/configurations.i18n.json b/Extension/i18n/chs/src/LanguageServer/configurations.i18n.json index a2a854e4c..bcee90c66 100644 --- a/Extension/i18n/chs/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/chs/src/LanguageServer/configurations.i18n.json @@ -14,7 +14,7 @@ "cannot.find": "无法找到: {0}", "cannot.resolve.compiler.path": "输入无效,无法解析编译器路径", "path.is.not.a.file": "路径不是文件: {0}", - "wrapped.with.quotes": "Do not add extra quotes around paths.", + "wrapped.with.quotes": "不要在路径周围添加额外的引号。", "path.is.not.a.directory": "路径不是目录: {0}", "duplicate.name": "{0} 重复。配置名称应是唯一的。", "multiple.paths.not.allowed": "不允许使用多个路径。", diff --git a/Extension/i18n/cht/src/LanguageServer/configurations.i18n.json b/Extension/i18n/cht/src/LanguageServer/configurations.i18n.json index ab3ad8dec..6dad8fbeb 100644 --- a/Extension/i18n/cht/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/cht/src/LanguageServer/configurations.i18n.json @@ -14,7 +14,7 @@ "cannot.find": "找不到: {0}", "cannot.resolve.compiler.path": "輸入無效,無法解析編譯器路徑", "path.is.not.a.file": "路徑不是檔案: {0}", - "wrapped.with.quotes": "Do not add extra quotes around paths.", + "wrapped.with.quotes": "請勿在路徑周圍新增額外的引號。", "path.is.not.a.directory": "路徑不是目錄: {0}", "duplicate.name": "{0} 重複。組態名稱應該是唯一的。", "multiple.paths.not.allowed": "不允許使用多個路徑。", diff --git a/Extension/i18n/csy/package.i18n.json b/Extension/i18n/csy/package.i18n.json index 6176c3c95..f5b1d07f5 100644 --- a/Extension/i18n/csy/package.i18n.json +++ b/Extension/i18n/csy/package.i18n.json @@ -254,7 +254,7 @@ "c_cpp.configuration.hover.description": "Pokud je tato možnost zakázaná, podrobnosti o najetí myší už nebude poskytovat jazykový server.", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "Povolte integrační služby pro [správce závislostí vcpkg](https://aka.ms/vcpkg/).", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "Pokud existují závislosti, přidejte cesty pro zahrnuté soubory z `nan` a `node-addon-api`.", - "c_cpp.configuration.copilotHover.markdownDescription": "Pokud je zakázáno (`disabled`), při najetí myší se nezobrazí možnost Vygenerovat souhrn Copilot.", + "c_cpp.configuration.copilotHover.markdownDescription": "Pokud je zakázáno (`disabled`), při najetí myší se nezobrazí možnost Vygenerovat souhrn Copilotu.", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Když se tato hodnota nastaví na `true`, operace Přejmenovat symbol bude vyžadovat platný identifikátor C/C++.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "Pokud je hodnota `true`, automatické dokončování automaticky přidá za volání funkcí znak `(`. V takovém případě se může přidat i znak `)`, což záleží na hodnotě nastavení `#editor.autoClosingBrackets#`.", "c_cpp.configuration.filesExclude.markdownDescription": "Nakonfigurujte vzory glob pro vyloučení složek (a souborů, pokud se změní `#C_Cpp.exclusionPolicy#`). Ty jsou specifické pro rozšíření C/C++ a doplňují `#files.exclude#`, ale na rozdíl od `#files.exclude#` platí také pro cesty mimo aktuální složku pracovního prostoru a neodebírají se ze zobrazení Průzkumníka. Přečtěte si další informace o [vzorech glob](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", diff --git a/Extension/i18n/csy/src/LanguageServer/configurations.i18n.json b/Extension/i18n/csy/src/LanguageServer/configurations.i18n.json index dbfbc3142..c757fdc83 100644 --- a/Extension/i18n/csy/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/csy/src/LanguageServer/configurations.i18n.json @@ -14,7 +14,7 @@ "cannot.find": "Nepovedlo se najít: {0}", "cannot.resolve.compiler.path": "Neplatný vstup, nedá se přeložit cesta ke kompilátoru.", "path.is.not.a.file": "Cesta není soubor: {0}", - "wrapped.with.quotes": "Do not add extra quotes around paths.", + "wrapped.with.quotes": "Nepřidávejte nadbytečné uvozovky kolem cest.", "path.is.not.a.directory": "Cesta není adresář: {0}", "duplicate.name": "{0} je duplicitní. Název konfigurace by měl být jedinečný.", "multiple.paths.not.allowed": "Více cest není povoleno.", diff --git a/Extension/i18n/deu/package.i18n.json b/Extension/i18n/deu/package.i18n.json index e6cab6600..42d18a86e 100644 --- a/Extension/i18n/deu/package.i18n.json +++ b/Extension/i18n/deu/package.i18n.json @@ -430,7 +430,7 @@ "c_cpp.walkthrough.create.cpp.file.description": "[Öffnen](command:toSide:workbench.action.files.openFile) oder [erstellen](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D) eine C++-Datei. Speichern Sie die Datei unbedingt mit der Erweiterung \".cpp\" extension, z. B. \"helloworld.cpp\". \n[Erstellen Sie eine C++-Datei](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D)", "c_cpp.walkthrough.create.cpp.file.altText": "Öffnen Sie eine C++-Datei oder einen Ordner mit einem C++-Projekt.", "c_cpp.walkthrough.command.prompt.title": "Von der Developer Command Prompt for VS starten", - "c_cpp.walkthrough.command.prompt.description": "Bei Verwendung des Microsoft Visual Studio C++-Compilers erfordert die C++-Erweiterung, dass Sie VS Code aus der Developer Command Prompt for VS starten. Befolgen Sie die Anweisungen auf der rechten Seite, um den Neustart zu starten.\n[Reload Window](command:workbench.action.reloadWindow)", + "c_cpp.walkthrough.command.prompt.description": "Bei Verwendung des Microsoft Visual Studio C++-Compilers erfordert die C++-Erweiterung, dass Sie VS Code aus Developer Command Prompt for VS starten. Befolgen Sie die Anweisungen auf der rechten Seite, um den Neustart zu starten.\n[Reload Window](command:workbench.action.reloadWindow)", "c_cpp.walkthrough.run.debug.title": "Ausführen und Debuggen Ihrer C++-Datei", "c_cpp.walkthrough.run.debug.mac.description": "Öffnen Sie Ihre C++-Datei, und klicken Sie in der oberen rechten Ecke des Editors auf die Wiedergabeschaltfläche, oder drücken Sie F5, wenn Sie die Datei verwenden. Wählen Sie \"clang++ – Aktive Datei erstellen und debuggen\" aus, die mit dem Debugger ausgeführt werden soll.", "c_cpp.walkthrough.run.debug.linux.description": "Öffnen Sie Ihre C++-Datei, und klicken Sie in der oberen rechten Ecke des Editors auf die Wiedergabeschaltfläche, oder drücken Sie F5, wenn Sie die Datei verwenden. Wählen Sie \"g++ – Aktive Datei erstellen und debuggen\" aus, die mit dem Debugger ausgeführt werden soll.", diff --git a/Extension/i18n/deu/src/LanguageServer/configurations.i18n.json b/Extension/i18n/deu/src/LanguageServer/configurations.i18n.json index 75dbd822b..d1571545b 100644 --- a/Extension/i18n/deu/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/deu/src/LanguageServer/configurations.i18n.json @@ -14,7 +14,7 @@ "cannot.find": "Nicht gefunden: {0}", "cannot.resolve.compiler.path": "Ungültige Eingabe, Compilerpfad kann nicht aufgelöst werden.", "path.is.not.a.file": "Der Pfad ist keine Datei: {0}", - "wrapped.with.quotes": "Do not add extra quotes around paths.", + "wrapped.with.quotes": "Fügen Sie keine zusätzlichen Anführungszeichen um Pfade hinzu.", "path.is.not.a.directory": "Der Pfad ist kein Verzeichnis: {0}", "duplicate.name": "\"{0}\" ist ein Duplikat. Der Konfigurationsname muss eindeutig sein.", "multiple.paths.not.allowed": "Mehrere Pfade sind nicht zulässig.", diff --git a/Extension/i18n/esn/src/LanguageServer/configurations.i18n.json b/Extension/i18n/esn/src/LanguageServer/configurations.i18n.json index dd3789012..9f7a3bea5 100644 --- a/Extension/i18n/esn/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/esn/src/LanguageServer/configurations.i18n.json @@ -14,7 +14,7 @@ "cannot.find": "No se encuentra {0}", "cannot.resolve.compiler.path": "Entrada no válida. No se puede resolver la ruta de acceso del compilador.", "path.is.not.a.file": "La ruta de acceso no es un archivo: {0}", - "wrapped.with.quotes": "Do not add extra quotes around paths.", + "wrapped.with.quotes": "No agregue comillas adicionales alrededor de las rutas de acceso.", "path.is.not.a.directory": "La ruta de acceso no es un directorio: {0}", "duplicate.name": "{0} es un duplicado. El nombre de la configuración debe ser único.", "multiple.paths.not.allowed": "No se permiten varias rutas de acceso.", diff --git a/Extension/i18n/fra/src/LanguageServer/configurations.i18n.json b/Extension/i18n/fra/src/LanguageServer/configurations.i18n.json index b0b131957..9fe0e9ab1 100644 --- a/Extension/i18n/fra/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/fra/src/LanguageServer/configurations.i18n.json @@ -14,7 +14,7 @@ "cannot.find": "{0} introuvable", "cannot.resolve.compiler.path": "Entrée non valide, impossible de résoudre le chemin du compilateur", "path.is.not.a.file": "Le chemin n'est pas un fichier : {0}", - "wrapped.with.quotes": "Do not add extra quotes around paths.", + "wrapped.with.quotes": "N’ajoutez pas de guillemets supplémentaires autour des chemins.", "path.is.not.a.directory": "Le chemin n'est pas un répertoire : {0}", "duplicate.name": "{0} est dupliqué. Le nom de configuration doit être unique.", "multiple.paths.not.allowed": "Il est interdit d’utiliser plusieurs chemin d’accès.", diff --git a/Extension/i18n/ita/package.i18n.json b/Extension/i18n/ita/package.i18n.json index 0ef6c2b63..7f545c998 100644 --- a/Extension/i18n/ita/package.i18n.json +++ b/Extension/i18n/ita/package.i18n.json @@ -429,8 +429,8 @@ "c_cpp.walkthrough.create.cpp.file.title": "Creare un file C++", "c_cpp.walkthrough.create.cpp.file.description": "[Apri](command:toSide:workbench.action.files.openFile) o [Crea](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D) un file C++. Assicurati di salvarlo con l'estensione \".cpp\", ad esempio \"helloworld.cpp\". \n[Crea un file C++](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D)", "c_cpp.walkthrough.create.cpp.file.altText": "Apre un file C++ o una cartella con un progetto C++.", - "c_cpp.walkthrough.command.prompt.title": "Avvia dal Prompt dei comandi per gli sviluppatori per Visual Studio", - "c_cpp.walkthrough.command.prompt.description": "Nell'ambito dell'utilizzo del compilatore C++ di Microsoft Visual Studio C++, l'estensione C++ richiede di avviare VS Code dal Prompt dei comandi per gli sviluppatori per VS. Seguire le istruzioni a destra per riavviare.\n[Ricarica finestra](command:workbench.action.reloadWindow)", + "c_cpp.walkthrough.command.prompt.title": "Avvia dal Developer Command Prompt for VS", + "c_cpp.walkthrough.command.prompt.description": "Nell'ambito dell'utilizzo del compilatore C++ di Microsoft Visual Studio C++, l'estensione C++ richiede di avviare VS Code dal Developer Command Prompt for VS. Seguire le istruzioni a destra per riavviare.\n[Ricarica finestra](command:workbench.action.reloadWindow)", "c_cpp.walkthrough.run.debug.title": "Esegui con debug il file C++", "c_cpp.walkthrough.run.debug.mac.description": "Aprire il file C++ e fare clic sul pulsante Riproduci nell'angolo in alto a destra dell'editor oppure premere F5 quando è presente sul file. Selezionare \"clang++ - Compila ed esegui il debug del file attivo\" da eseguire con il debugger.", "c_cpp.walkthrough.run.debug.linux.description": "Aprire il file C++ e fare clic sul pulsante Riproduci nell'angolo in alto a destra dell'editor oppure premere F5 quando è presente sul file. Selezionare \"g++ - Compila ed esegue il debug del file attivo\" da eseguire con il debugger.", diff --git a/Extension/i18n/ita/src/LanguageServer/configurations.i18n.json b/Extension/i18n/ita/src/LanguageServer/configurations.i18n.json index 9ff2af2c3..a7838968f 100644 --- a/Extension/i18n/ita/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/ita/src/LanguageServer/configurations.i18n.json @@ -14,7 +14,7 @@ "cannot.find": "Non è possibile trovare: {0}", "cannot.resolve.compiler.path": "Input non valido. Non è possibile risolvere il percorso del compilatore", "path.is.not.a.file": "Il percorso non è un file: {0}", - "wrapped.with.quotes": "Do not add extra quotes around paths.", + "wrapped.with.quotes": "Non aggiungere virgolette aggiuntive intorno ai percorsi.", "path.is.not.a.directory": "Il percorso non è una directory: {0}", "duplicate.name": "{0} è duplicato. Il nome della configurazione deve essere univoco.", "multiple.paths.not.allowed": "Più percorsi non sono consentiti.", diff --git a/Extension/i18n/jpn/src/LanguageServer/configurations.i18n.json b/Extension/i18n/jpn/src/LanguageServer/configurations.i18n.json index aab707053..3336b4cac 100644 --- a/Extension/i18n/jpn/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/jpn/src/LanguageServer/configurations.i18n.json @@ -14,7 +14,7 @@ "cannot.find": "{0} が見つかりません。", "cannot.resolve.compiler.path": "無効な入力です。コンパイラ パスを解決できません", "path.is.not.a.file": "パスがファイルではありません: {0}", - "wrapped.with.quotes": "Do not add extra quotes around paths.", + "wrapped.with.quotes": "パスの前後に余分な引用符を追加しないでください。", "path.is.not.a.directory": "パスがディレクトリではありません: {0}", "duplicate.name": "{0} が重複しています。構成名は一意である必要があります。", "multiple.paths.not.allowed": "複数のパスは使用できません。", diff --git a/Extension/i18n/kor/src/LanguageServer/configurations.i18n.json b/Extension/i18n/kor/src/LanguageServer/configurations.i18n.json index cc41f0652..49fc09f86 100644 --- a/Extension/i18n/kor/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/kor/src/LanguageServer/configurations.i18n.json @@ -14,7 +14,7 @@ "cannot.find": "찾을 수 없음: {0}", "cannot.resolve.compiler.path": "입력이 잘못되었습니다. 컴파일러 경로를 확인할 수 없습니다.", "path.is.not.a.file": "경로가 파일이 아님: {0}", - "wrapped.with.quotes": "Do not add extra quotes around paths.", + "wrapped.with.quotes": "경로 주위에 따옴표를 추가하지 마세요.", "path.is.not.a.directory": "경로가 디렉터리가 아님: {0}", "duplicate.name": "{0}은(는) 중복됩니다. 구성 이름은 고유해야 합니다.", "multiple.paths.not.allowed": "여러 경로는 허용되지 않습니다.", diff --git a/Extension/i18n/plk/src/LanguageServer/configurations.i18n.json b/Extension/i18n/plk/src/LanguageServer/configurations.i18n.json index 14f2b9d9d..fbf2ec98b 100644 --- a/Extension/i18n/plk/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/plk/src/LanguageServer/configurations.i18n.json @@ -14,7 +14,7 @@ "cannot.find": "Nie można znaleźć: {0}", "cannot.resolve.compiler.path": "Nieprawidłowe dane wejściowe, nie można rozpoznać ścieżki kompilatora", "path.is.not.a.file": "Ścieżka nie jest plikiem: {0}", - "wrapped.with.quotes": "Do not add extra quotes around paths.", + "wrapped.with.quotes": "Nie dodawaj dodatkowych cudzysłowów wokół ścieżek.", "path.is.not.a.directory": "Ścieżka nie jest katalogiem: {0}", "duplicate.name": "Element {0} jest duplikatem. Nazwa konfiguracji musi być unikatowa.", "multiple.paths.not.allowed": "Wiele ścieżek jest niedozwolonych.", diff --git a/Extension/i18n/ptb/src/LanguageServer/configurations.i18n.json b/Extension/i18n/ptb/src/LanguageServer/configurations.i18n.json index 856135f5f..827d4c520 100644 --- a/Extension/i18n/ptb/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/ptb/src/LanguageServer/configurations.i18n.json @@ -14,7 +14,7 @@ "cannot.find": "Não é possível localizar: {0}", "cannot.resolve.compiler.path": "Entrada inválida. Não é possível resolver o caminho do compilador", "path.is.not.a.file": "O caminho não é um arquivo: {0}", - "wrapped.with.quotes": "Do not add extra quotes around paths.", + "wrapped.with.quotes": "Não adicione aspas extras ao redor de caminhos.", "path.is.not.a.directory": "O caminho não é um diretório: {0}", "duplicate.name": "{0} é uma duplicata. O nome da configuração deve ser exclusivo.", "multiple.paths.not.allowed": "Vários caminhos não são permitidos.", diff --git a/Extension/i18n/rus/src/LanguageServer/configurations.i18n.json b/Extension/i18n/rus/src/LanguageServer/configurations.i18n.json index 758c606bc..6898427e7 100644 --- a/Extension/i18n/rus/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/rus/src/LanguageServer/configurations.i18n.json @@ -14,7 +14,7 @@ "cannot.find": "Не удается найти: {0}", "cannot.resolve.compiler.path": "Недопустимые входные данные; не удается разрешить путь компилятора", "path.is.not.a.file": "Путь не является файлом: {0}", - "wrapped.with.quotes": "Do not add extra quotes around paths.", + "wrapped.with.quotes": "Не добавляйте лишние кавычки вокруг путей.", "path.is.not.a.directory": "Путь не является каталогом: {0}", "duplicate.name": "{0} является дубликатом. Имя конфигурации должно быть уникальным.", "multiple.paths.not.allowed": "Запрещено использовать несколько путей.", diff --git a/Extension/i18n/trk/package.i18n.json b/Extension/i18n/trk/package.i18n.json index d36424816..9b0406680 100644 --- a/Extension/i18n/trk/package.i18n.json +++ b/Extension/i18n/trk/package.i18n.json @@ -429,8 +429,8 @@ "c_cpp.walkthrough.create.cpp.file.title": "C++ dosyası oluşturun", "c_cpp.walkthrough.create.cpp.file.description": "Bir C++ dosyasını [açın](command:toSide:workbench.action.files.openFile) veya C++ dosyası [oluşturun](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D). Dosyayı \".cpp\" uzantısıyla (ör. \"helloworld.cpp\".) kaydetmeyi unutmayın.\n[C++ dosyası oluşturun](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D)", "c_cpp.walkthrough.create.cpp.file.altText": "Bir C++ dosyası veya bir klasörü C++ projesiyle açın.", - "c_cpp.walkthrough.command.prompt.title": "VS için Developer Command Prompt'tan başlat", - "c_cpp.walkthrough.command.prompt.description": "Microsoft Visual Studio C++ derleyicisini kullanırken, C++ uzantısı, VS için Developer Command Prompt'tan VS Code'u başlatmanızı gerektirir. Yeniden başlatmak için sağdaki talimatları izleyin.\n[Yeniden Yükleme Penceresi](command:workbench.action.reloadWindow)", + "c_cpp.walkthrough.command.prompt.title": "Developer Command Prompt for VS'tan başlat", + "c_cpp.walkthrough.command.prompt.description": "Microsoft Visual Studio C++ derleyicisini kullanırken, C++ uzantısı, Developer Command Prompt for VS'tan VS Code'u başlatmanızı gerektirir. Yeniden başlatmak için sağdaki talimatları izleyin.\n[Yeniden Yükleme Penceresi](command:workbench.action.reloadWindow)", "c_cpp.walkthrough.run.debug.title": "C++ dosyanızı çalıştırın ve hata ayıklayın", "c_cpp.walkthrough.run.debug.mac.description": "C++ dosyanızı açın ve düzenleyicinin sağ üst köşesindeki oynat düğmesine tıklayın veya dosyadayken F5'e basın. Hata ayıklayıcı ile çalıştırmak için \"clang++ - Etkin dosya derle ve hata ayıkla\" seçeneğini seçin.", "c_cpp.walkthrough.run.debug.linux.description": "C++ dosyanızı açın ve düzenleyicinin sağ üst köşesindeki oynat düğmesine tıklayın veya dosyadayken F5'e basın. Hata ayıklayıcı ile çalıştırmak için \"g++ - Aktif dosya derle ve hata ayıkla\"yı seçin.", diff --git a/Extension/i18n/trk/src/LanguageServer/configurations.i18n.json b/Extension/i18n/trk/src/LanguageServer/configurations.i18n.json index 1f1a6369b..1be7fb7c2 100644 --- a/Extension/i18n/trk/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/trk/src/LanguageServer/configurations.i18n.json @@ -14,7 +14,7 @@ "cannot.find": "{0} bulunamıyor", "cannot.resolve.compiler.path": "Giriş geçersiz, derleyici yolu çözümlenemiyor", "path.is.not.a.file": "Yol bir dosya değil: {0}", - "wrapped.with.quotes": "Do not add extra quotes around paths.", + "wrapped.with.quotes": "Yolların etrafına fazladan tırnak işareti eklemeyin.", "path.is.not.a.directory": "Yol bir dizin değil: {0}", "duplicate.name": "{0} yineleniyor. Yapılandırma adı benzersiz olmalıdır.", "multiple.paths.not.allowed": "Birden fazla yola izin verilmez.", From 73c95bef484dc8c92b911f339cb416cc81cf8698 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Mon, 28 Apr 2025 12:04:43 -0700 Subject: [PATCH 32/33] Update changelog for 1.25.3. (#13560) * Update changelog for 1.25.3. --- Extension/CHANGELOG.md | 22 +++++++--------------- Extension/package.json | 2 +- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index f5c5e6350..ac662dd8a 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -1,32 +1,24 @@ # C/C++ for Visual Studio Code Changelog -## Version 1.25.2: April 25, 2025 -### Bug Fixes -* Fix a crash in `read_double`. [#13435](https://github.com/Microsoft/vscode-cpptools/issues/13435) -* Fix a crash with Copilot hover. - -## Version 1.25.1: April 22, 2025 +## Version 1.25.3: April 28, 2025 ### Enhancement * Add a configuration warning message explaining why paths in quotes can't be found. [#11955](https://github.com/microsoft/vscode-cpptools/issues/11955) +* Improve the description of the `C_Cpp.copilotHover` setting. [PR #13461](https://github.com/microsoft/vscode-cpptools/pull/13461) ### Bug Fixes * Fix no error appearing in the configuration UI when an invalid `compilerPath` is used. [#12661](https://github.com/microsoft/vscode-cpptools/issues/12661) * Fix the 'Debug C/C++ File' button sometimes disappearing. [#13400](https://github.com/microsoft/vscode-cpptools/issues/13400) -* Fix issues with the `recursiveIncludes` properties in the configuration UI editor. [PR #13498](https://github.com/microsoft/vscode-cpptools/pull/13498) -* Update clang-tidy and clang-format from 20.1.2 to 20.1.3 (which has some bug fixes). -* Fix some translation issues. - -## Version 1.25.0: April 10, 2025 -### Enhancement -* Improve the description of the `C_Cpp.copilotHover` setting. [PR #13461](https://github.com/microsoft/vscode-cpptools/pull/13461) - -### Bug Fixes +* Fix a crash in `read_double`. [#13435](https://github.com/Microsoft/vscode-cpptools/issues/13435) * Fix the handling of default file associations for certain file extensions. [PR #13455](https://github.com/microsoft/vscode-cpptools/pull/13455) * Fix shell parsing of the arguments of a full command line in `compilerPath`. [PR #13468](https://github.com/microsoft/vscode-cpptools/pull/13468) * Fix C and CUDA files being interpreted as C++ in `compile_commands.json`. [#13471](https://github.com/microsoft/vscode-cpptools/issues/13471) * Stop automatically mapping a `.C` file to C++ if it's already set in `files.associations`. [PR #13476](https://github.com/microsoft/vscode-cpptools/pull/13476) +* Fix issues with the `recursiveIncludes` properties in the configuration UI editor. [PR #13498](https://github.com/microsoft/vscode-cpptools/pull/13498) * Fix IntelliSense not updating after the language ID is changed, and prevent the language ID from being changed if it's set from `compile_commands.json` or a configuration provider. +* Update clang-tidy and clang-format from 20.1.2 to 20.1.3 (which has some bug fixes). * Fix a case where language server crash messages appear after 4 minutes. +* Fix a crash with Copilot hover. +* Fix some translation issues. ## Version 1.24.5: April 3, 2025 ### New Feature diff --git a/Extension/package.json b/Extension/package.json index 147cd685c..559028bec 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -2,7 +2,7 @@ "name": "cpptools", "displayName": "C/C++", "description": "C/C++ IntelliSense, debugging, and code browsing.", - "version": "1.25.2-main", + "version": "1.25.3-main", "publisher": "ms-vscode", "icon": "LanguageCCPP_color_128x.png", "readme": "README.md", From ff55c59e19b5a5711e78256102768e918aefee59 Mon Sep 17 00:00:00 2001 From: Luca <681992+lukka@users.noreply.github.com> Date: Mon, 28 Apr 2025 15:01:25 -0700 Subject: [PATCH 33/33] telemetry addition (#13564) --- .../src/LanguageServer/copilotCompletionContextProvider.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Extension/src/LanguageServer/copilotCompletionContextProvider.ts b/Extension/src/LanguageServer/copilotCompletionContextProvider.ts index d255f24a3..59c5d4711 100644 --- a/Extension/src/LanguageServer/copilotCompletionContextProvider.ts +++ b/Extension/src/LanguageServer/copilotCompletionContextProvider.ts @@ -355,7 +355,10 @@ response.uri:${copilotCompletionContext.sourceFileUri || ""}:${copilotC try { featureFlag = await this.getEnabledFeatureFlag(context); telemetry.addRequestMetadata(context.documentContext.uri, context.documentContext.offset, - context.completionId, context.documentContext.languageId, { featureFlag, timeBudgetMs: cppTimeBudgetMs, maxCaretDistance }); + context.completionId, context.documentContext.languageId, { + featureFlag, timeBudgetMs: cppTimeBudgetMs, maxCaretDistance, + maxSnippetCount, maxSnippetLength, doAggregateSnippets + }); if (featureFlag === undefined) { return []; } const cacheEntry: CacheEntry | undefined = this.completionContextCache.get(docUri.toString()); const defaultValue = cacheEntry?.[1];