diff --git a/.github/actions/package-lock.json b/.github/actions/package-lock.json index 74f33b5af..700d915c5 100644 --- a/.github/actions/package-lock.json +++ b/.github/actions/package-lock.json @@ -13,7 +13,7 @@ "@octokit/rest": "^21.1.1", "@slack/web-api": "^6.9.1", "applicationinsights": "^2.5.1", - "axios": "^1.8.2", + "axios": "^1.12.1", "uuid": "^8.3.2" }, "devDependencies": { @@ -2960,24 +2960,26 @@ "license": "MIT" }, "node_modules/axios": { - "version": "1.8.2", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/axios/-/axios-1.8.2.tgz", - "integrity": "sha1-+r4G4kHf6DBx1O37yqexw6QPeXk=", + "version": "1.12.1", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/axios/-/axios-1.12.1.tgz", + "integrity": "sha1-B0eznFthX4H5PywTjm2CpxQmk38=", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", + "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, "node_modules/axios/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha1-k5Gdrq82HuUpWEubMWZNwSyfpFI=", + "version": "4.0.4", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha1-eEzczgZpqdaOlNEaxO6pgIjt0sQ=", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.12" }, "engines": { @@ -3040,9 +3042,9 @@ "optional": true }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "version": "1.1.12", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha1-q5tFRGblqMw6GHvqrVgEEqnFuEM=", "dev": true, "license": "MIT", "dependencies": { @@ -3108,6 +3110,19 @@ "ieee754": "^1.1.13" } }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha1-S1QowiK+mF15w9gmV0edvgtZstY=", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/callsites/-/callsites-3.1.0.tgz", @@ -3452,6 +3467,20 @@ "node": ">=6.0.0" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha1-165mfh3INIL4tw/Q9u78UNow9Yo=", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/emitter-listener": { "version": "1.1.2", "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/emitter-listener/-/emitter-listener-1.1.2.tgz", @@ -3468,6 +3497,51 @@ "dev": true, "license": "MIT" }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha1-mD6y+aZyTpMD9hrd8BHHLgngsPo=", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha1-BfdaJdq5jk+x3NXhRywFRtUFfI8=", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha1-HE8sSDcydZfOadLKGQp/3RcjOME=", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha1-8x274MGDsAptJutjJcgQwP0YvU0=", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/escalade/-/escalade-3.2.0.tgz", @@ -3939,14 +4013,17 @@ } }, "node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha1-8svsV7XlniNxbhKP5E1OXdI4lfQ=", + "version": "2.5.5", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/form-data/-/form-data-2.5.5.tgz", + "integrity": "sha1-pfY2Stfk5n6VtKB+LYxvcRx09iQ=", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.35", + "safe-buffer": "^5.2.1" }, "engines": { "node": ">= 0.12" @@ -4002,6 +4079,43 @@ "node": "*" } }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha1-dD8OO2lkqTpUke0b/6rgVNf5jQE=", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha1-FQs/J0OGnvPoUewMSdFbHRTQDuE=", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/glob": { "version": "8.1.0", "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/glob/-/glob-8.1.0.tgz", @@ -4036,9 +4150,9 @@ } }, "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha1-HtxFng8MVISG7Pn8mfIiE2S5oK4=", + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha1-VPxTI3phPYVMe9N0Y6rRffhyFOc=", "dev": true, "license": "MIT", "dependencies": { @@ -4095,6 +4209,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha1-ifVrghe9vIgCvSmd9tfxCB1+UaE=", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/graphemer/-/graphemer-1.4.0.tgz", @@ -4112,6 +4238,33 @@ "node": ">=8" } }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha1-/JxqeDoISVHQuXH+EBjegTcHozg=", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha1-LNxC1AvvLltO6rfAGnPFTOerWrw=", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/hasown/-/hasown-2.0.2.tgz", @@ -4533,6 +4686,15 @@ "dev": true, "license": "ISC" }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha1-oN10voHiqlwvJ+Zc4oNgXuTit/k=", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/memory-pager": { "version": "1.5.0", "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/memory-pager/-/memory-pager-1.5.0.tgz", @@ -4636,9 +4798,9 @@ } }, "node_modules/mocha/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha1-HtxFng8MVISG7Pn8mfIiE2S5oK4=", + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha1-VPxTI3phPYVMe9N0Y6rRffhyFOc=", "dev": true, "license": "MIT", "dependencies": { @@ -5228,7 +5390,6 @@ "version": "5.2.1", "resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=", - "dev": true, "funding": [ { "type": "github", diff --git a/.github/actions/package.json b/.github/actions/package.json index 6ada8fda4..ce3813439 100644 --- a/.github/actions/package.json +++ b/.github/actions/package.json @@ -15,7 +15,7 @@ "@octokit/rest": "^21.1.1", "@slack/web-api": "^6.9.1", "applicationinsights": "^2.5.1", - "axios": "^1.8.2", + "axios": "^1.12.1", "uuid": "^8.3.2" }, "devDependencies": { diff --git a/Build/cg/cg.yml b/Build/cg/cg.yml index da747086f..83c94364a 100644 --- a/Build/cg/cg.yml +++ b/Build/cg/cg.yml @@ -4,6 +4,7 @@ trigger: include: - main - release + - insiders schedules: - cron: 30 5 * * 0 @@ -30,13 +31,15 @@ extends: parameters: pool: name: AzurePipelines-EO - image: AzurePipelinesWindows2022compliantGPT + image: 1ESPT-Windows2022 os: windows sdl: sourceAnalysisPool: name: AzurePipelines-EO - image: AzurePipelinesWindows2022compliantGPT + image: 1ESPT-Windows2022 os: windows + binskim: + preReleaseVersion: '4.3.1' tsa: enabled: true config: @@ -109,4 +112,4 @@ extends: displayName: Uninstall vsce inputs: command: uninstall - arguments: --global @vscode/vsce \ No newline at end of file + arguments: --global @vscode/vsce diff --git a/Build/loc/TranslationsImportExport.yml b/Build/loc/TranslationsImportExport.yml index 861916252..78e33955b 100644 --- a/Build/loc/TranslationsImportExport.yml +++ b/Build/loc/TranslationsImportExport.yml @@ -30,12 +30,12 @@ extends: parameters: pool: name: AzurePipelines-EO - image: AzurePipelinesWindows2022compliantGPT + image: 1ESPT-Windows2022 os: windows sdl: sourceAnalysisPool: name: AzurePipelines-EO - image: AzurePipelinesWindows2022compliantGPT + image: 1ESPT-Windows2022 os: windows stages: - stage: stage diff --git a/Build/package/cpptools_extension_pack.yml b/Build/package/cpptools_extension_pack.yml index ef49f2128..a2f1e8820 100644 --- a/Build/package/cpptools_extension_pack.yml +++ b/Build/package/cpptools_extension_pack.yml @@ -24,12 +24,12 @@ extends: parameters: pool: name: AzurePipelines-EO - image: AzurePipelinesWindows2022compliantGPT + image: 1ESPT-Windows2022 os: windows sdl: sourceAnalysisPool: name: AzurePipelines-EO - image: AzurePipelinesWindows2022compliantGPT + image: 1ESPT-Windows2022 os: windows stages: diff --git a/Build/package/cpptools_themes.yml b/Build/package/cpptools_themes.yml index eec1ac9f2..f15eb25fa 100644 --- a/Build/package/cpptools_themes.yml +++ b/Build/package/cpptools_themes.yml @@ -24,12 +24,12 @@ extends: parameters: pool: name: AzurePipelines-EO - image: AzurePipelinesWindows2022compliantGPT + image: 1ESPT-Windows2022 os: windows sdl: sourceAnalysisPool: name: AzurePipelines-EO - image: AzurePipelinesWindows2022compliantGPT + image: 1ESPT-Windows2022 os: windows stages: diff --git a/Build/publish/cpptools_extension_pack.yml b/Build/publish/cpptools_extension_pack.yml index 9e93ee5c3..e78aba160 100644 --- a/Build/publish/cpptools_extension_pack.yml +++ b/Build/publish/cpptools_extension_pack.yml @@ -18,12 +18,12 @@ extends: parameters: pool: name: AzurePipelines-EO - image: AzurePipelinesWindows2022compliantGPT + image: 1ESPT-Windows2022 os: windows sdl: sourceAnalysisPool: name: AzurePipelines-EO - image: AzurePipelinesWindows2022compliantGPT + image: 1ESPT-Windows2022 os: windows stages: diff --git a/Build/publish/cpptools_themes.yml b/Build/publish/cpptools_themes.yml index b9b167a08..4e35a50c3 100644 --- a/Build/publish/cpptools_themes.yml +++ b/Build/publish/cpptools_themes.yml @@ -18,12 +18,12 @@ extends: parameters: pool: name: AzurePipelines-EO - image: AzurePipelinesWindows2022compliantGPT + image: 1ESPT-Windows2022 os: windows sdl: sourceAnalysisPool: name: AzurePipelines-EO - image: AzurePipelinesWindows2022compliantGPT + image: 1ESPT-Windows2022 os: windows stages: diff --git a/Documentation/LanguageServer/c_cpp_properties.json.md b/Documentation/LanguageServer/c_cpp_properties.json.md index e4dd1e58e..d9bd52a0c 100644 --- a/Documentation/LanguageServer/c_cpp_properties.json.md +++ b/Documentation/LanguageServer/c_cpp_properties.json.md @@ -1 +1 @@ -The documentation for c_cpp_properties.json has moved to https://code.visualstudio.com/docs/cpp/c-cpp-properties-schema-reference. \ No newline at end of file +The documentation for c_cpp_properties.json has moved to https://code.visualstudio.com/docs/cpp/customize-cpp-settings. \ No newline at end of file diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index b52d46eed..f9c0df2a7 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -1,11 +1,52 @@ # C/C++ for Visual Studio Code Changelog +## Version 1.27.7: September 18, 2025 +### Enhancements +* Show a warning when too many files are processed in a workspace. [#10828](https://github.com/microsoft/vscode-cpptools/issues/10828) +* Improvements to GitHub Copilot activation. [PR #13924](https://github.com/microsoft/vscode-cpptools/pull/13924) + * Thank you for the contribution. [@dbaeumer (Dirk Bäumer)](https://github.com/dbaeumer) +* Add a `C_Cpp.windowsErrorReportingMode` setting and default to only enabling WER for the first crash in a session. [#13928](https://github.com/microsoft/vscode-cpptools/issues/13928) + +### Bug Fixes +* Fix the `__FILE_NAME__` macro being undefined with IntelliSense when using GCC/Clang. [#11164](https://github.com/microsoft/vscode-cpptools/issues/11164) +* Fix an IntelliSense crash in `add_cached_tokens_to_string`. [#11900](https://github.com/microsoft/vscode-cpptools/issues/11900) +* Fix an IntelliSense crash in `find_subobject_for_interpreter_address`. [#12464](https://github.com/microsoft/vscode-cpptools/issues/12464) +* Fix input delays when editing `c_cpp_properties.json`. [#13591](https://github.com/microsoft/vscode-cpptools/issues/13591) +* Fix changes to the active field being lost in the configuration UI when navigating away. [#13636](https://github.com/microsoft/vscode-cpptools/issues/13636) +* Fix compiler query failing on Windows if optional job-related API calls fail. [#13679](https://github.com/microsoft/vscode-cpptools/issues/13679) +* Fix bugs with Doxygen comments. [#13725](https://github.com/microsoft/vscode-cpptools/issues/13725), [#13726](https://github.com/microsoft/vscode-cpptools/issues/13726), [#13745](https://github.com/microsoft/vscode-cpptools/issues/13745) +* Fix bugs with 'Create Definition'. [#13741](https://github.com/microsoft/vscode-cpptools/issues/13741), [#13773](https://github.com/microsoft/vscode-cpptools/issues/13773) +* Fix IntelliSense crashes when there are duplicate constexpr template functions in a TU. [#13775](https://github.com/microsoft/vscode-cpptools/issues/13775) +* Fix the description of `debugServerPath`. [PR #13778](https://github.com/microsoft/vscode-cpptools/pull/13778) + * Thank you for the contribution. [@redstrate (Joshua Goins)](https://github.com/redstrate) +* Remove `-fmodule-mapper`, `-fdeps-format`, and some additional unnecessary args from compiler queries. [#13782](https://github.com/microsoft/vscode-cpptools/issues/13782) +* Fix `-imacro` not configuring IntelliSense correctly. [#13785](https://github.com/microsoft/vscode-cpptools/issues/13785) +* Fix `pipeTransport.quoteArgs` not being handled correctly. [#13791](https://github.com/microsoft/vscode-cpptools/issues/13791) + * Thank you for the contribution. [@mrjist (Matt)](https://github.com/mrjist) [PR #13794](https://github.com/microsoft/vscode-cpptools/pull/13794) +* Fix `.txx` and `.tpp` not being handled as C++ header files. [#13808](https://github.com/microsoft/vscode-cpptools/issues/13808) +* Fix an error when using GitHub Copilot with VS Code older than 1.90.0. [#13818](https://github.com/microsoft/vscode-cpptools/issues/13818) +* Fix activation failing if the `c_cpp_properties.json` exists but fails to be opened. [#13829](https://github.com/microsoft/vscode-cpptools/issues/13829) +* Fix crash recovery. [#13838](https://github.com/microsoft/vscode-cpptools/issues/13838) +* Fix Doxygen generation overwriting a function signature. [#13839](https://github.com/microsoft/vscode-cpptools/issues/13839) +* Fix a crash on Windows 7, 8, and 10 (Server 2008, 2012, and 2016). [#13851](https://github.com/microsoft/vscode-cpptools/issues/13851) +* Fix "CMake Tools" translations. [PR #13854](https://github.com/microsoft/vscode-cpptools/pull/13854) +* Fix the language server getting stuck by a notification message box after a configuration provider times out. [#13862](https://github.com/microsoft/vscode-cpptools/issues/13862) +* Fix a crash regression with `__BASE_FILE__`. [#13866](https://github.com/microsoft/vscode-cpptools/issues/13866) +* Fix non-recursive browse paths from configuration providers. [#13886](https://github.com/microsoft/vscode-cpptools/issues/13886) +* Fix an infinite recursion IntelliSense crash. [#13908](https://github.com/microsoft/vscode-cpptools/issues/13908) +* Fix an IntelliSense crash during completion when using GCC ARM compilers. [#13925](https://github.com/microsoft/vscode-cpptools/issues/13925) +* Fix an IntelliSense bug that could cause incorrect string lengths to be reported for string literals in files that use certain file encodings. +* Fix an IntelliSense process crash involving `requires` expressions and templates. +* Fix an IntelliSense process crash from deleting memory that is still in use. +* Fix an IntelliSense process crash with `class_has_mutable_member`. +* Fix a case of uninitialized memory in `cpptools-srv`. + ## Version 1.26.5: September 10, 2025 ### Bug Fix * Fix extension activation getting stuck by GitHub Copilot activation. [#13914](https://github.com/microsoft/vscode-cpptools/issues/13914) * Thank you for the contribution. [@dbaeumer (Dirk Bäumer)](https://github.com/dbaeumer) [PR #13918](https://github.com/microsoft/vscode-cpptools/pull/13918) -## Version 1.26.4: September 8, 2025 +## Version 1.26.4: September 9, 2025 ### Enhancement * Update GitHub Copilot APIs. [PR #13877](https://github.com/microsoft/vscode-cpptools/pull/13877) * Thank you for the contribution. [@dbaeumer (Dirk Bäumer)](https://github.com/dbaeumer) @@ -28,7 +69,7 @@ * Fix `-iquote` not working after `-isystem`. [#13638](https://github.com/microsoft/vscode-cpptools/issues/13638) * Minor debugger fixes. [PR #13654](https://github.com/microsoft/vscode-cpptools/pull/13654), [PR #13671](https://github.com/microsoft/vscode-cpptools/pull/13671) * Fix `browse.path` merging with the configuration provider's `browse.path` with `"mergeConfigurations": false`. [#13660](https://github.com/microsoft/vscode-cpptools/issues/13660) -* Fix doxygen comments with `[in]`, `[in,out]`, etc. attributes. [#13682](https://github.com/microsoft/vscode-cpptools/issues/13682), [#13698](https://github.com/microsoft/vscode-cpptools/issues/13698) +* Fix Doxygen comments with `[in]`, `[in,out]`, etc. attributes. [#13682](https://github.com/microsoft/vscode-cpptools/issues/13682), [#13698](https://github.com/microsoft/vscode-cpptools/issues/13698) * Fix old `defines` accumulating after `defines` are changed with `"mergeConfigurations": true`. [#13687](https://github.com/microsoft/vscode-cpptools/issues/13687) * Fix changes to mergeable properties in `c_cpp_properties.json` not being used until a new configuration is requested with `"mergeConfigurations": true`. [#13688](https://github.com/microsoft/vscode-cpptools/issues/13688) * Update Apple clang 16.4 to LLVM clang version mappings and fix incorrect mappings for Apple clang 14. @@ -45,7 +86,7 @@ ### 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 a crash in `read_double`. [#13435](https://github.com/Microsoft/vscode-cpptools/issues/13435) +* 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) @@ -91,7 +132,7 @@ * Fix a potential deadlock after using 'Reset IntelliSense Database'. [#13337](https://github.com/microsoft/vscode-cpptools/issues/13337) * Fix some localization bugs. [PR #13373](https://github.com/microsoft/vscode-cpptools/pull/13373) * Fix IntelliSense showing the wrong size of objects. [#13375](https://github.com/microsoft/vscode-cpptools/issues/13375) -* Fix the `get_mangled_function_name` IntelliSense process crash. [#13358](https://github.com/Microsoft/vscode-cpptools/issues/13358) +* Fix the `get_mangled_function_name` IntelliSense process crash. [#13358](https://github.com/microsoft/vscode-cpptools/issues/13358) * Fix an issue with duplicate forced includes being removed. Multiple forced includes of the same file should now properly be included multiple times. * Fix an issue in which the base configuration browse paths may not get populated when using a custom configuration provider. * Fix an issue with forced includes not being resolved against the same include path search order as a compiler would. @@ -150,7 +191,7 @@ * Fix a compile commands fallback logic issue. [#12947](https://github.com/microsoft/vscode-cpptools/issues/12947) * Thank you for the contribution. [@yiftahw](https://github.com/yiftahw) [PR #12948](https://github.com/microsoft/vscode-cpptools/pull/12948) * Fix an issue in which a `didOpen` event was processed before the language client was fully started. [#12954](https://github.com/microsoft/vscode-cpptools/issues/12954) -* Fix the IntelliSense mode being `macos` instead of `windows` when `_WIN32` is defined on macOS. [#13016](https://github.com/Microsoft/vscode-cpptools/issues/13016) +* Fix the IntelliSense mode being `macos` instead of `windows` when `_WIN32` is defined on macOS. [#13016](https://github.com/microsoft/vscode-cpptools/issues/13016) * Fix IntelliSense bugs when using non-UTF8 file encodings. [#13028](https://github.com/microsoft/vscode-cpptools/issues/13028), [#13044](https://github.com/microsoft/vscode-cpptools/issues/13044) * Fix an incorrect translation for "binary operator". [#13048](https://github.com/microsoft/vscode-cpptools/issues/13048) * Fix the "references may be missing" logging pane being shown when the `C_Cpp.loggingLevel` is `Error` or `None`. [#13066](https://github.com/microsoft/vscode-cpptools/issues/13066) @@ -278,13 +319,13 @@ * Stop logging file watch events for excluded files. [#11455](https://github.com/microsoft/vscode-cpptools/issues/11455) * Fix a crash if the Ryzen 3000 doesn't have updated drivers. [#12201](https://github.com/microsoft/vscode-cpptools/issues/12201) * Fix handling of `-isystem` and `-iquote` for IntelliSense configuration. [#12207](https://github.com/microsoft/vscode-cpptools/issues/12207) -* Fix doxygen comment generation when `/**` comments are used. [#12249](https://github.com/microsoft/vscode-cpptools/issues/12249) +* Fix Doxygen comment generation when `/**` comments are used. [#12249](https://github.com/microsoft/vscode-cpptools/issues/12249) * Fix a code analysis crash on Linux if the message is too long. [#12285](https://github.com/microsoft/vscode-cpptools/issues/12285) * Fix relative paths in `compile_commands.json` to be relative to the `compile_commands.json`'s directory. [#12290](https://github.com/microsoft/vscode-cpptools/issues/12290) * Fix a tag parser performance regression. [#12292](https://github.com/microsoft/vscode-cpptools/issues/12292) * Fix a regression with cl.exe system include path detection. [#12293](https://github.com/microsoft/vscode-cpptools/issues/12293) * Fix code analysis, find all references, and rename from getting the wrong configuration for non-open files on the first run when using a configuration provider. [#12313](https://github.com/microsoft/vscode-cpptools/issues/12313) -* Fix handling of doxygen comment blocks with `*//*` in them. [#12316](https://github.com/microsoft/vscode-cpptools/issues/12316) +* Fix handling of Doxygen comment blocks with `*//*` in them. [#12316](https://github.com/microsoft/vscode-cpptools/issues/12316) * Fix potential crashes during IntelliSense process shutdown. [#12354](https://github.com/microsoft/vscode-cpptools/issues/12354) * Fix the language status not showing it's busy while the tag parser is initializing. [#12403](https://github.com/microsoft/vscode-cpptools/issues/12403) * Fix the vcpkg code action not appearing for missing headers available via vcpkg. [#12413](https://github.com/microsoft/vscode-cpptools/issues/12413) diff --git a/Extension/ThirdPartyNotices.txt b/Extension/ThirdPartyNotices.txt index 08d0f7c3b..a8b0f75bf 100644 --- a/Extension/ThirdPartyNotices.txt +++ b/Extension/ThirdPartyNotices.txt @@ -298,6 +298,317 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE. + + +--------------------------------------------------------- + +--------------------------------------------------------- + +llvm/llvm-project 0d44201451f03ba907cdb268ddddfc3fa38a0ebd - Apache-2.0 WITH LLVM-exception + + +(c) ABS +(c) (tm) +(c) Value A +(c) auto AS +(c) Value Sd +(c) auto AST +(c) CXType PT +(c) Type I1Ty +(c) Value RHS +(c) X1 ... X1 +Copy (c) Copy +(c) Type I32Ty +(c) Value Elt0 +(c) Type Int8Ty +(c) Type V8x8Ty +(c) unsigned AS +Copy c (c) Copy +(c) Constant One +(c) Type FloatTy +(c) Type Int16Ty +(c) Type Int32Ty +(c) Type Int64Ty +(c) Value AllocA +(c) Value Alloca +Alloc1 a1 (c) R1 +Alloc1 a2 (c) R1 +copyright u'2013 +(c) FileID MainID +(c) Lower C Upper +(c) Stmt NumExprs +(c) Type DoubleTy +(c) Type I32PtrTy +(c) Value AllocaA +Coproc, Opc1, CRm +(c) Align NewAlign +(c) PointerType P2 +Copyright (c) 2012 +Exprs new (c) Stmt +(c) DeclRefExpr Ref +(c) ExprResult NewE +(c) Metadata Ops MD +(c) SelectInst SelI +(c) SmallVector MDs +(c) TransferBatch B +(c) Type Int32PtrTy +(c) Type Int64PtrTy +(c) Value InvMaxMin +(c) BasicBlock Entry +(c) CXXRecordDecl CD +(c) FunctionType FTy +(c) Offset C- Offset +Copyright 2010 INRIA +Copyright 2011 INRIA +Copyright 2012 INRIA +Copyright 2014 INRIA +Copyright 2015 INRIA +Copyright 2016 INRIA +(c) FunctionType FnTy +(c) QualType ResultTy +(c) SourceRange Range +AsmToks new (c) Token +SubExprs new (c) Stmt +(c) BasicBlock EntryBB +(c) FunctionType FFnTy +(c) FunctionType IFnTy +(c) SourceLocation Loc +Condition (c) Branches +Context (c) LineToUnit +(c) ErrMsg Stream Error +(c) SmallVector NewVars +(c) SmallVector ToErase +Bbb kind copyright' Bbb +(c) Constant PosDivisorC +CommonPtr new (c) Common +Copyright (c) 2012 CHECK +(c) CharUnits AlignedSize +(c) Constant NullV2I32Ptr +(c) Constant PosDividendC +Copyright 2010-2011 INRIA +Copyright 2014-2015 INRIA +COPYRIGHT,v 1.3 2003/06/02 +Coproc, Opc1, Rt, Rt2, CRm +Copyright 2008 Google Inc. +Copyright 2015 Google Inc. +Copyright 2018 Google Inc. +Copyright The LLVM project +coprime. APInt A HugePrime +(c) IdentifierInfo NumExprs +(c) VectorType Int8PtrVecTy +Copyright (c) 1997, Phillip +Copyright 2005, Google Inc. +Copyright 2006, Google Inc. +Copyright 2007, Google Inc. +Copyright 2008, Google Inc. +Copyright 2013, Google Inc. +Copyright 2015, Google Inc. +InitCache (c) TransferBatch +Copyright 2006, Dean Edwards +(c) CXXBaseSpecifier NumBases +(c) Designator NumDesignators +(c) StringLiteral NumClobbers +Constraints new (c) StringRef +Copyright (c) 2010 Apple Inc. +Copyright (c) by P.J. Plauger +Copyright 2010 Zencoder, Inc. +Copyright 2017 Roman Lebedev. +ParamInfo new (c) ParmVarDecl +Copyright (c) 2009 Google Inc. +Copyright (c) 2016 Aaron Watry +Copyright (c) 2017 Google Inc. +Copyright (c) 2018 Jim Ingham. +IMPL-NEXT switch (c) IMPL-NEXT +coprocessor. SDValue ImmCorpoc +(c) CHECK-NEXT foo() CHECK-NEXT +(copr0) ConstantDataVector CDV1 +(copr1) ConstantDataVector CDV2 +Copyright (c) 1994 X Consortium +Copyright (c) 2008 Matteo Frigo +Copyright (c) 2009 Matteo Frigo +Copyright 2008-2010 Apple, Inc. +Copyright 2015 Sven Verdoolaege +Copyright 2016 Sven Verdoolaege +Copyright 2017 Sven Verdoolaege +Copyright 2018 Cerebras Systems +Copyright 2018 Sven Verdoolaege +Copyright 2019 Cerebras Systems +Copyright, License, and Patents +Other Coprocessor Instructions. +(c) StringLiteral NumConstraints +Copyright 2011 Sven Verdoolaege. +(c) foo() pragma omp target teams +Copyright (c) 1992 Henry Spencer. +Copyright (c) 2004-2018 Bootstrap +Copyright (c) 2006 Kirill Simonov +Copyright (c) 2010-2018 Bootstrap +Copyright 2001-2004 Unicode, Inc. +Value0 Data.getULEB128 (c) Value1 +copyright u'2003- d, LLVM Project +copyright u'2011- d, LLVM Project +Copyright (c) 1999-2007 Apple Inc. +Copyright (c) 2009-2019 Polly Team +Copyright 2012 Universiteit Leiden +Copyright 2016-2017 Tobias Grosser +copyright u'2007- d, The LLDB Team +copyright u'2013- d, Analyzer Team +Constraint new (c) AtomicConstraint +Copyright (c) 2015the LLVM Project. +copyright u'2007- d, The Clang Team +copyright u'2010- d, The Polly Team +copyright u'2017- d, The Flang Team +Copyright (C ) Microsoft Corporation +Copyright (c) 2001 Alexander Peslyak +Copyright (c) 2014, 2015 Google Inc. +Copyright (c) 2019 The MLIR Authors. +Copyright (c) Microsoft Corporation. +Copyright 2015-2016 Sven Verdoolaege +Copyright 2016, 2017 Tobias Grosser. +Copyright 2016-2017 Sven Verdoolaege +Copyright 2018-2019 Cerebras Systems +(c) PointerType InitPtrType InitValue +Copyright (c) 1999-2003 Steve Purcell +Copyright (c) 2012-2016, Yann Collet. +Copyright 2011,2015 Sven Verdoolaege. +DiagStorage new (c) DiagnosticStorage +Copyright (c) 2008 Christian Haggstrom +Copyright (c) 2012 Avionic Design GmbH +Copyright 2007-2010 by the Sphinx team +(c) CHECK-NEXT T break CHECK-NEXT Preds +Copyright (c) 2002-2004 Tim J. Robbins. +Copyright (c) 2005 Free Standards Group +Copyright (c) 2019, NVIDIA CORPORATION. +Copyright 2005-2007 Universiteit Leiden +Copyright 2006-2007 Universiteit Leiden +Copyright 2012 Ecole Normale Superieure +Copyright 2013 Ecole Normale Superieure +Copyright 2014 Ecole Normale Superieure +Copyright 2016 Ismael Jimenez Martinez. +NameCount AS.getU32 (c) AbbrevTableSize +in LLVM, Diploma Thesis, (c) April 2011 +(c) StringRef NumClobbers // FIXME Avoid +Copyright (c) 1997-2019 Intel Corporation +Copyright (c) 2010-2015 Benjamin Peterson +Copyright 1992, 1993, 1994 Henry Spencer. +coproc_option_imm Operand let PrintMethod +(c) CXXCtorInitializer NumIvarInitializers +(c), intrinsic cos !WARNING Attribute BIND +Copyright (c) 2004 eXtensible Systems, Inc. +Copyright (c) 2009-2014 by the contributors +Copyright (c) 2009-2015 by the contributors +Copyright (c) 2009-2016 by the contributors +Copyright (c) 2009-2019 by the contributors +Copyright (c) 2011-2014 by the contributors +Copyright (c) 2011-2019 by the contributors +Copyright (c) 2017-2019 by the contributors +(c) CHECK-NEXT Preds (1) B4 CHECK-NEXT Succs +(c) CHECK-NEXT Preds (1) B5 CHECK-NEXT Succs +(c) CHECK-NEXT Preds (1) B7 CHECK-NEXT Succs +CoprocNumAsmOperand AsmOperandClass let Name +CoprocRegAsmOperand AsmOperandClass let Name +Copyright (c) 1993 by Sun Microsystems, Inc. +Copyright 2012,2014 Ecole Normale Superieure +Copyright 2012-2013 Ecole Normale Superieure +Copyright 2012-2014 Ecole Normale Superieure +Copyright 2013-2014 Ecole Normale Superieure +Copyright (c) 1992, 1993, 1994 Henry Spencer. +Copyright (c) 2002-2007 Michael J. Fromberger +Copyright 2000 Free Software Foundation, Inc. +CompUnitCount AS.getU32 (c) LocalTypeUnitCount +Copyright (c) 2008 Ryan McCabe +ForeignTypeUnitCount AS.getU32 (c) BucketCount +CoprocOptionAsmOperand AsmOperandClass let Name +Copyright (c) 2014 Advanced Micro Devices, Inc. +Copyright (c) 2015 Advanced Micro Devices, Inc. +(c) Designator NumDesigs NumDesignators NumDesigs +Copyright (c) 1992, 1993 UNIX International, Inc. +Copyright (c) 2004 Free Software Foundation, Inc. +Copyright (c) 2008 Free Software Foundation, Inc. +Copyright (c) 2011 Free Software Foundation, Inc. +Copyright (c) 2012 Free Software Foundation, Inc. +Copyright (c) 2012, Noah Spurrier +Copyright (c) 2013-2014, Pexpect development team +Copyright (c) 2013-2016, Pexpect development team +Copyright (c) 2014 Free Software Foundation, Inc. +Copyright (c) 2015 Paul Norman +Copyright (c) 2016 Aaron Watry +Copyright extcopyright~ he year the LLVM Project. +(c) CHECK-NEXT Preds (3) B3 B4 B2 CHECK-NEXT Succs +(c) CHECK-NEXT Preds (3) B3 B5 B6 CHECK-NEXT Succs +Copyright (c) 2003-2010 Python Software Foundation +Copyright (c) 2008 Paolo Bonzini +Copyright (c) 2012 Zack Weinberg +Copyright 2008-2009 Katholieke Universiteit Leuven +(c) Desc StrOffsetsContributionDescriptor C- Offset +(c) Stmt NumExprs std::copy Exprs, Exprs + NumExprs +Copyright (c) 2008 Guido U. Draheim +Copyright (c) 2008 Stepan Kasal +Copyright (c) 2012 Qualcomm Innovation Center, Inc. +Copyright (c) 2008 Benjamin Kosnik +Copyright (c) 2014,2015 Advanced Micro Devices, Inc. +Copyright (c) 2014 Mike Frysinger +Copyright (c) 2014, 2015 Advanced Micro Devices, Inc. +Copyright (c) 2016 Krzesimir Nowak +Copyright (c) 1994-2014 Free Software Foundation, Inc. +Copyright (c) 1996-2014 Free Software Foundation, Inc. +Copyright (c) 1996-2018 Free Software Foundation, Inc. +Copyright (c) 1997-2014 Free Software Foundation, Inc. +Copyright (c) 1999-2013 Free Software Foundation, Inc. +Copyright (c) 1999-2014 Free Software Foundation, Inc. +Copyright (c) 2001-2014 Free Software Foundation, Inc. +Copyright (c) 2002-2014 Free Software Foundation, Inc. +Copyright (c) 2003-2014 Free Software Foundation, Inc. +Copyright (c) 2004-2014 Free Software Foundation, Inc. +Copyright (c) 2006-2014 Free Software Foundation, Inc. +Copyright (c) 2008 Sven Verdoolaege +Copyright (c) 2009-2014 Free Software Foundation, Inc. +Copyright (c) 2010-2015 Free Software Foundation, Inc. +Copyright (c) 2010-2017 Free Software Foundation, Inc. +Copyright (c) 2011-2013 Free Software Foundation, Inc. +Copyright (c) 2015 Moritz Klammler +(c) StructType FrameTy Shape.FrameTy Instruction FramePtr +Copyright (c) 2013 Jesse Towner +Copyright (c) 2013 Roy Stogner +(c) Type AtExitFuncArgs VoidStar FunctionType AtExitFuncTy +(c) GlobalVariable Handle new GlobalVariable M, DsoHandleTy +(c) Type ArgTys Int32Ty, Int32Ty, Int32Ty FunctionType FnTy +Copyright (c) 2004 Scott James Remnant +Copyright (c) 2008 Steven G. Johnson +Copyright (c) 2009 Steven G. Johnson +Copyright (c) 2004, 2011-2018 Free Software Foundation, Inc. +Copyright (c) 2013 Victor Oliveira +(c) DeclRefExpr DR M.makeDeclRefExpr(PV) ImplicitCastExpr ICE +(c) IdentifierInfo NumExprs std::copy Names, Names + NumExprs +Copyright (c) 1998 Todd C. Miller +(c) BranchInst BI BranchInst::Create(Exit, Exit, False, Entry) +Copyright (c) 1994 The Regents of the University of California. +Copyright (c) 1992-1996, 1998-2012 Free Software Foundation, Inc. +Copyright (c) 1996-2001, 2003-2018 Free Software Foundation, Inc. +Copyright (c) 2003-2019 University of Illinois at Urbana-Champaign. +Copyright (c) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +Copyright (c) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. +Copyright (c) 2007-2018 University of Illinois at Urbana-Champaign. +Copyright (c) 2007-2019 University of Illinois at Urbana-Champaign. +(c) StringRef Expression Data.getBytes(C, BlockLength) DataExtractor +Copyright (c) 2006-2009 Steven J. Bethard +Copyright (c) 1992, 1993 The Regents of the University of California. +(c) StringLiteral NumClobbers std::copy Clobbers, Clobbers + NumClobbers +Copyright (c) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. +Copyright (c) 1992, 1993, 1994 The Regents of the University of California. +Copyright (c) 2004-2005, 2007-2008, 2011-2018 Free Software Foundation, Inc. +Copyright (c) 2004-2005, 2007-2009, 2011-2018 Free Software Foundation, Inc. +Copyright (c) 2004-2005, 2007, 2009, 2011-2018 Free Software Foundation, Inc. +(c) StringLiteral NumConstraints std::copy Constraints, Constraints + NumConstraints +Copyright (c) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. +Copyright (c) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. +Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +Copyright (c) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +Copyright (c) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. + +Apache-2.0 WITH LLVM-exception + +--------------------------------------------------------- + --------------------------------------------------------- webidl-conversions 3.0.1 - BSD-2-Clause @@ -752,6 +1063,67 @@ the licensed code: DEALINGS IN THE SOFTWARE. +--------------------------------------------------------- + +--------------------------------------------------------- + +vscode-cpptools 7.1.1 - LicenseRef-scancode-generic-cla AND MIT +https://github.com/Microsoft/vscode-cpptools-api#readme + +Copyright (c) Microsoft Corporation + +vscode-cpptools-api + +Copyright (c) Microsoft Corporation +All rights reserved. + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the Software), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +--------------------------------------------------------- + +--------------------------------------------------------- + +@github/copilot-language-server 1.316.0 - LicenseRef-scancode-unknown +https://github.com/github/copilot-language-server-release + +COPYRIGHT Zone Model +Copyright Deno authors +(c) 2012 by Cedric Mesnil +Copyright (c) 2018 Agoric +Copyright Domenic Denicola +Copyright (c) 2011 Google Inc. +Copyright (c) 2012 Google Inc. +Copyright 1995-2022 Mark Adler +Copyright 1995-2023 Mark Adler +Copyright Node.js contributors +Copyright (c) 2016, Contributors +Copyright (c) 2014, StrongLoop Inc. +Copyright 2009 the V8 project authors +Copyright 2011 the V8 project authors +Copyright 2012 the V8 project authors +Copyright 2013 the V8 project authors +Copyright 2017 the V8 project authors +Copyright (c) Microsoft and contributors +Copyright (c) 2016 Unicode, Inc. and others +Copyright (c) 2012-2018 by various contributors +Copyright (c) 2009 Thomas Robinson <280north.com> +Copyright Joyent, Inc. and other Node contributors +Copyright 1995-2022 Jean-loup Gailly and Mark Adler +Copyright 1995-2023 Jean-loup Gailly and Mark Adler +Copyright (c) 1996-2016 Free Software Foundation, Inc. +Copyright (c) NevWare21 Solutions LLC and contributors +Copyright 1995-2023 Jean-loup Gailly and Mark Adler Qkkbal +Copyright (c) Sindre Sorhus (sindresorhus.com) + +LicenseRef-scancode-unknown + --------------------------------------------------------- --------------------------------------------------------- @@ -2309,7 +2681,7 @@ SOFTWARE. --------------------------------------------------------- -tmp 0.2.3 - MIT +tmp 0.2.4 - MIT http://github.com/raszi/node-tmp Copyright (c) 2014 KARASZI Istvan @@ -2389,29 +2761,6 @@ The above copyright notice and this permission notice shall be included in all c THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------------------------------------------------- - ---------------------------------------------------------- - -vscode-cpptools 7.1.1 - MIT -https://github.com/Microsoft/vscode-cpptools-api#readme - -Copyright (c) Microsoft Corporation - -vscode-cpptools-api - -Copyright (c) Microsoft Corporation -All rights reserved. - -MIT License - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the Software), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - --------------------------------------------------------- --------------------------------------------------------- @@ -2603,7 +2952,6 @@ OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWA whatwg-url 5.0.0 - MIT https://github.com/jsdom/whatwg-url#readme -(c) extraPathPercentEncodeSet.has Copyright (c) 2015-2016 Sebastian Mayr The MIT License (MIT) diff --git a/Extension/bin/messages/cs/messages.json b/Extension/bin/messages/cs/messages.json index a7e9e1935..f13f435d7 100644 --- a/Extension/bin/messages/cs/messages.json +++ b/Extension/bin/messages/cs/messages.json @@ -3656,5 +3656,20 @@ "příliš mnoho argumentů pro atribut %sq", "řetězec mantissa neobsahuje platné číslo", "chyba v pohyblivé desetinné čárce při vyhodnocování konstanty", - "ignorován dědičný konstruktor %n pro operace podobné kopírování/přesouvání" + "ignorován dědičný konstruktor %n pro operace podobné kopírování/přesouvání", + "Nelze určit velikost souboru %s.", + "%s nejde přečíst.", + "vložit", + "Nerozpoznaný název parametru", + "Parametr byl zadán více než jednou.", + "__has_embed se nemůže objevit mimo #if", + "Národní prostředí LC_NUMERIC nelze nastavit na C.", + "Direktivy elifdef a elifndef nejsou v tomto režimu povolené a v textu, který se přeskočí, se ignorují.", + "Deklarace aliasu je v tomto kontextu nestandardní.", + "Cílová sada instrukcí ABI může přidělit nestatické členy v pořadí, které neodpovídá jejich pořadí deklarací, což není v jazyce C++23 a novějších standardní.", + "Jednotka rozhraní modulu EDG IFC", + "Jednotka oddílu modulu EDG IFC", + "Deklaraci modulu nelze z této jednotky překladu exportovat, pokud není vytvořen soubor rozhraní modulu.", + "Deklarace modulu se musí exportovat z této jednotky překladu, aby se vytvořil soubor rozhraní modulu.", + "Bylo požadováno generování souboru modulu, ale v jednotce překladu nebyl deklarován žádný modul." ] diff --git a/Extension/bin/messages/de/messages.json b/Extension/bin/messages/de/messages.json index b7ba91e1d..9849ced48 100644 --- a/Extension/bin/messages/de/messages.json +++ b/Extension/bin/messages/de/messages.json @@ -3656,5 +3656,20 @@ "Zu viele Argumente für %sq-Attribut", "Die Zeichenfolge der Mantisse enthält keine gültige Zahl", "Gleitkommafehler während der Konstantenauswertung", - "Der vererbende Konstruktor %n wird bei einem Vorgang wie Kopieren/Verschieben ignoriert" + "Der vererbende Konstruktor %n wird bei einem Vorgang wie Kopieren/Verschieben ignoriert", + "Die Größe der Datei \"%s\" kann nicht bestimmt werden.", + "\"%s\" kann nicht gelesen werden.", + "Einbetten", + "Unbekannter Parametername", + "Der Parameter wurde mehrfach angegeben.", + "__has_embed kann nicht außerhalb von \"#if\" vorkommen.", + "Das LC_NUMERIC-Gebietsschema konnte nicht auf C festgelegt werden.", + "\"elifdef\" und \"elifndef\" sind in diesem Modus nicht aktiviert und werden ignoriert, wenn Text übersprungen wird.", + "Eine Alias-Deklaration entspricht in diesem Kontext nicht dem Standard.", + "Die Ziel-ABI kann nicht-statische Mitglieder in einer Reihenfolge zuweisen, die nicht mit ihrer Deklarationsreihenfolge übereinstimmt, was in C++23 und später nicht standardkonform ist.", + "EDG-IFC-Modulschnittstelleneinheit", + "EDG-IFC-Modulpartitionseinheit", + "Die Moduldeklaration kann aus dieser Übersetzungseinheit exportiert werden, wenn eine Modulschnittstellendatei erstellt werden.", + "Die Moduldeklaration muss aus dieser Übersetzungseinheit exportiert werden, um eine Modulschnittstellendatei zu erstellen.", + "Die Moduldateigenerierung wurde angefordert, aber in der Übersetzungseinheit wurde kein Modul deklariert." ] \ No newline at end of file diff --git a/Extension/bin/messages/es/messages.json b/Extension/bin/messages/es/messages.json index 5181c8851..9f7d4d13c 100644 --- a/Extension/bin/messages/es/messages.json +++ b/Extension/bin/messages/es/messages.json @@ -3656,5 +3656,20 @@ "demasiados argumentos para el atributo %sq", "La cadena de mantisa no contiene un número válido", "error de punto flotante durante la evaluación constante", - "constructor heredado %n omitido para la operación de copia o movimiento" + "constructor heredado %n omitido para la operación de copia o movimiento", + "no se puede determinar el tamaño del archivo %s", + "no se puede leer %s", + "insertar", + "nombre de parámetro no reconocido", + "parámetro especificado más de una vez", + "__has_embed no puede aparecer fuera del #if", + "no se pudo establecer la configuración regional LC_NUMERIC en C", + "elifdef y elifndef no están habilitados en este modo y se omiten en el texto que se omite", + "una declaración de alias no es estándar en este contexto", + "la ABI de destino puede asignar miembros no estáticos en un orden que no coincida con su orden de declaración, que no es estándar en C++23 y versiones posteriores", + "Unidad de interfaz del módulo EDG IFC", + "Unidad de partición del módulo EDG IFC", + "la declaración de módulo no se puede exportar desde esta unidad de traducción a menos que se cree un archivo de interfaz de módulo", + "la declaración de módulo debe exportarse desde esta unidad de traducción para crear un archivo de interfaz de módulo", + "se solicitó la generación de archivos de módulo, pero no se declaró ningún módulo en la unidad de traducción" ] \ No newline at end of file diff --git a/Extension/bin/messages/fr/messages.json b/Extension/bin/messages/fr/messages.json index e265e7bd5..abaec876e 100644 --- a/Extension/bin/messages/fr/messages.json +++ b/Extension/bin/messages/fr/messages.json @@ -3656,5 +3656,20 @@ "trop d’arguments pour l’attribut %sq", "la chaîne de mantisse ne contient pas de nombre valide", "erreur de point flottant lors de l’évaluation constante", - "le constructeur d’héritage %n a été ignoré pour l’opération qui ressemble à copier/déplacer" + "le constructeur d’héritage %n a été ignoré pour l’opération qui ressemble à copier/déplacer", + "impossible de déterminer la taille du fichier %s", + "impossible de lire %s", + "incorporer", + "nom de paramètre non reconnu", + "paramètre spécifié plusieurs fois", + "__has_embed ne peut pas apparaître en dehors de #if", + "impossible de définir la locale LC_NUMERIC sur C", + "elifdef et elifndef ne sont pas activés dans ce mode et sont ignorés dans le texte qui est omis", + "une déclaration d’alias n’est pas standard dans ce contexte", + "l’ABI cible peut allouer des membres non statiques dans un ordre qui ne correspond pas à leur ordre de déclaration, ce qui n’est pas standard dans C++23 et versions ultérieures", + "Unité d’interface de module IFC EDG", + "Unité de partition de module IFC EDG", + "la déclaration de module ne peut pas être exportée à partir de cette unité de traduction, sauf si vous créez un fichier d’interface de module", + "la déclaration de module doit être exportée depuis cette unité de traduction pour créer un fichier d’interface de module", + "la génération du fichier de module a été demandée, mais aucun module n’a été déclaré dans l’unité de traduction" ] diff --git a/Extension/bin/messages/it/messages.json b/Extension/bin/messages/it/messages.json index d5bbcc3eb..2bf534593 100644 --- a/Extension/bin/messages/it/messages.json +++ b/Extension/bin/messages/it/messages.json @@ -3656,5 +3656,20 @@ "troppi argomenti per l'attributo %sq", "la stringa mantissa non contiene un numero valido", "errore di virgola mobile durante la valutazione costante", - "eredità del costruttore %n ignorata per l'operazione analoga a copia/spostamento" + "eredità del costruttore %n ignorata per l'operazione analoga a copia/spostamento", + "impossibile determinare le dimensioni del file %s", + "impossibile leggere %s", + "incorporare", + "nome del parametro non riconosciuto", + "parametro specificato più di una volta", + "non è possibile specificare __has_embed all'esterno di #if", + "impossibile impostare le impostazioni locali LC_NUMERIC su C", + "elifdef e elifndef non sono abilitati in questa modalità e vengono ignorati nel testo saltato", + "una dichiarazione alias non è standard in questo contesto", + "l'ABI di destinazione può allocare membri non statici in un ordine non corrispondente all'ordine di dichiarazione, il che non è conforme allo standard in C++23 e versioni successive", + "unità di interfaccia del modulo EDG IFC", + "unità di partizione del modulo IFC EDG", + "la dichiarazione del modulo non può essere esportata da questa unità di conversione a meno che non si crei un file di interfaccia del modulo", + "la dichiarazione del modulo deve essere esportata da questa unità di conversione per creare un file di interfaccia del modulo", + "è stata richiesta la generazione di file di modulo, ma non è stato dichiarato alcun modulo nell'unità di conversione" ] diff --git a/Extension/bin/messages/ja/messages.json b/Extension/bin/messages/ja/messages.json index e949d511b..8017c2499 100644 --- a/Extension/bin/messages/ja/messages.json +++ b/Extension/bin/messages/ja/messages.json @@ -3656,5 +3656,20 @@ "属性 %sq の引数が多すぎます", "仮数の文字列に有効な数値が含まれていません", "定数の評価中に浮動小数点エラーが発生しました", - "コンストラクターの継承 %n は、コピーや移動と似た操作では無視されます" + "コンストラクターの継承 %n は、コピーや移動と似た操作では無視されます", + "ファイル %s のサイズを特定できません", + "%s を読み取れません", + "埋め込み", + "認識されないパラメーター名", + "パラメーターが複数回指定されました", + "__has_embed は #if の外側には出現できません", + "LC_NUMERIC ロケールを C に設定できませんでした", + "elifdef と elifndef はこのモードでは有効になっておらず、スキップされるテキストでは無視されます", + "エイリアス宣言は、このコンテキストでは非標準です", + "ターゲット ABI は、宣言順序と一致しない順序で非静的メンバーを割り当てる可能性があります。これは、C++23 以降では非標準です", + "EDG IFC モジュール インターフェイス ユニット", + "EDG IFC モジュール パーティション ユニット", + "モジュール インターフェイス ファイルを作成しない限り、モジュール宣言をこの翻訳単位からエクスポートすることはできません", + "モジュール インターフェイス ファイルを作成するには、この翻訳単位からモジュール宣言をエクスポートする必要があります", + "モジュール ファイルの生成が要求されましたが、翻訳単位でモジュールが宣言されていません" ] diff --git a/Extension/bin/messages/ko/messages.json b/Extension/bin/messages/ko/messages.json index c977b7036..8ec93910a 100644 --- a/Extension/bin/messages/ko/messages.json +++ b/Extension/bin/messages/ko/messages.json @@ -3656,5 +3656,20 @@ "%sq 특성에 대한 인수가 너무 많습니다.", "mantissa 문자열에 올바른 숫자가 없습니다.", "상수 평가 중 부동 소수점 오류", - "복사/이동과 유사한 작업에 대해 상속 생성자 %n이(가) 무시됨" + "복사/이동과 유사한 작업에 대해 상속 생성자 %n이(가) 무시됨", + "파일 %s의 크기를 확인할 수 없습니다.", + "%s을(를) 읽을 수 없습니다.", + "포함", + "인식할 수 없는 매개 변수 이름입니다.", + "매개 변수가 두 번 이상 지정되었습니다.", + "__has_embed는 #if 외부에 사용할 수 없습니다.", + "LC_NUMERIC 로캘을 C로 설정할 수 없습니다.", + "elifdef와 elifndef는 이 모드에서 사용할 수 없으며 건너뛰는 텍스트에서 무시됩니다.", + "별칭 선언은 이 컨텍스트에서 비표준입니다.", + "대상 ABI는 선언 순서와 일치하지 않는 순서로 비정적 멤버를 할당할 수 있습니다. 이는 C++23 이상에서 비표준입니다.", + "EDG IFC 모듈 인터페이스 단위", + "EDG IFC 모듈 파티션 단위", + "모듈 인터페이스 파일을 만들지 않으면 이 변환 단위에서 모듈 선언을 내보낼 수 없습니다.", + "모듈 인터페이스 파일을 만들려면 이 변환 단위에서 모듈 선언을 내보내야 합니다.", + "모듈 파일 생성이 요청되었지만 변환 단위에 모듈이 선언되지 않았습니다." ] diff --git a/Extension/bin/messages/pl/messages.json b/Extension/bin/messages/pl/messages.json index e683e600b..5cdebc2cd 100644 --- a/Extension/bin/messages/pl/messages.json +++ b/Extension/bin/messages/pl/messages.json @@ -3656,5 +3656,20 @@ "zbyt wiele argumentów dla atrybutu %sq", "ciąg mantysy nie zawiera prawidłowej liczby", "błąd zmiennoprzecinkowy podczas obliczania stałej", - "dziedziczenie konstruktora %n zostało zignorowane dla operacji kopiowania/przenoszenia" + "dziedziczenie konstruktora %n zostało zignorowane dla operacji kopiowania/przenoszenia", + "nie można określić rozmiaru pliku %s", + "nie można odczytać %s", + "osadź", + "nierozpoznana nazwa parametru", + "parametr określony co najmniej raz", + "element __has_embed nie może występować poza wyrażeniem #if", + "nie można ustawić parametru C dla ustawień regionalnych z parametrem LC_NUMERIC", + "dyrektywy elifdef i elifndef nie są włączone w tym trybie i są ignorowane w pomijanym tekście", + "deklaracja aliasu jest niestandardowa w tym kontekście", + "docelowy zestaw instrukcji ABI może przydzielać niestatyczne składowe w kolejności, która nie odpowiada ich kolejności w deklaracji, co jest niestandardowe w wersji języka C++23 i nowszych wersjach", + "jednostka interfejsu modułu EDG IFC", + "jednostka partycji modułu EDG IFC", + "deklaracja modułu nie może być wyeksportowana z tej jednostki translacji, chyba że zostanie utworzony plik interfejsu modułu", + "deklaracja modułu musi być wyeksportowana z tej jednostki translacji, aby utworzyć plik interfejsu modułu", + "zażądano wygenerowania pliku modułu, ale w jednostce translacji nie zadeklarowano żadnego modułu" ] diff --git a/Extension/bin/messages/pt-br/messages.json b/Extension/bin/messages/pt-br/messages.json index c98e4e0df..4ada72d0b 100644 --- a/Extension/bin/messages/pt-br/messages.json +++ b/Extension/bin/messages/pt-br/messages.json @@ -3656,5 +3656,20 @@ "muitos argumentos para o atributo %sq", "cadeia de mantissa não contém um número válido", "erro de ponto flutuante durante a avaliação da constante", - "construtor herdado %n ignorado para operação do tipo cópia/movimento" + "construtor herdado %n ignorado para operação do tipo cópia/movimento", + "não é possível determinar o tamanho do arquivo %s", + "não é possível ler %s", + "inserir", + "nome do parâmetro não reconhecido", + "parâmetro especificado mais de uma vez", + "__has_embed não pode aparecer fora de #if", + "não foi possível definir a localidade LC_NUMERIC como C", + "elifdef e elifndef não estão habilitados neste modo e são ignorados no texto que está sendo pulado", + "uma declaração de alias não é padrão neste contexto", + "a ABI de destino pode alocar membros não estáticos em uma ordem que não corresponde à ordem de declaração, que não é padrão no C++23 e posterior", + "Unidade de interface do módulo EDG IFC", + "Unidade de partição do módulo EDG IFC", + "a declaração de módulo não pode ser exportada desta unidade de tradução, a menos que crie um arquivo de interface de módulo", + "a declaração do módulo deve ser exportada desta unidade de tradução para criar um arquivo de interface de módulo", + "a geração de arquivo de módulo foi solicitada, mas nenhum módulo foi declarado na unidade de tradução" ] diff --git a/Extension/bin/messages/ru/messages.json b/Extension/bin/messages/ru/messages.json index 64580c79b..230610ab4 100644 --- a/Extension/bin/messages/ru/messages.json +++ b/Extension/bin/messages/ru/messages.json @@ -3656,5 +3656,20 @@ "слишком много аргументов для атрибута %sq", "строка мантиссы не содержит допустимого числа", "ошибка с плавающей запятой во время вычисления константы", - "наследование конструктора %n игнорируется для операций, подобных копированию и перемещению" + "наследование конструктора %n игнорируется для операций, подобных копированию и перемещению", + "не удается определить размер файла %s", + "не удается прочитать %s", + "внедрить", + "нераспознанное имя параметра", + "параметр указан несколько раз", + "__has_embed запрещено указывать за пределами #if", + "не удалось установить для языкового стандарта LC_NUMERIC значение C", + "параметры elifdef и elifndef не включены в этом режиме и игнорируются в пропускаемом тексте", + "объявление псевдонима является нестандартным в этом контексте", + "целевой ABI может выделять нестатические элементы в порядке, не соответствующем их порядку объявления, что является нестандартным в C++23 и более поздних версиях", + "единица интерфейса модуля EDG IFC", + "единица раздела модуля EDG IFC", + "объявление модуля невозможно экспортировать из этой единицы трансляции, если не создается файл интерфейса модуля", + "объявление модуля должно быть экспортировано из этой единицы трансляции для создания файла интерфейса модуля", + "запрошено создание файла модуля, но в единице трансляции не объявлен модуль" ] diff --git a/Extension/bin/messages/tr/messages.json b/Extension/bin/messages/tr/messages.json index e3b545ee9..5cf1e1114 100644 --- a/Extension/bin/messages/tr/messages.json +++ b/Extension/bin/messages/tr/messages.json @@ -3656,5 +3656,20 @@ "%sq özniteliği için çok fazla bağımsız değişken var", "mantissa dizesi geçerli bir sayı içermiyor", "sabit değerlendirme sırasında kayan nokta hatası", - "kopyalama/taşıma benzeri işlem için %n oluşturucusunu devralma yoksayıldı" + "kopyalama/taşıma benzeri işlem için %n oluşturucusunu devralma yoksayıldı", + "%s dosyasının boyutu belirlenemiyor", + "%s okunamıyor", + "ekle", + "tanınmayan parametre adı", + "parametre birden fazla kez belirtildi", + "__has_embed, #if dışında görünemez.", + "LC_NUMERIC yerel ayarı C olarak ayarlanamadı.", + "elifdef ve elifndef bu modda etkin değildir ve atlanan metinde yok sayılır.", + "Bu bağlamda bir takma ad bildirimi standart değildir.", + "Hedef ABI, statik olmayan üyeleri, C++23 ve sonraki sürümlerde standart olmayan, bildirim sırasına uymayan bir sırayla tahsis edebilir.", + "EDG IFC modülü arabirim ünitesi", + "EDG IFC modül bölme ünitesi", + "modül arabirimi dosyası oluşturulmadıkça, modül bildirimi bu çeviri biriminden dışa aktarılamaz", + "modül arabirim dosyası oluşturmak için modül bildirimi bu çeviri biriminden dışa aktarılmalıdır", + "modül dosyası oluşturulması istendi, ancak çeviri biriminde hiçbir modül bildirilmedi" ] diff --git a/Extension/bin/messages/zh-cn/messages.json b/Extension/bin/messages/zh-cn/messages.json index 9150d72f8..4b9b3e3e3 100644 --- a/Extension/bin/messages/zh-cn/messages.json +++ b/Extension/bin/messages/zh-cn/messages.json @@ -3656,5 +3656,20 @@ "属性 %sq 的参数太多", "mantissa 字符串不包含有效的数字", "常量计算期间出现浮点错误", - "对于复制/移动类操作,已忽略继承构造函数 %n" + "对于复制/移动类操作,已忽略继承构造函数 %n", + "无法确定文件 %s 的大小", + "无法读取 %s", + "嵌入", + "无法识别的参数名称", + "多次指定参数", + "__has_embed 不能出现在 #if 外部", + "无法将 LC_NUMERIC 区域设置设为 C", + "elifdef 和 elifndef 在此模式下未启用,并且在跳过的文本中将被忽略", + "别名声明在此上下文中是非标准的", + "目标 ABI 可以按与其声明顺序不匹配的顺序分配非静态成员,这在 C++23 及更高版本中是非标准的", + "EDG IFC 模块接口单元", + "EDG IFC 模块分区单元", + "除非创建模块接口文件,否则无法从此翻译单元导出模块声明", + "模块声明必须从此翻译单元导出,以创建模块接口文件", + "已请求生成模块文件,但在翻译单元中未声明任何模块" ] diff --git a/Extension/bin/messages/zh-tw/messages.json b/Extension/bin/messages/zh-tw/messages.json index 4b1a5b387..39cd0563a 100644 --- a/Extension/bin/messages/zh-tw/messages.json +++ b/Extension/bin/messages/zh-tw/messages.json @@ -3656,5 +3656,20 @@ "屬性 %sq 的引數太多", "Mantissa 字串未包含有效的數字", "常數評估期間發生浮點錯誤", - "繼承建構函式 %n 已略過複製/移動之類作業" + "繼承建構函式 %n 已略過複製/移動之類作業", + "無法判斷檔案 %s 的大小", + "無法讀取 %s", + "內嵌", + "無法辨識的參數名稱", + "參數已指定一次以上", + "__has_embed 無法出現在外部 #if", + "無法將 LC_NUMERIC 地區設定設為 C", + "elifdef 和 elifndef 未在此模式中啟用,而且會在略過的文字中遭到忽略", + "別名宣告在此內容中並非標準用法", + "目標 ABI 可能會以不符合宣告順序的順序配置非靜態成員,此順序在 C++23 和更高版本中並非標準用法", + "EDG IFC 模組介面單元", + "EDG IFC 模組分割單元", + "除非建立模組介面檔案,否則無法從此翻譯單元匯出模組宣告", + "必須從此翻譯單元匯出模組宣告,以建立模組介面檔案", + "已要求模組檔案產生,但未在翻譯單元中宣告任何模組" ] diff --git a/Extension/i18n/chs/package.i18n.json b/Extension/i18n/chs/package.i18n.json index cd47a2691..1ba1fb3a7 100644 --- a/Extension/i18n/chs/package.i18n.json +++ b/Extension/i18n/chs/package.i18n.json @@ -310,7 +310,7 @@ "c_cpp.debuggers.miDebuggerServerAddress.description": "要连接到的 MI 调试程序服务器的网络地址(示例: localhost:1234)。", "c_cpp.debuggers.useExtendedRemote.description": "使用目标扩展远程模式连接到 MI 调试器服务器。", "c_cpp.debuggers.stopAtEntry.markdownDescription": "可选参数。如果为 `true`,则调试程序应在目标的入口点处停止。如果传递了 `processId`,则不起任何作用。", - "c_cpp.debuggers.debugServerPath.description": "到要启动的调试服务器的可选完整路径。默认值为 null。该路径与 “miDebugServerAddress” 或带有运行 “-target-select remote ” 的 “customSetupCommand” 的自有服务器配合使用。", + "c_cpp.debuggers.debugServerPath.description": "要启动的调试服务器的可选完整路径。默认值为 null。该路径与 \"miDebuggerServerAddress\" 或带有运行 \"-target-select remote \" 的 \"customSetupCommand\" 的自有服务器配合使用。", "c_cpp.debuggers.debugServerArgs.description": "可选调试服务器参数。默认为 null。", "c_cpp.debuggers.serverStarted.description": "要在调试服务器输出中查找的可选服务器启动模式。默认为 null。", "c_cpp.debuggers.filterStdout.description": "在 stdout 流中搜索服务器启动模式,并将 stdout 记录到默认输出。默认为 true。", diff --git a/Extension/i18n/chs/src/LanguageServer/client.i18n.json b/Extension/i18n/chs/src/LanguageServer/client.i18n.json index 423cc33b6..f9bdcdcb4 100644 --- a/Extension/i18n/chs/src/LanguageServer/client.i18n.json +++ b/Extension/i18n/chs/src/LanguageServer/client.i18n.json @@ -30,6 +30,9 @@ "config.not.found": "找不到请求的配置名称: {0}", "unsupported.client": "不支持的客户端", "timed.out": "将在 {0} 毫秒后超时。", + "parsing.stats.large.project": "已枚举 {0} 个文件,检测到 {1} 个 C/C++ 源文件。你可能需要考虑排除某些文件以获得更好的性能。", + "learn.more": "了解详细信息", + "dont.show.again": "不再显示", "update.intellisense.time": "更新 IntelliSense 时间(秒): {0}", "configurations.received": "已收到自定义配置:", "browse.configuration.received": "已收到自定义浏览配置: {0}", diff --git a/Extension/i18n/chs/src/LanguageServer/configurations.i18n.json b/Extension/i18n/chs/src/LanguageServer/configurations.i18n.json index 5ec7ff2f4..4980e45c7 100644 --- a/Extension/i18n/chs/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/chs/src/LanguageServer/configurations.i18n.json @@ -5,6 +5,7 @@ // Do not edit this file. It is machine generated. { "incompatible.intellisense.mode": "IntelliSense 模式 {0} 与编译器路径不兼容。", + "resolve.configuration.processed": "已在 {0} 秒内中处理 c_cpp_properties.json", "failed.to.create.config.folder": "未能创建“{0}”", "invalid.configuration.file": "配置文件无效。数组中须至少存在一个配置。", "unknown.properties.version": "c_cpp_properties.json 中发现未知的版本号。某些功能可能无法按预期工作。", @@ -13,9 +14,13 @@ "path.with.spaces": "找不到带有空格的编译器路径。如果这是为了包含编译器参数,请用双引号({0})括住编译器路径。", "cannot.find": "无法找到: {0}", "path.is.not.a.file": "路径不是文件: {0}", + "resolve.includePath.took.too.long": "包含路径验证计算耗时 {0} 秒", + "resolve.includePath.failed": "未能解析包含路径。错误: {0}", "wrapped.with.quotes": "不要在路径周围添加额外的引号。", "path.is.not.a.directory": "路径不是目录: {0}", "duplicate.name": "{0} 重复。配置名称应是唯一的。", + "resolve.path.took.too.long": "路径计算耗时 {0} 秒", + "resolve.path.failed": "未能解析路径 {0}。错误: {1}", "multiple.paths.not.allowed": "不允许使用多个路径。", "multiple.paths.should.be.separate.entries": "多个路径应是数组中的单独条目。", "paths.are.not.directories": "路径不是目录: {0}" diff --git a/Extension/i18n/cht/package.i18n.json b/Extension/i18n/cht/package.i18n.json index 6e29d0c34..ebddcf141 100644 --- a/Extension/i18n/cht/package.i18n.json +++ b/Extension/i18n/cht/package.i18n.json @@ -310,7 +310,7 @@ "c_cpp.debuggers.miDebuggerServerAddress.description": "MI 偵錯工具伺服器要連線至的網路位址 (範例: localhost:1234)。", "c_cpp.debuggers.useExtendedRemote.description": "使用目標延伸的遠端模式連線到 MI 偵錯工具伺服器。", "c_cpp.debuggers.stopAtEntry.markdownDescription": "選擇性參數。若為 `true`,則偵錯工具應該在目標的進入點停止。如果已傳遞 `processId`,則這就無效。", - "c_cpp.debuggers.debugServerPath.description": "要啟動的偵錯伺服器選用完整路徑。預設為 Null。使用時,會將 \"miDebugServerAddress\" 或您自己的伺服器與 \"customSetupCommand\" 連接,以執行 \"-target-select remote <伺服器:連接埠>\"。", + "c_cpp.debuggers.debugServerPath.description": "要啟動的偵錯伺服器的選用完整路徑。預設為 Null。使用時,會將其結合 \"miDebuggerServerAddress\" 或您自己的伺服器與 \"customSetupCommand\",以執行 \"-target-select remote \"。", "c_cpp.debuggers.debugServerArgs.description": "選擇性偵錯伺服器引數。預設為 null。", "c_cpp.debuggers.serverStarted.description": "要在偵錯伺服器輸出中尋找的選擇性伺服器啟動模式。預設為 null。", "c_cpp.debuggers.filterStdout.description": "搜尋 stdout 資料流以取得伺服器啟動的模式,並將 stdout 記錄到偵錯輸出。預設為 true。", @@ -325,7 +325,7 @@ "c_cpp.debuggers.cppvsdbg.console.externalTerminal.description": "主控台應用程式將會在外部終端視窗中啟動。此視窗將在重新啟動情節中重複使用,且在應用程式結束時不會自動消失。", "c_cpp.debuggers.cppvsdbg.console.newExternalWindow.description": "主控台應用程式將會在其本身的外部主控台視窗中啟動,該視窗會在應用程式停止時結束。非主控台應用程式將在沒有終端的情況下執行,而且將忽略 stdout/stderr。", "c_cpp.debuggers.avoidWindowsConsoleRedirection.description": "若為 true,則停用整合式終端機支援需要的偵錯項目主控台重新導向。", - "c_cpp.debuggers.sourceFileMap.markdownDescription": "傳遞至偵錯引擎的選擇性來源檔案對應。範例: `{ \"\": \"\" }`。", + "c_cpp.debuggers.sourceFileMap.markdownDescription": "傳遞至偵錯引擎的選擇性來源檔案對應。範例: `{ \"<原始來源路徑>\": \"<目前來源路徑>\" }`。", "c_cpp.debuggers.processId.anyOf.markdownDescription": "要附加偵錯工具的選擇性處理序識別碼。使用 `${command:pickProcess}` 可取得要附加的本機執行中處理序清單。請注意,某些平台需要系統管理員權限才能附加至處理序。", "c_cpp.debuggers.symbolSearchPath.description": "要用於搜尋符號 (即 pdb) 檔案的目錄清單 (以分號分隔)。範例: \"c:\\dir1;c:\\dir2\"。", "c_cpp.debuggers.dumpPath.description": "指定程式之傾印檔案的選擇性完整路徑。範例: \"c:\\temp\\app.dmp\"。預設為 null。", diff --git a/Extension/i18n/cht/src/LanguageServer/client.i18n.json b/Extension/i18n/cht/src/LanguageServer/client.i18n.json index a10354fcc..e2d39493e 100644 --- a/Extension/i18n/cht/src/LanguageServer/client.i18n.json +++ b/Extension/i18n/cht/src/LanguageServer/client.i18n.json @@ -30,6 +30,9 @@ "config.not.found": "找不到要求的組態名稱: {0}", "unsupported.client": "不支援的用戶端", "timed.out": "逾時 ({0} 毫秒內)。", + "parsing.stats.large.project": "已列舉 {0} 個檔案,並偵測到 {1} 個 C/C++ 來源檔案。您可能需要考慮排除某些檔案,以提升效能。", + "learn.more": "深入了解", + "dont.show.again": "不要再顯示", "update.intellisense.time": "更新 IntelliSense 時間 (秒): {0}", "configurations.received": "收到的自訂組態:", "browse.configuration.received": "收到的自訂瀏覽組態: {0}", diff --git a/Extension/i18n/cht/src/LanguageServer/configurations.i18n.json b/Extension/i18n/cht/src/LanguageServer/configurations.i18n.json index 81e50f638..d06b47b21 100644 --- a/Extension/i18n/cht/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/cht/src/LanguageServer/configurations.i18n.json @@ -5,6 +5,7 @@ // Do not edit this file. It is machine generated. { "incompatible.intellisense.mode": "IntelliSense 模式 {0} 與編譯器路徑不相容。", + "resolve.configuration.processed": "已於 {0} 秒內處理 c_cpp_properties.json", "failed.to.create.config.folder": "無法建立 \"{0}\"", "invalid.configuration.file": "組態檔。陣列中至少必須有一個組態。", "unknown.properties.version": "在 c_cpp_properties.json 中找到未知的版本號碼。某些功能可能無法如期運作。", @@ -13,9 +14,13 @@ "path.with.spaces": "找不到具有空格的編譯器路徑。如果這是為了要包含編譯器引數,請以雙引號 ({0}) 括住編譯器路徑。", "cannot.find": "找不到: {0}", "path.is.not.a.file": "路徑不是檔案: {0}", + "resolve.includePath.took.too.long": "包含路徑驗證耗費 {0} 秒來評估", + "resolve.includePath.failed": "無法解析包含路徑。錯誤: {0}", "wrapped.with.quotes": "請勿在路徑周圍新增額外的引號。", "path.is.not.a.directory": "路徑不是目錄: {0}", "duplicate.name": "{0} 重複。組態名稱應該是唯一的。", + "resolve.path.took.too.long": "路徑耗費 {0} 秒來評估", + "resolve.path.failed": "無法解析路徑 {0}。錯誤: {1}", "multiple.paths.not.allowed": "不允許使用多個路徑。", "multiple.paths.should.be.separate.entries": "數位列中的多個路徑應為個別專案。", "paths.are.not.directories": "路徑不是目錄: {0}" diff --git a/Extension/i18n/cht/ui/settings.html.i18n.json b/Extension/i18n/cht/ui/settings.html.i18n.json index ee201d47c..5838c7f7b 100644 --- a/Extension/i18n/cht/ui/settings.html.i18n.json +++ b/Extension/i18n/cht/ui/settings.html.i18n.json @@ -44,7 +44,7 @@ "cpp.standard.description": "用於 IntelliSense 的 C++ 語言標準版本。注意: GNU 標準僅會用於查詢設定編譯器以取得 GNU 定義,而 IntelliSense 將會模擬相同的 C++ 標準版本。", "advanced.settings": "進階設定", "configuration.provider": "組態提供者", - "configuration.provider.description": "可為來源檔案提供 IntelliSense 設定資訊 VS Code 延伸模組的識別碼。例如,使用 VS Code 延伸模組識別碼 {0} 從 CMake 工具延伸模組提供組態資訊。", + "configuration.provider.description": "可為來源檔案提供 IntelliSense 設定資訊 VS Code 延伸模組的識別碼。例如,使用 VS Code 延伸模組識別碼 {0} 從 CMake Tools 延伸模組提供組態資訊。", "windows.sdk.version": "Windows SDK 版本", "windows.sdk.version.description": "要在 Windows 上使用的 Windows SDK 包含路徑版本,例如 {0}。", "mac.framework.path": "Mac 架構路徑", diff --git a/Extension/i18n/csy/package.i18n.json b/Extension/i18n/csy/package.i18n.json index 230b58340..c5b22e399 100644 --- a/Extension/i18n/csy/package.i18n.json +++ b/Extension/i18n/csy/package.i18n.json @@ -310,7 +310,7 @@ "c_cpp.debuggers.miDebuggerServerAddress.description": "Síťová adresa MI Debugger Serveru, ke kterému se má připojit (příklad: localhost:1234)", "c_cpp.debuggers.useExtendedRemote.description": "Připojení k serveru ladicího programu MI přes cílový rozšířený vzdálený režim.", "c_cpp.debuggers.stopAtEntry.markdownDescription": "Nepovinný parametr. Pokud je `true`, ladicí program by se měl zastavit na vstupním bodu cíle. Pokud je předán parametr `processId`, nemá to žádný vliv.", - "c_cpp.debuggers.debugServerPath.description": "Volitelná úplná cesta k ladicímu serveru, který se má spustit. Výchozí hodnota je null. Používá se ve spojení buď s miDebugServerAddress, nebo s vlastním serverem s customSetupCommand, na kterém běží \"-target-select remote \".", + "c_cpp.debuggers.debugServerPath.description": "Volitelná úplná cesta k ladicímu serveru, který se má spustit. Výchozí hodnota je null. Používá se ve spojení s parametrem „miDebuggerServerAddressL nebo s vlastním serverem s příkazem „customSetupCommand“, který spouští „-target-select remote “.", "c_cpp.debuggers.debugServerArgs.description": "Volitelné argumenty ladicího serveru. Výchozí hodnota je null.", "c_cpp.debuggers.serverStarted.description": "Volitelný vzorek spuštěný na serveru, který se má vyhledat ve výstupu ladicího serveru. Výchozí hodnota je null.", "c_cpp.debuggers.filterStdout.description": "Vyhledá ve vzorku spuštěném na serveru stream stdout a zaznamená stdout do výstupu ladění. Výchozí hodnota je true.", diff --git a/Extension/i18n/csy/src/LanguageServer/client.i18n.json b/Extension/i18n/csy/src/LanguageServer/client.i18n.json index 760ee4d82..a16663c4c 100644 --- a/Extension/i18n/csy/src/LanguageServer/client.i18n.json +++ b/Extension/i18n/csy/src/LanguageServer/client.i18n.json @@ -30,6 +30,9 @@ "config.not.found": "Požadovaný název konfigurace se nenašel: {0}", "unsupported.client": "Nepodporovaný klient", "timed.out": "Po {0} ms vypršel časový limit.", + "parsing.stats.large.project": "Byl zjištěn výčet {0} souborů s {1} zdrojovými soubory C/C++. Možná budete chtít zvážit vyloučení některých souborů pro zlepšení výkonu.", + "learn.more": "Další informace", + "dont.show.again": "Příště už nezobrazovat", "update.intellisense.time": "Čas aktualizace IntelliSense (sek.): {0}", "configurations.received": "Přijaly se vlastní konfigurace:", "browse.configuration.received": "Přijala se vlastní konfigurace procházení: {0}", diff --git a/Extension/i18n/csy/src/LanguageServer/configurations.i18n.json b/Extension/i18n/csy/src/LanguageServer/configurations.i18n.json index fd53ef62f..92e67a623 100644 --- a/Extension/i18n/csy/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/csy/src/LanguageServer/configurations.i18n.json @@ -5,6 +5,7 @@ // Do not edit this file. It is machine generated. { "incompatible.intellisense.mode": "Režim IntelliSense {0} není kompatibilní s cestou ke kompilátoru.", + "resolve.configuration.processed": "Soubor c_cpp_properties.json zpracován za {0} s", "failed.to.create.config.folder": "Nepovedlo se vytvořit {0}.", "invalid.configuration.file": "Neplatný konfigurační soubor. V poli se musí nacházet alespoň jedna konfigurace.", "unknown.properties.version": "V souboru c_cpp_properties.json se našlo neplatné číslo verze. Některé funkce nemusí fungovat podle očekávání.", @@ -13,9 +14,13 @@ "path.with.spaces": "Cestu ke kompilátoru s mezerami se nepovedlo najít. Pokud měly být zahrnuty argumenty kompilátoru, uzavřete cestu ke kompilátoru do dvojitých uvozovek ({0}).", "cannot.find": "Nepovedlo se najít: {0}", "path.is.not.a.file": "Cesta není soubor: {0}", + "resolve.includePath.took.too.long": "Vyhodnocení ověření cesty k zahrnutí trvalo {0} s", + "resolve.includePath.failed": "Nepovedlo se přeložit cestu k zahrnutí. Chyba: {0}", "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ý.", + "resolve.path.took.too.long": "Vyhodnocení cesty trvalo {0} s", + "resolve.path.failed": "Nepodařilo se přeložit cestu {0}. Chyba: {1}", "multiple.paths.not.allowed": "Více cest není povoleno.", "multiple.paths.should.be.separate.entries": "Více cest by mělo být samostatné položky v poli.", "paths.are.not.directories": "Cesty nejsou adresáře: {0}" diff --git a/Extension/i18n/deu/package.i18n.json b/Extension/i18n/deu/package.i18n.json index 7454dd70b..7634a0ccd 100644 --- a/Extension/i18n/deu/package.i18n.json +++ b/Extension/i18n/deu/package.i18n.json @@ -310,7 +310,7 @@ "c_cpp.debuggers.miDebuggerServerAddress.description": "Netzwerkadresse des MI-Debugger-Servers, mit dem eine Verbindung hergestellt werden soll (Beispiel: localhost:1234).", "c_cpp.debuggers.useExtendedRemote.description": "Stellen Sie eine Verbindung mit dem MI-Debuggerserver mit dem erweiterten Remotemodus des Ziels her.", "c_cpp.debuggers.stopAtEntry.markdownDescription": "Optionaler Parameter. Wenn dieser Wert auf `true` festgelegt ist, sollte der Debugger am Einstiegspunkt des Ziels anhalten. Wenn die `processId` übergeben wird, hat dies keine Auswirkungen.", - "c_cpp.debuggers.debugServerPath.description": "Optionaler vollständiger Pfad zum Debugserver, der gestartet werden soll. Der Standardwert ist NULL. Dies wird in Verbindung mit \"miDebugServerAddress\" oder Ihrem eigenen Server mit \"customSetupCommand\" verwendet, auf dem \"-target-select remote \" ausgeführt wird.", + "c_cpp.debuggers.debugServerPath.description": "Optionaler vollständiger Pfad zum Debugserver, der gestartet werden soll. Der Standardwert ist NULL. Dies wird in Verbindung mit „miDebugServerAddress“ oder Ihrem eigenen Server mit „customSetupCommand“ verwendet, auf dem „-target-select remote “ ausgeführt wird.", "c_cpp.debuggers.debugServerArgs.description": "Optionale Debugserverargumente. Der Standardwert ist \"null\".", "c_cpp.debuggers.serverStarted.description": "Optionales vom Server gestartetes Muster, nach dem in der Ausgabe des Debugservers gesucht wird. Der Standardwert ist \"null\".", "c_cpp.debuggers.filterStdout.description": "stdout-Stream für ein vom Server gestartetes Muster suchen und stdout in der Debugausgabe protokollieren. Der Standardwert ist \"true\".", @@ -427,7 +427,7 @@ "c_cpp.walkthrough.create.cpp.file.title": "C++-Datei erstellen", "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.title": "Aus 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 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.", diff --git a/Extension/i18n/deu/src/LanguageServer/client.i18n.json b/Extension/i18n/deu/src/LanguageServer/client.i18n.json index 1002cf57c..87d6a53a8 100644 --- a/Extension/i18n/deu/src/LanguageServer/client.i18n.json +++ b/Extension/i18n/deu/src/LanguageServer/client.i18n.json @@ -30,6 +30,9 @@ "config.not.found": "Der angeforderte Konfigurationsname wurde nicht gefunden: {0}", "unsupported.client": "Nicht unterstützter Client", "timed.out": "Timeout nach {0} ms.", + "parsing.stats.large.project": "Aufgezählte {0}-Dateien mit {1} C/C++-Quelldateien erkannt. Sie sollten in Betracht ziehen, einige Dateien auszuschließen, um die Leistung zu optimieren.", + "learn.more": "Weitere Informationen", + "dont.show.again": "Nicht mehr anzeigen", "update.intellisense.time": "IntelliSense-Zeit aktualisieren (Sek.): {0}", "configurations.received": "Benutzerdefinierte Konfigurationen empfangen:", "browse.configuration.received": "Benutzerdefinierte Suchkonfiguration empfangen: {0}", diff --git a/Extension/i18n/deu/src/LanguageServer/configurations.i18n.json b/Extension/i18n/deu/src/LanguageServer/configurations.i18n.json index ec30b8b78..701591863 100644 --- a/Extension/i18n/deu/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/deu/src/LanguageServer/configurations.i18n.json @@ -5,6 +5,7 @@ // Do not edit this file. It is machine generated. { "incompatible.intellisense.mode": "Der IntelliSense-Modus \"{0}\" ist inkompatibel mit dem Compilerpfad.", + "resolve.configuration.processed": "Verarbeitete c_cpp_properties.json-Datei in {0} s", "failed.to.create.config.folder": "\"{0}\" konnte nicht erstellt werden.", "invalid.configuration.file": "Ungültige Konfigurationsdatei. Im Array muss mindestens eine Konfiguration vorhanden sein.", "unknown.properties.version": "In \"c_cpp_properties.json\" wurde eine unbekannte Versionsnummer gefunden. Einige Features funktionieren möglicherweise nicht wie erwartet.", @@ -13,9 +14,13 @@ "path.with.spaces": "Der Compilerpfad mit Leerzeichen konnte nicht gefunden werden. Wenn dies auch Compilerargumente einschließen soll, setzen Sie den Compilerpfad in doppelte Anführungszeichen ({0}).", "cannot.find": "Nicht gefunden: {0}", "path.is.not.a.file": "Der Pfad ist keine Datei: {0}", + "resolve.includePath.took.too.long": "Der Validierung des Inlcude-Pfads hat {0} s für die Auswertung benötigt", + "resolve.includePath.failed": "Fehler beim Auflösen des Include-Pfads. Fehler: {0}", "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.", + "resolve.path.took.too.long": "Der Pfad hat {0} s für die Auswertung benötigt", + "resolve.path.failed": "Fehler beim Auflösen des Pfads {0}. Fehler: {1}", "multiple.paths.not.allowed": "Mehrere Pfade sind nicht zulässig.", "multiple.paths.should.be.separate.entries": "Mehrere Pfade müssen separate Einträge in einem Array sein.", "paths.are.not.directories": "Pfade sind keine Verzeichnisse: {0}" diff --git a/Extension/i18n/deu/ui/settings.html.i18n.json b/Extension/i18n/deu/ui/settings.html.i18n.json index aadcd4ecf..94bd6a1f6 100644 --- a/Extension/i18n/deu/ui/settings.html.i18n.json +++ b/Extension/i18n/deu/ui/settings.html.i18n.json @@ -44,7 +44,7 @@ "cpp.standard.description": "Die Version des C++-Sprachstandards, die für IntelliSense verwendet werden soll. Hinweis: GNU-Standards werden nur zum Abfragen des festgelegten Compilers zum Abrufen von GNU-Definitionen verwendet, und IntelliSense emuliert die äquivalente Version des C++-Standards.", "advanced.settings": "Erweiterte Einstellungen", "configuration.provider": "Konfigurationsanbieter", - "configuration.provider.description": "Die ID einer VS Code-Erweiterung, die IntelliSense-Konfigurationsinformationen für Quelldateien bereitstellen kann. Verwenden Sie zum Beispiel die VS Code-Erweiterungs-ID \"{0}\", um Konfigurationsinformationen aus der CMake Tools-Erweiterung bereitzustellen.", + "configuration.provider.description": "Die ID einer VS Code-Erweiterung, die IntelliSense-Konfigurationsinformationen für Quelldateien bereitstellen kann. Verwenden Sie zum Beispiel die VS Code-Erweiterungs-ID \"{0}\", um Konfigurationsinformationen aus der Erweiterung CMake Tools bereitzustellen.", "windows.sdk.version": "Windows SDK-Version", "windows.sdk.version.description": "Die Version des Windows SDK-Includepfads zur Verwendung unter Windows, z. B. \"{0}\".", "mac.framework.path": "Pfad für Mac-Framework", diff --git a/Extension/i18n/esn/package.i18n.json b/Extension/i18n/esn/package.i18n.json index 555aeeecb..aa3d233d3 100644 --- a/Extension/i18n/esn/package.i18n.json +++ b/Extension/i18n/esn/package.i18n.json @@ -310,7 +310,7 @@ "c_cpp.debuggers.miDebuggerServerAddress.description": "Dirección de red del servidor del depurador MI al que debe conectarse (ejemplo: localhost:1234).", "c_cpp.debuggers.useExtendedRemote.description": "Conéctese al servidor del depurador de Instancia administrada con el modo extendido-remoto de destino.", "c_cpp.debuggers.stopAtEntry.markdownDescription": "Parámetro opcional. Si se establece en `true`, el depurador debe detenerse en el punto de entrada del destino. Si se pasa `processId`, esto no tiene efecto.", - "c_cpp.debuggers.debugServerPath.description": "Ruta de acceso completa opcional al servidor de depuración que se va a iniciar. El valor predeterminado es null. Se usa junto con \"miDebugServerAddress\" o su servidor propio con un comando \"customSetupCommand\" que ejecuta \"-target-select remote \".", + "c_cpp.debuggers.debugServerPath.description": "Ruta de acceso completa opcional al servidor de depuración que se va a iniciar. El valor predeterminado es null. Se usa junto con \"miDebuggerServerAddress\" o su servidor propio con un comando \"customSetupCommand\" que ejecuta \"-target-select remote \".", "c_cpp.debuggers.debugServerArgs.description": "Argumentos opcionales del servidor de depuración. El valor predeterminado es NULL.", "c_cpp.debuggers.serverStarted.description": "Patrón opcional iniciado por el servidor que debe buscarse en la salida del servidor de depuración. El valor predeterminado es NULL.", "c_cpp.debuggers.filterStdout.description": "Busca la secuencia stdout para el patrón iniciado por el servidor y registra stdout en la salida de depuración. El valor predeterminado es true.", diff --git a/Extension/i18n/esn/src/LanguageServer/client.i18n.json b/Extension/i18n/esn/src/LanguageServer/client.i18n.json index 78af790dc..f70efaa44 100644 --- a/Extension/i18n/esn/src/LanguageServer/client.i18n.json +++ b/Extension/i18n/esn/src/LanguageServer/client.i18n.json @@ -30,6 +30,9 @@ "config.not.found": "No se encuentra el nombre de la configuración que se ha solicitado: {0}", "unsupported.client": "Cliente no admitido", "timed.out": "Se agotó el tiempo de espera a los {0} ms.", + "parsing.stats.large.project": "{0} archivos enumerados con {1} archivos de origen de C/C++ detectados. Puede que desee considerar la exclusión de algunos archivos para mejorar el rendimiento.", + "learn.more": "Obtener más información", + "dont.show.again": "No volver a mostrar", "update.intellisense.time": "Tiempo de actualización de IntelliSense (s): {0}", "configurations.received": "Configuraciones personalizadas recibidas:", "browse.configuration.received": "Configuración de exploración personalizada recibida: {0}", diff --git a/Extension/i18n/esn/src/LanguageServer/configurations.i18n.json b/Extension/i18n/esn/src/LanguageServer/configurations.i18n.json index bdf0c3e4a..7e03959b7 100644 --- a/Extension/i18n/esn/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/esn/src/LanguageServer/configurations.i18n.json @@ -5,6 +5,7 @@ // Do not edit this file. It is machine generated. { "incompatible.intellisense.mode": "El modo {0} de IntelliSense no es compatible con la ruta de acceso del compilador.", + "resolve.configuration.processed": "c_cpp_properties.json procesado en {0}s", "failed.to.create.config.folder": "No se pudo crear \"{0}\"", "invalid.configuration.file": "Archivo de configuración no válido. Debe haber al menos una configuración en la matriz.", "unknown.properties.version": "Se encontró un número de versión desconocido en el archivo c_cpp_properties.json. Es posible que algunas características no funcionen correctamente.", @@ -13,9 +14,13 @@ "path.with.spaces": "No se encontró la ruta de acceso del compilador con espacios. Si la intención era incluir argumentos del compilador, escriba la ruta del compilador entre comillas dobles ({0}).", "cannot.find": "No se encuentra {0}", "path.is.not.a.file": "La ruta de acceso no es un archivo: {0}", + "resolve.includePath.took.too.long": "La validación de la ruta de acceso de inclusión tardó {0} s en evaluarse", + "resolve.includePath.failed": "No se pudo resolver la ruta de acceso de inclusión. Error: {0}", "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.", + "resolve.path.took.too.long": "La ruta de acceso tardó {0}s en evaluarse", + "resolve.path.failed": "No se pudo resolver la ruta de acceso {0}. Error: {1}", "multiple.paths.not.allowed": "No se permiten varias rutas de acceso.", "multiple.paths.should.be.separate.entries": "Varias rutas de acceso deben ser entradas separadas en una matriz.", "paths.are.not.directories": "Las rutas de acceso no son directorios: {0}" diff --git a/Extension/i18n/esn/ui/settings.html.i18n.json b/Extension/i18n/esn/ui/settings.html.i18n.json index 5c38d7c01..00be3468c 100644 --- a/Extension/i18n/esn/ui/settings.html.i18n.json +++ b/Extension/i18n/esn/ui/settings.html.i18n.json @@ -44,7 +44,7 @@ "cpp.standard.description": "Versión del estándar del lenguaje C++ que se va a usar para IntelliSense. Nota: Los estándares GNU solo se usan para consultar el compilador de conjuntos a fin de obtener definiciones GNU e IntelliSense emulará la versión del estándar C++ equivalente.", "advanced.settings": "Configuración avanzada", "configuration.provider": "Proveedor de configuración", - "configuration.provider.description": "Id. de una extensión de VS Code que puede proporcionar información de configuración de IntelliSense para los archivos de código fuente. Por ejemplo, use el id. de extensión de VS Code {0} para proporcionar información de configuración de la extensión Herramientas de CMake.", + "configuration.provider.description": "Id. de una extensión de VS Code que puede proporcionar información de configuración de IntelliSense para los archivos de código fuente. Por ejemplo, use el id. de extensión de VS Code {0} para proporcionar información de configuración de la extensión CMake Tools.", "windows.sdk.version": "Versión del SDK de Windows", "windows.sdk.version.description": "Versión de la ruta de acceso de inclusión del SDK de Windows SDK que debe usarse en Windows; por ejemplo, {0}.", "mac.framework.path": "Ruta de acceso de la plataforma Mac", diff --git a/Extension/i18n/fra/package.i18n.json b/Extension/i18n/fra/package.i18n.json index 5639bcc5f..7de891616 100644 --- a/Extension/i18n/fra/package.i18n.json +++ b/Extension/i18n/fra/package.i18n.json @@ -310,7 +310,7 @@ "c_cpp.debuggers.miDebuggerServerAddress.description": "Adresse réseau du serveur du débogueur MI auquel se connecter (par exemple : localhost:1234).", "c_cpp.debuggers.useExtendedRemote.description": "Connectez-vous au serveur débogueur MI avec le mode étendu-distant cible.", "c_cpp.debuggers.stopAtEntry.markdownDescription": "Paramètre facultatif. Si la valeur est `true`, le débogueur doit s'arrêter au point d'entrée de la cible. Si `processId` est passé, cela n'a aucun effet.", - "c_cpp.debuggers.debugServerPath.description": "Chemin complet facultatif au serveur de débogage à lancer (valeur par défaut : null). Utilisé conjointement avec \"miDebugServerAddress\" ou votre propre serveur avec \"customSetupCommand\" qui exécute \"-target-select remote \".", + "c_cpp.debuggers.debugServerPath.description": "Chemin complet facultatif au serveur de débogage à lancer. Valeur par défaut : null. Utilisé conjointement avec \"miDebuggerServerAddress\" ou votre propre serveur avec \"customSetupCommand\" qui exécute \"-target-select remote \".", "c_cpp.debuggers.debugServerArgs.description": "Arguments facultatifs du serveur de débogage. La valeur par défaut est null.", "c_cpp.debuggers.serverStarted.description": "Modèle facultatif de démarrage du serveur à rechercher dans la sortie du serveur de débogage. La valeur par défaut est null.", "c_cpp.debuggers.filterStdout.description": "Permet de rechercher dans le flux stdout le modèle correspondant au démarrage du serveur, et de journaliser stdout dans la sortie de débogage. La valeur par défaut est true.", diff --git a/Extension/i18n/fra/src/LanguageServer/client.i18n.json b/Extension/i18n/fra/src/LanguageServer/client.i18n.json index fc530cb81..6ccb0ae37 100644 --- a/Extension/i18n/fra/src/LanguageServer/client.i18n.json +++ b/Extension/i18n/fra/src/LanguageServer/client.i18n.json @@ -30,6 +30,9 @@ "config.not.found": "Le nom de configuration demandé est introuvable : {0}", "unsupported.client": "Client non pris en charge", "timed.out": "Expiration du délai d'attente dans {0} ms.", + "parsing.stats.large.project": "{0} fichiers listés avec {1} fichiers sources C/C++ détectés. Vous pourriez envisager d’exclure certains fichiers pour un meilleur niveau de performance.", + "learn.more": "En savoir plus", + "dont.show.again": "Ne plus afficher", "update.intellisense.time": "Durée de mise à jour d'IntelliSense (s) : {0}", "configurations.received": "Configurations personnalisées reçues :", "browse.configuration.received": "Configuration de navigation personnalisée reçue : {0}", diff --git a/Extension/i18n/fra/src/LanguageServer/configurations.i18n.json b/Extension/i18n/fra/src/LanguageServer/configurations.i18n.json index 214fdd52d..4f51b54bc 100644 --- a/Extension/i18n/fra/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/fra/src/LanguageServer/configurations.i18n.json @@ -5,6 +5,7 @@ // Do not edit this file. It is machine generated. { "incompatible.intellisense.mode": "Le mode IntelliSense {0} est incompatible avec le chemin du compilateur.", + "resolve.configuration.processed": "Fichier c_cpp_properties.json traité en {0} s", "failed.to.create.config.folder": "La création de \"{0}\" a échoué", "invalid.configuration.file": "Fichier de configuration non valide. Au moins une configuration doit être présente dans le tableau.", "unknown.properties.version": "Numéro de version inconnu dans c_cpp_properties.json. Certaines fonctionnalités peuvent ne pas fonctionner comme prévu.", @@ -13,9 +14,13 @@ "path.with.spaces": "Le chemin d’accès du compilateur contenant des espaces est introuvable. S’il devait inclure des arguments du compilateur, entourez le chemin d’accès du compilateur de guillemets doubles ({0}).", "cannot.find": "{0} introuvable", "path.is.not.a.file": "Le chemin n'est pas un fichier : {0}", + "resolve.includePath.took.too.long": "L’évaluation de la validation du chemin d’accès d’inclusion a pris {0} s", + "resolve.includePath.failed": "Échec de la résolution du chemin d’accès d’inclusion. Erreur : {0}", "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.", + "resolve.path.took.too.long": "L’évaluation du chemin a pris {0} s", + "resolve.path.failed": "Échec de la résolution du chemin d’accès {0}. Erreur : {1}", "multiple.paths.not.allowed": "Il est interdit d’utiliser plusieurs chemin d’accès.", "multiple.paths.should.be.separate.entries": "Plusieurs chemins d’accès doivent être des entrées distinctes dans un tableau.", "paths.are.not.directories": "Les chemins d’accès ne sont pas des répertoires : {0}" diff --git a/Extension/i18n/ita/package.i18n.json b/Extension/i18n/ita/package.i18n.json index f7e19d223..21b7d8bd5 100644 --- a/Extension/i18n/ita/package.i18n.json +++ b/Extension/i18n/ita/package.i18n.json @@ -310,7 +310,7 @@ "c_cpp.debuggers.miDebuggerServerAddress.description": "Indirizzo di rete del server del debugger MI a cui connettersi. Esempio: localhost:1234.", "c_cpp.debuggers.useExtendedRemote.description": "Connettersi al server del debugger MI con la modalità estesa-remota di destinazione.", "c_cpp.debuggers.stopAtEntry.markdownDescription": "Parametro facoltativo. Se è `true`, il debugger deve arrestarsi in corrispondenza del punto di ingresso della destinazione. Se viene passato `processId`, non ha alcun effetto.", - "c_cpp.debuggers.debugServerPath.description": "Percorso completo facoltativo del server di debug da avviare. L'impostazione predefinita è Null. Viene usata insieme a \"miDebugServerAddress\" o al proprio server con un comando \"customSetupCommand\" che esegue \"-target-select remote \".", + "c_cpp.debuggers.debugServerPath.description": "Percorso completo facoltativo del server di debug da avviare. L'impostazione predefinita è Null. Viene usata insieme a \"miDebuggerServerAddress\" o al proprio server con un comando \"customSetupCommand\" che esegue \"-target-select remote \".", "c_cpp.debuggers.debugServerArgs.description": "Argomenti facoltativi del server di debug. L'impostazione predefinita è null.", "c_cpp.debuggers.serverStarted.description": "Criterio facoltativo avviato dal server per cercare nell'output del server di debug. L'impostazione predefinita è null.", "c_cpp.debuggers.filterStdout.description": "Cerca il criterio avviato dal server nel flusso stdout e registra stdout nell'output di debug. L'impostazione predefinita è true.", @@ -325,7 +325,7 @@ "c_cpp.debuggers.cppvsdbg.console.externalTerminal.description": "Le applicazioni della console verranno avviate in una finestra del terminale esterna. La finestra verrà riutilizzata in scenari di riavvio e non scomparirà automaticamente alla chiusura dell'applicazione.", "c_cpp.debuggers.cppvsdbg.console.newExternalWindow.description": "Le applicazioni della console verranno avviate nella finestra della console esterna, che verrà terminata alla chiusura dell'applicazione. Le applicazioni non della console vengono eseguite senza un terminale e stdout/stderr verrà ignorato.", "c_cpp.debuggers.avoidWindowsConsoleRedirection.description": "Se è true, disabilita il reindirizzamento della console dell'oggetto del debug richiesto per il supporto del terminale integrato.", - "c_cpp.debuggers.sourceFileMap.markdownDescription": "Mapping di file di origine facoltativi passati al motore di debug. Esempio: `{ \"\": \"\" }`.", + "c_cpp.debuggers.sourceFileMap.markdownDescription": "Mapping di file di origine facoltativi passati al motore di debug. Esempio: `{ \"\": \"\" }`.", "c_cpp.debuggers.processId.anyOf.markdownDescription": "ID processo facoltativo a cui collegare il debugger. Usare `${command:pickProcess}` per ottenere un elenco dei processi locali in esecuzione a cui collegarsi. Tenere presente che alcune piattaforme richiedono privilegi di amministratore per collegarsi a un processo.", "c_cpp.debuggers.symbolSearchPath.description": "Elenco di directory delimitate da punto e virgola da usare per la ricerca di file di simboli, ovvero PDB. Esempio: \"c:\\dir1;c:\\dir2\".", "c_cpp.debuggers.dumpPath.description": "Percorso completo facoltativo di un file dump per il programma specificato. Esempio: \"c:\\temp\\app.dmp\". L'impostazione predefinita è Null.", diff --git a/Extension/i18n/ita/src/LanguageServer/client.i18n.json b/Extension/i18n/ita/src/LanguageServer/client.i18n.json index 3fcdf1e97..1c15246b0 100644 --- a/Extension/i18n/ita/src/LanguageServer/client.i18n.json +++ b/Extension/i18n/ita/src/LanguageServer/client.i18n.json @@ -30,6 +30,9 @@ "config.not.found": "Il nome di configurazione richiesto non è stato trovato: {0}", "unsupported.client": "Client non supportato", "timed.out": "Timeout raggiunto in {0} ms.", + "parsing.stats.large.project": "Sono stati enumerati {0} file con {1} file di origine C/C++ rilevati. Per ottenere prestazioni migliori, è possibile scegliere di escludere alcuni file.", + "learn.more": "Altre informazioni", + "dont.show.again": "Non visualizzare più questo messaggio", "update.intellisense.time": "Aggiorna ora di IntelliSense (sec): {0}", "configurations.received": "Configurazioni personalizzate ricevute:", "browse.configuration.received": "La configurazione di esplorazione personalizzata è stata ricevuta: {0}", diff --git a/Extension/i18n/ita/src/LanguageServer/configurations.i18n.json b/Extension/i18n/ita/src/LanguageServer/configurations.i18n.json index 9d2440059..0516e82ba 100644 --- a/Extension/i18n/ita/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/ita/src/LanguageServer/configurations.i18n.json @@ -5,6 +5,7 @@ // Do not edit this file. It is machine generated. { "incompatible.intellisense.mode": "La modalità IntelliSense {0} non è compatibile con il percorso del compilatore.", + "resolve.configuration.processed": "C_cpp_properties.json elaborato in {0} s", "failed.to.create.config.folder": "Non è stato possibile creare \"{0}\"", "invalid.configuration.file": "File di configurazione non valido. Nella matrice deve essere presente almeno una configurazione.", "unknown.properties.version": "È stato trovato un numero di versione sconosciuto in c_cpp_properties.json. Alcune funzionalità potrebbero non funzionare come previsto.", @@ -13,9 +14,13 @@ "path.with.spaces": "Non è possibile trovare il percorso del compilatore contenente spazi. Se l'intenzione era includere argomenti del compilatore, racchiudi il percorso del compilatore tra doppie virgolette ({0}).", "cannot.find": "Non è possibile trovare: {0}", "path.is.not.a.file": "Il percorso non è un file: {0}", + "resolve.includePath.took.too.long": "La valutazione della convalida del percorso di inclusione ha richiesto {0} s", + "resolve.includePath.failed": "Non è possibile risolvere il percorso di inclusione. Errore: {0}", "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.", + "resolve.path.took.too.long": "La valutazione del percorso ha richiesto {0} s", + "resolve.path.failed": "Non è possibile risolvere il percorso {0}. Errore: {1}", "multiple.paths.not.allowed": "Più percorsi non sono consentiti.", "multiple.paths.should.be.separate.entries": "Più percorsi devono essere voci separate in una matrice.", "paths.are.not.directories": "I percorsi non sono directory: {0}" diff --git a/Extension/i18n/jpn/package.i18n.json b/Extension/i18n/jpn/package.i18n.json index 200dab647..2a07b4b7d 100644 --- a/Extension/i18n/jpn/package.i18n.json +++ b/Extension/i18n/jpn/package.i18n.json @@ -310,7 +310,7 @@ "c_cpp.debuggers.miDebuggerServerAddress.description": "接続先の MI デバッガー サーバーのネットワークアドレスです (例: localhost: 1234)。", "c_cpp.debuggers.useExtendedRemote.description": "ターゲットの拡張リモート モードで MI デバッガー サーバーに接続します。", "c_cpp.debuggers.stopAtEntry.markdownDescription": "オプションのパラメーターです。`true` の場合、デバッガーはターゲットのエントリポイントで停止します。`processId` が渡された場合、この効果はありません。", - "c_cpp.debuggers.debugServerPath.description": "起動するデバッグ サーバーの完全なパス (省略可能)。既定値は null です。これは、\"miDebugServerAddress\"、または \"-target-select remote \" を実行する \"customSetupCommand\" を含む独自のサーバーのいずれかと接合して使用されます。", + "c_cpp.debuggers.debugServerPath.description": "起動するデバッグ サーバーの完全なパス (オプション)。既定値は null です。これは、\"miDebuggerServerAddress\" か、\"-target-select remote \" を実行する \"customSetupCommand\" を持つ独自のサーバーの、どちらかと組み合わせて使用されます。", "c_cpp.debuggers.debugServerArgs.description": "デバッグ サーバー引数 (省略可能)。既定値は null です。", "c_cpp.debuggers.serverStarted.description": "デバッグ サーバー出力から検索する、サーバー開始のパターン (省略可能)。既定値は null です。", "c_cpp.debuggers.filterStdout.description": "サーバー開始のパターンを stdout ストリームから検索し、stdout をデバッグ出力にログ記録します。既定値は true です。", diff --git a/Extension/i18n/jpn/src/LanguageServer/client.i18n.json b/Extension/i18n/jpn/src/LanguageServer/client.i18n.json index 615a07e29..62cc0cb54 100644 --- a/Extension/i18n/jpn/src/LanguageServer/client.i18n.json +++ b/Extension/i18n/jpn/src/LanguageServer/client.i18n.json @@ -30,6 +30,9 @@ "config.not.found": "要求された構成名が見つかりません: {0}", "unsupported.client": "サポートされていないクライアント", "timed.out": "{0} ミリ秒でタイムアウトしました。", + "parsing.stats.large.project": "{1} C/C++ ソース ファイルが検出された {0} ファイルを列挙しました。パフォーマンスを向上させるために、一部のファイルを除外することを検討してください。", + "learn.more": "詳細情報", + "dont.show.again": "今後は表示しない", "update.intellisense.time": "IntelliSense 時間 (秒) の更新: {0}", "configurations.received": "カスタム構成を受信しました:", "browse.configuration.received": "カスタムの参照構成を受信しました: {0}", diff --git a/Extension/i18n/jpn/src/LanguageServer/configurations.i18n.json b/Extension/i18n/jpn/src/LanguageServer/configurations.i18n.json index dffe1e85e..47091854e 100644 --- a/Extension/i18n/jpn/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/jpn/src/LanguageServer/configurations.i18n.json @@ -5,6 +5,7 @@ // Do not edit this file. It is machine generated. { "incompatible.intellisense.mode": "IntelliSense モード {0} は、コンパイラ パスと互換性がありません。", + "resolve.configuration.processed": "c_cpp_properties.json を {0} 秒で処理しました", "failed.to.create.config.folder": "\"{0}\" を作成できませんでした", "invalid.configuration.file": "構成ファイルが無効です。配列には少なくとも 1 つの構成が必要です。", "unknown.properties.version": "c_cpp_properties.json に不明なバージョン番号が見つかりました。一部の機能が予期したとおりに動作しない可能性があります。", @@ -13,9 +14,13 @@ "path.with.spaces": "スペースを含むコンパイラ パスが見つかりませんでした。コンパイラ引数を含める場合は、コンパイラ パスを二重引用符 ({0}) で囲みます。", "cannot.find": "{0} が見つかりません。", "path.is.not.a.file": "パスがファイルではありません: {0}", + "resolve.includePath.took.too.long": "インクルード パスの検証で評価に {0} 秒かかりました", + "resolve.includePath.failed": "インクルード パスを解決できません。エラー: {0}", "wrapped.with.quotes": "パスの前後に余分な引用符を追加しないでください。", "path.is.not.a.directory": "パスがディレクトリではありません: {0}", "duplicate.name": "{0} が重複しています。構成名は一意である必要があります。", + "resolve.path.took.too.long": "パスは評価するのに {0} 秒かかりました", + "resolve.path.failed": "パス {0} を解決できませんでした。エラー: {1}", "multiple.paths.not.allowed": "複数のパスは使用できません。", "multiple.paths.should.be.separate.entries": "複数のパスは、配列内の個別のエントリである必要があります。", "paths.are.not.directories": "パスはディレクトリではありません: {0}" diff --git a/Extension/i18n/kor/package.i18n.json b/Extension/i18n/kor/package.i18n.json index 83ce5bab0..f8ef1ded0 100644 --- a/Extension/i18n/kor/package.i18n.json +++ b/Extension/i18n/kor/package.i18n.json @@ -310,7 +310,7 @@ "c_cpp.debuggers.miDebuggerServerAddress.description": "연결할 MI 디버거 서버의 네트워크 주소입니다(예: localhost:1234).", "c_cpp.debuggers.useExtendedRemote.description": "대상 확장 원격 모드를 사용하여 MI 디버거 서버에 연결합니다.", "c_cpp.debuggers.stopAtEntry.markdownDescription": "선택적 매개 변수입니다. `true`이면 디버거가 대상의 진입점에서 중지됩니다. `processId`가 전달되는 경우 영향을 주지 않습니다.", - "c_cpp.debuggers.debugServerPath.description": "시작할 디버그 서버의 전체 경로입니다(선택 사항). 기본값은 null입니다. 이 옵션은 \"miDebugServerAddress\"와 함께 사용되거나 \"-target-select remote \"를 실행하는 \"customSetupCommand\"와 자체 서버와 함께 사용됩니다.", + "c_cpp.debuggers.debugServerPath.description": "시작할 디버그 서버의 전체 경로입니다(선택 사항). 기본값은 null입니다. 이 옵션은 \"miDebuggerServerAddress\"와 함께 사용되거나 \"-target-select remote \"를 실행하는 \"customSetupCommand\"와 자체 서버와 함께 사용됩니다.", "c_cpp.debuggers.debugServerArgs.description": "선택적 디버그 서버 인수입니다. 기본값은 null입니다.", "c_cpp.debuggers.serverStarted.description": "디버그 서버 출력에서 찾을 서버에서 시작한 패턴(선택 사항)입니다. 기본값은 null입니다.", "c_cpp.debuggers.filterStdout.description": "서버에서 시작한 패턴을 stdout 스트림에서 검색하고, stdout를 디버그 출력에 기록합니다. 기본값은 true입니다.", @@ -325,7 +325,7 @@ "c_cpp.debuggers.cppvsdbg.console.externalTerminal.description": "콘솔 애플리케이션이 외부 터미널 창에서 시작됩니다. 이 창은 다시 시작 시나리오에서 재사용되며, 애플리케이션이 종료될 때 자동으로 사라지지 않습니다.", "c_cpp.debuggers.cppvsdbg.console.newExternalWindow.description": "콘솔 애플리케이션은 애플리케이션이 중지될 때 종료되는 해당 외부 콘솔 창에서 시작됩니다. 콘솔이 아닌 애플리케이션은 터미널 없이 실행되며, stdout/stderr이 무시됩니다.", "c_cpp.debuggers.avoidWindowsConsoleRedirection.description": "True이면 통합 터미널 지원에 필요한 디버기 콘솔 리디렉션을 사용하지 않도록 설정합니다.", - "c_cpp.debuggers.sourceFileMap.markdownDescription": "디버그 엔진에 전달되는 선택적 소스 파일 매핑입니다. 예: `{ \"\": \"\" }`.", + "c_cpp.debuggers.sourceFileMap.markdownDescription": "디버그 엔진에 전달되는 선택적 소스 파일 매핑입니다. 예: `{ \"<원래 소스 경로>\": \"<현재 소스 경로>\" }`.", "c_cpp.debuggers.processId.anyOf.markdownDescription": "디버거를 연결할 선택적 프로세스 ID입니다. `${command:pickProcess}`를 사용하여 연결할 로컬 실행 프로세스 목록을 가져옵니다. 일부 플랫폼에서는 프로세스에 연결하기 위해 관리자 권한이 필요합니다.", "c_cpp.debuggers.symbolSearchPath.description": "기호(pdb) 파일 검색에 사용할 디렉터리의 세미콜론으로 구분된 목록입니다(예: \"c:\\dir1;c:\\dir2\").", "c_cpp.debuggers.dumpPath.description": "지정된 프로그램에 대한 코어 덤프 파일의 선택적 전체 경로입니다(예: \"c:\\temp\\app.dmp\"). 기본값은 null입니다.", diff --git a/Extension/i18n/kor/src/LanguageServer/client.i18n.json b/Extension/i18n/kor/src/LanguageServer/client.i18n.json index 6959b3a1e..f3650f4ad 100644 --- a/Extension/i18n/kor/src/LanguageServer/client.i18n.json +++ b/Extension/i18n/kor/src/LanguageServer/client.i18n.json @@ -30,6 +30,9 @@ "config.not.found": "요청된 구성 이름을 찾을 수 없음: {0}", "unsupported.client": "지원되지 않는 클라이언트", "timed.out": "{0}ms 후 시간이 초과되었습니다.", + "parsing.stats.large.project": "{1} C/C++ 소스 파일이 검색된 {0} 파일이 열거되었습니다. 성능 향상을 위해 일부 파일을 제외하는 것이 좋습니다.", + "learn.more": "자세히 알아보기", + "dont.show.again": "다시 표시 안 함", "update.intellisense.time": "IntelliSense 시간(초) 업데이트: {0}", "configurations.received": "사용자 지정 구성이 수신됨:", "browse.configuration.received": "사용자 지정 찾아보기 구성이 수신됨: {0}", diff --git a/Extension/i18n/kor/src/LanguageServer/configurations.i18n.json b/Extension/i18n/kor/src/LanguageServer/configurations.i18n.json index 4eee2192a..4d843fe41 100644 --- a/Extension/i18n/kor/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/kor/src/LanguageServer/configurations.i18n.json @@ -5,6 +5,7 @@ // Do not edit this file. It is machine generated. { "incompatible.intellisense.mode": "IntelliSense 모드 {0}은(는) 컴파일러 경로와 호환되지 않습니다.", + "resolve.configuration.processed": "{0}에서 처리된 c_cpp_properties.json", "failed.to.create.config.folder": "{0}을(를) 만들지 못했습니다.", "invalid.configuration.file": "구성 파일이 잘못되었습니다. 배열에 구성이 하나 이상 있어야 합니다.", "unknown.properties.version": "c_cpp_properties.json에 알 수 없는 버전 번호가 있습니다. 일부 기능이 예상대로 작동하지 않을 수 있습니다.", @@ -13,9 +14,13 @@ "path.with.spaces": "공백이 있는 컴파일러 경로를 찾을 수 없습니다. 만약 컴파일러 인수를 포함하려는 의도였다면, 컴파일러 경로를 큰따옴표({0})로 감싸세요.", "cannot.find": "찾을 수 없음: {0}", "path.is.not.a.file": "경로가 파일이 아님: {0}", + "resolve.includePath.took.too.long": "포함 경로 유효성 검사에서 평가하는 데 {0}이(가) 걸림", + "resolve.includePath.failed": "포함 경로를 확인하지 못했습니다. 오류: {0}", "wrapped.with.quotes": "경로 주위에 따옴표를 추가하지 마세요.", "path.is.not.a.directory": "경로가 디렉터리가 아님: {0}", "duplicate.name": "{0}은(는) 중복됩니다. 구성 이름은 고유해야 합니다.", + "resolve.path.took.too.long": "경로에서 평가하는 데 {0}이(가) 걸림", + "resolve.path.failed": "{0} 경로를 확인하지 못했습니다. 오류: {1}", "multiple.paths.not.allowed": "여러 경로는 허용되지 않습니다.", "multiple.paths.should.be.separate.entries": "여러 경로는 배열에서 별도의 항목이어야 합니다.", "paths.are.not.directories": "경로는 디렉터리가 아님: {0}" diff --git a/Extension/i18n/kor/ui/settings.html.i18n.json b/Extension/i18n/kor/ui/settings.html.i18n.json index 13eabc839..1f1180efd 100644 --- a/Extension/i18n/kor/ui/settings.html.i18n.json +++ b/Extension/i18n/kor/ui/settings.html.i18n.json @@ -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 Tools 확장의 구성 정보를 제공합니다.", "windows.sdk.version": "Windows SDK 버전", "windows.sdk.version.description": "Windows에서 사용할 Windows SDK 포함 경로의 버전입니다(예: {0}).", "mac.framework.path": "Mac 프레임워크 경로", diff --git a/Extension/i18n/plk/package.i18n.json b/Extension/i18n/plk/package.i18n.json index fe3ea3b1a..28c0cb0d0 100644 --- a/Extension/i18n/plk/package.i18n.json +++ b/Extension/i18n/plk/package.i18n.json @@ -310,7 +310,7 @@ "c_cpp.debuggers.miDebuggerServerAddress.description": "Adres sieciowy serwera debugera MI, z którym ma zostać nawiązane połączenie (przykład: localhost:1234).", "c_cpp.debuggers.useExtendedRemote.description": "Połącz się z wystąpieniem zarządzanym serwera debugera za pomocą docelowego rozszerzonego trybu zdalnego.", "c_cpp.debuggers.stopAtEntry.markdownDescription": "Parametr opcjonalny. Jeśli wartość to `true`, debuger powinien zostać zatrzymany w punkcie wejścia miejsca docelowego. W przypadku przekazania `processId` nie ma to żadnego efektu.", - "c_cpp.debuggers.debugServerPath.description": "Opcjonalna pełna ścieżka do serwera debugowania, który ma zostać uruchomiony. Wartość domyślna to null. Jest ona używana w połączeniu z właściwością \"miDebugServerAddress\" lub Twoim własnym serwerem wraz z poleceniem \"customSetupCommand\", które uruchamia polecenie \"-target-select remote \".", + "c_cpp.debuggers.debugServerPath.description": "Opcjonalna pełna ścieżka do serwera debugowania, który ma zostać uruchomiony. Wartość domyślna to null. Jest on używany w połączeniu z właściwością „miDebuggerServerAddress” lub Twoim własnym serwerem wraz z poleceniem „customSetupCommand”, które uruchamia polecenie „-target-select remote ”.", "c_cpp.debuggers.debugServerArgs.description": "Opcjonalne argumenty serwera debugowania. Wartość domyślna to null.", "c_cpp.debuggers.serverStarted.description": "Opcjonalny wzorzec uruchomiony przez serwer do wyszukania w danych wyjściowych serwera debugowania. Wartością domyślną jest null.", "c_cpp.debuggers.filterStdout.description": "Wyszukiwanie strumienia stdout dla wzorca uruchomionego przez serwer i rejestrowanie strumienia stdout w danych wyjściowych debugowania. Wartością domyślną jest true.", diff --git a/Extension/i18n/plk/src/LanguageServer/client.i18n.json b/Extension/i18n/plk/src/LanguageServer/client.i18n.json index ae660202b..e58f87ecb 100644 --- a/Extension/i18n/plk/src/LanguageServer/client.i18n.json +++ b/Extension/i18n/plk/src/LanguageServer/client.i18n.json @@ -30,6 +30,9 @@ "config.not.found": "Nie znaleziono żądanej nazwy konfiguracji: {0}", "unsupported.client": "Nieobsługiwany klient", "timed.out": "Przekroczono limit czasu: {0} ms.", + "parsing.stats.large.project": "Wyliczono pliki ({0}) z wykrytymi plikami źródłowymi języka C/C++ ({1}). Warto rozważyć wykluczenie niektórych plików w celu zwiększenia wydajności.", + "learn.more": "Dowiedz się więcej", + "dont.show.again": "Nie pokazuj ponownie", "update.intellisense.time": "Aktualizuj czas funkcji IntelliSense (s): {0}", "configurations.received": "Odebrano konfiguracje niestandardowe:", "browse.configuration.received": "Odebrano niestandardową konfigurację przeglądania: {0}", diff --git a/Extension/i18n/plk/src/LanguageServer/configurations.i18n.json b/Extension/i18n/plk/src/LanguageServer/configurations.i18n.json index 0fcca8b0a..327d1e6be 100644 --- a/Extension/i18n/plk/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/plk/src/LanguageServer/configurations.i18n.json @@ -5,6 +5,7 @@ // Do not edit this file. It is machine generated. { "incompatible.intellisense.mode": "Tryb funkcji IntelliSense {0} jest niezgodny z ścieżką kompilatora.", + "resolve.configuration.processed": "Przetworzono plik c_cpp_properties.json w {0} sek.", "failed.to.create.config.folder": "Nie można utworzyć elementu „{0}”", "invalid.configuration.file": "Nieprawidłowy plik konfiguracji. W tablicy musi być obecna co najmniej jedna konfiguracja.", "unknown.properties.version": "W pliku c_cpp_properties.json znaleziono nieznany numer wersji. Niektóre funkcje mogą nie działać w oczekiwany sposób.", @@ -13,9 +14,13 @@ "path.with.spaces": "Nie można odnaleźć ścieżki kompilatora ze spacjami. Jeśli było to przeznaczone do uwzględnienia argumentów kompilatora, otocz ścieżkę kompilatora podwójnym cudzysłowem ({0}).", "cannot.find": "Nie można znaleźć: {0}", "path.is.not.a.file": "Ścieżka nie jest plikiem: {0}", + "resolve.includePath.took.too.long": "Ocena walidacji ścieżki dołączania trwała {0} sek.", + "resolve.includePath.failed": "Nie można rozpoznać ścieżki dołączania. Błąd: {0}", "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.", + "resolve.path.took.too.long": "Ocena ścieżki trwała {0} sek.", + "resolve.path.failed": "Nie można rozpoznać ścieżki {0}. Błąd: {1}", "multiple.paths.not.allowed": "Wiele ścieżek jest niedozwolonych.", "multiple.paths.should.be.separate.entries": "Wiele ścieżek powinno być osobnymi wpisami w tablicy.", "paths.are.not.directories": "Ścieżki nie są katalogami: {0}" diff --git a/Extension/i18n/ptb/package.i18n.json b/Extension/i18n/ptb/package.i18n.json index 6ffc113e0..ea5d404d0 100644 --- a/Extension/i18n/ptb/package.i18n.json +++ b/Extension/i18n/ptb/package.i18n.json @@ -310,7 +310,7 @@ "c_cpp.debuggers.miDebuggerServerAddress.description": "Endereço de rede do Servidor de Depurador MI ao qual se conectar (exemplo: localhost:1234).", "c_cpp.debuggers.useExtendedRemote.description": "Conecte-se ao MI Debugger Server com o modo remoto estendido de destino.", "c_cpp.debuggers.stopAtEntry.markdownDescription": "Parâmetro opcional. Se for `true`, o depurador deverá parar no ponto de entrada do destino. Se `processId` for passado, isso não terá efeito.", - "c_cpp.debuggers.debugServerPath.description": "Caminho completo opcional para o servidor de depuração a ser lançado. O padrão é nulo. É usado em conjunto com \"miDebugServerAddress\" ou seu próprio servidor com um \"customSetupCommand\" que executa \"-target-select remote \".", + "c_cpp.debuggers.debugServerPath.description": "Caminho completo opcional para o servidor de depuração a ser lançado. O padrão é nulo. Ele é usado em conjunto com \"miDebuggerServerAddress\" ou o seu próprio servidor com um \"customSetupCommand\" que executa \"-target-select remote \".", "c_cpp.debuggers.debugServerArgs.description": "Args opcionais do servidor de depuração. O padrão é null.", "c_cpp.debuggers.serverStarted.description": "Padrão iniciado pelo servidor opcional para procurar na saída do servidor de depuração. O padrão é null.", "c_cpp.debuggers.filterStdout.description": "Pesquise o fluxo stdout para o padrão iniciado pelo servidor e log stdout para depurar a saída. O padrão é true.", @@ -425,7 +425,7 @@ "c_cpp.walkthrough.compilers.found.description": "A extensão C++ funciona com um compilador C++. Selecione um daqueles que já estão em sua máquina clicando no botão abaixo.\n[Selecione meu Compilador Padrão](command:C_Cpp.SelectIntelliSenseConfiguration?%22walkthrough%22)", "c_cpp.walkthrough.compilers.found.altText": "Imagem mostrando a seleção rápida de um compilador padrão e a lista de compiladores encontrados na máquina do usuário, um dos quais está selecionado.", "c_cpp.walkthrough.create.cpp.file.title": "Criar um arquivo C++", - "c_cpp.walkthrough.create.cpp.file.description": "[Abrir](command:toSide:workbench.action.files.openFile) ou [criar](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D) em C++ arquivo. Certifique-se de salvá-lo com a extensão \".cpp\", como \"helloworld.cpp\". \n[Criar um arquivo C++](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D)", + "c_cpp.walkthrough.create.cpp.file.description": "[Abrir](command:toSide:workbench.action.files.openFile) ou [criar](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D) um arquivo C++. Certifique-se de salvá-lo com a extensão \".cpp\", como \"helloworld.cpp\". \n[Criar um arquivo C++](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D)", "c_cpp.walkthrough.create.cpp.file.altText": "Abra um arquivo C++ ou uma pasta com um projeto C++.", "c_cpp.walkthrough.command.prompt.title": "Iniciar no Developer Command Prompt for VS", "c_cpp.walkthrough.command.prompt.description": "Ao usar o compilador Microsoft Visual Studio C++, a extensão C++ exige que você inicie o VS Code no Developer Command Prompt for VS. Siga as instruções à direita para relançar.\n[Recarregar Janela](command:workbench.action.reloadWindow)", diff --git a/Extension/i18n/ptb/src/LanguageServer/client.i18n.json b/Extension/i18n/ptb/src/LanguageServer/client.i18n.json index f73f3b681..4fb0487f8 100644 --- a/Extension/i18n/ptb/src/LanguageServer/client.i18n.json +++ b/Extension/i18n/ptb/src/LanguageServer/client.i18n.json @@ -30,6 +30,9 @@ "config.not.found": "O nome de configuração solicitado não foi encontrado: {0}", "unsupported.client": "Cliente sem suporte", "timed.out": "Tempo limite atingido em {0} ms.", + "parsing.stats.large.project": "{0} arquivos enumerados com {1} arquivos de origem C/C++ detectados. Talvez você queira considerar a exclusão de alguns arquivos para melhorar o desempenho.", + "learn.more": "Saiba Mais", + "dont.show.again": "Não Mostrar Novamente", "update.intellisense.time": "Atualize o tempo do IntelliSense (s): {0}", "configurations.received": "Configurações personalizadas recebidas:", "browse.configuration.received": "Configuração de pesquisa personalizada recebida: {0}", diff --git a/Extension/i18n/ptb/src/LanguageServer/configurations.i18n.json b/Extension/i18n/ptb/src/LanguageServer/configurations.i18n.json index c7d53cfe6..d0b84e280 100644 --- a/Extension/i18n/ptb/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/ptb/src/LanguageServer/configurations.i18n.json @@ -5,6 +5,7 @@ // Do not edit this file. It is machine generated. { "incompatible.intellisense.mode": "O modo do IntelliSense {0} é incompatível com o caminho do compilador.", + "resolve.configuration.processed": "Arquivos c_cpp_properties.json processados em {0}s", "failed.to.create.config.folder": "Falha ao criar \"{0}\"", "invalid.configuration.file": "Arquivo de configuração inválido. Precisa haver pelo menos uma configuração presente na matriz.", "unknown.properties.version": "Número de versão desconhecido encontrado em c_cpp_properties.json. Alguns recursos podem não funcionar como esperado.", @@ -13,9 +14,13 @@ "path.with.spaces": "Não foi possível encontrar o caminho do compilador com espaços. Se a intenção era incluir argumentos do compilador, coloque o caminho do compilador entre aspas duplas ({0}).", "cannot.find": "Não é possível localizar: {0}", "path.is.not.a.file": "O caminho não é um arquivo: {0}", + "resolve.includePath.took.too.long": "A validação do caminho de inclusão {0}s para avaliar", + "resolve.includePath.failed": "Falha ao resolver o caminho de inclusão. Erro: {0}", "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.", + "resolve.path.took.too.long": "O caminho levou {0}s para ser avaliado", + "resolve.path.failed": "Falha ao resolver o caminho {0}. Erro: {1}", "multiple.paths.not.allowed": "Vários caminhos não são permitidos.", "multiple.paths.should.be.separate.entries": "Vários caminhos devem ser entradas separadas em uma matriz.", "paths.are.not.directories": "Os caminhos não são diretórios: {0}" diff --git a/Extension/i18n/ptb/ui/settings.html.i18n.json b/Extension/i18n/ptb/ui/settings.html.i18n.json index d15403398..27f33807b 100644 --- a/Extension/i18n/ptb/ui/settings.html.i18n.json +++ b/Extension/i18n/ptb/ui/settings.html.i18n.json @@ -44,7 +44,7 @@ "cpp.standard.description": "A versão do padrão de linguagem C++ a ser usada para o IntelliSense. Observação: os padrões GNU são usados apenas para consultar o compilador de conjunto para obter definições de GNU e o IntelliSense emulará a versão do C++ padrão equivalente.", "advanced.settings": "Configurações Avançadas", "configuration.provider": "Provedor de configuração", - "configuration.provider.description": "A ID de uma extensão do VS Code que pode fornecer informações de configuração de IntelliSense para arquivos de origem. Por exemplo, use a ID de extensão do VS Code {0} para fornecer informações de configuração da extensão de Ferramentas CMake.", + "configuration.provider.description": "A ID de uma extensão do VS Code que pode fornecer informações de configuração de IntelliSense para arquivos de origem. Por exemplo, use a ID de extensão do VS Code {0} para fornecer informações de configuração da extensão de CMake Tools.", "windows.sdk.version": "Versão do SDK do Windows", "windows.sdk.version.description": "A versão do caminho de inclusão SDK do Windows a ser usada no Windows, por exemplo, {0}.", "mac.framework.path": "Caminho da estrutura do Mac", diff --git a/Extension/i18n/rus/package.i18n.json b/Extension/i18n/rus/package.i18n.json index fcd50cc6d..59d57e4c9 100644 --- a/Extension/i18n/rus/package.i18n.json +++ b/Extension/i18n/rus/package.i18n.json @@ -310,7 +310,7 @@ "c_cpp.debuggers.miDebuggerServerAddress.description": "Сетевой адрес сервера отладчика MI, к которому требуется подключиться (пример: localhost:1234).", "c_cpp.debuggers.useExtendedRemote.description": "Подключение к серверу отладчика MI в целевом расширенном удаленном режиме.", "c_cpp.debuggers.stopAtEntry.markdownDescription": "Необязательный параметр. Если задано значение `true`, отладчик должен остановиться в точке входа целевого объекта.. Если передается идентификатор процесса `processId`, этот параметр не действует.", - "c_cpp.debuggers.debugServerPath.description": "Необязательный полный путь к запускаемому серверу отладки. Значение по умолчанию — NULL. Применяется с параметром miDebugServerAddress или с вашим собственным сервером через команду customSetupCommand, использующую -target-select remote .", + "c_cpp.debuggers.debugServerPath.description": "Необязательный полный путь к запускаемому серверу отладки. Значение по умолчанию — null. Применяется с параметром miDebuggerServerAddress или с вашим собственным сервером через команду customSetupCommand, использующую -target-select remote .", "c_cpp.debuggers.debugServerArgs.description": "Необязательные аргументы сервера отладки. Значение по умолчанию: null.", "c_cpp.debuggers.serverStarted.description": "Дополнительный запускаемый сервером шаблон для поиска в выходных данных сервера отладки. Значение по умолчанию: null.", "c_cpp.debuggers.filterStdout.description": "Поиск запущенного сервером шаблона в потоке stdout и регистрация stdout в выходных данных отладки. Значение по умолчанию: true.", diff --git a/Extension/i18n/rus/src/LanguageServer/client.i18n.json b/Extension/i18n/rus/src/LanguageServer/client.i18n.json index 1cdad83df..d43373cfb 100644 --- a/Extension/i18n/rus/src/LanguageServer/client.i18n.json +++ b/Extension/i18n/rus/src/LanguageServer/client.i18n.json @@ -30,6 +30,9 @@ "config.not.found": "Запрошенное имя конфигурации не найдено: {0}", "unsupported.client": "Неподдерживаемый клиент", "timed.out": "Время ожидания истекло через {0} мс.", + "parsing.stats.large.project": "Обнаружены перечисленные файлы ({0}) с исходными файлами C/C++ ({1}). Следует рассмотреть возможность исключения некоторых файлов для повышения производительности.", + "learn.more": "Подробнее", + "dont.show.again": "Больше не показывать", "update.intellisense.time": "Время обновления IntelliSense (в секундах): {0}", "configurations.received": "Получены пользовательские конфигурации:", "browse.configuration.received": "Получена настраиваемая конфигурация просмотра: {0}", diff --git a/Extension/i18n/rus/src/LanguageServer/configurations.i18n.json b/Extension/i18n/rus/src/LanguageServer/configurations.i18n.json index adcfa9960..ee716e148 100644 --- a/Extension/i18n/rus/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/rus/src/LanguageServer/configurations.i18n.json @@ -5,6 +5,7 @@ // Do not edit this file. It is machine generated. { "incompatible.intellisense.mode": "Режим IntelliSense {0} несовместим с путем компилятора.", + "resolve.configuration.processed": "Обработан файл c_cpp_properties.json за {0} с", "failed.to.create.config.folder": "Не удалось создать \"{0}\"", "invalid.configuration.file": "Недопустимый файл конфигурации. В массиве должна присутствовать по меньшей мере одна конфигурация.", "unknown.properties.version": "В c_cpp_properties.json найден неизвестный номер версии. Некоторые функции могут работать не так, как ожидалось.", @@ -13,9 +14,13 @@ "path.with.spaces": "Не удалось найти путь компилятора с пробелами. Если предполагается включение аргументов компилятора, заключите путь компилятора в двойные кавычки ({0}).", "cannot.find": "Не удается найти: {0}", "path.is.not.a.file": "Путь не является файлом: {0}", + "resolve.includePath.took.too.long": "Оценка проверки пути включения заняла {0} с", + "resolve.includePath.failed": "Не удалось разрешить путь включения. Ошибка: {0}", "wrapped.with.quotes": "Не добавляйте лишние кавычки вокруг путей.", "path.is.not.a.directory": "Путь не является каталогом: {0}", "duplicate.name": "{0} является дубликатом. Имя конфигурации должно быть уникальным.", + "resolve.path.took.too.long": "Оценка пути заняла {0} с", + "resolve.path.failed": "Не удалось разрешить путь {0}. Ошибка: {1}", "multiple.paths.not.allowed": "Запрещено использовать несколько путей.", "multiple.paths.should.be.separate.entries": "Несколько путей должны быть отдельными записями в массиве.", "paths.are.not.directories": "Пути не являются каталогами: {0}" diff --git a/Extension/i18n/rus/ui/settings.html.i18n.json b/Extension/i18n/rus/ui/settings.html.i18n.json index 1c0d68c18..97f85b2ce 100644 --- a/Extension/i18n/rus/ui/settings.html.i18n.json +++ b/Extension/i18n/rus/ui/settings.html.i18n.json @@ -44,7 +44,7 @@ "cpp.standard.description": "Версия стандарта языка C++, используемая для IntelliSense. Примечание: стандарты GNU используются только для запроса определений GNU у установленного компилятора, а IntelliSense будет эмулировать эквивалентную версию стандарта C++.", "advanced.settings": "Дополнительные параметры", "configuration.provider": "Поставщик конфигурации", - "configuration.provider.description": "Идентификатор расширения VS Code, которое может предоставлять сведения о конфигурации IntelliSense для исходных файлов. Например, используйте идентификатор расширения VS Code {0}, чтобы предоставить сведения о конфигурации из расширения \"Средства CMake\".", + "configuration.provider.description": "Идентификатор расширения VS Code, которое может предоставлять сведения о конфигурации IntelliSense для исходных файлов. Например, используйте идентификатор расширения VS Code {0}, чтобы предоставить сведения о конфигурации из расширения CMake Tools.", "windows.sdk.version": "Версия Windows SDK", "windows.sdk.version.description": "Версия пути включения Windows SDK для использования в Windows, например {0}.", "mac.framework.path": "Путь к платформе Mac", diff --git a/Extension/i18n/trk/package.i18n.json b/Extension/i18n/trk/package.i18n.json index 8d33102db..e78861af3 100644 --- a/Extension/i18n/trk/package.i18n.json +++ b/Extension/i18n/trk/package.i18n.json @@ -310,7 +310,7 @@ "c_cpp.debuggers.miDebuggerServerAddress.description": "Bağlanılacak MI Hata Ayıklayıcısı Sunucusunun ağ adresi (örnek: localhost:1234).", "c_cpp.debuggers.useExtendedRemote.description": "Hedef genişletilmiş uzak modundayken MI Hata Ayıklayıcısı Sunucusuna bağlanın.", "c_cpp.debuggers.stopAtEntry.markdownDescription": "İsteğe bağlı parametre. Değeri `true` ise, hata ayıklayıcısının hedefin giriş noktasında durması gerekir. `processId` geçirilirse bunun hiçbir etkisi olmaz.", - "c_cpp.debuggers.debugServerPath.description": "Başlatılacak sunucuda hata ayıklama için isteğe bağlı tam yol. Varsayılan değeri null. \"miDebugServerAddress\" veya kendi sunucunuzun \"-target-select remote \" çalıştıran bir \"customSetupCommand\" ile birlikte kullanılır.", + "c_cpp.debuggers.debugServerPath.description": "Başlatılacak sunucuda hata ayıklama için isteğe bağlı tam yol. Varsayılan değeri null. \"miDebuggerServerAddress\" veya kendi sunucunuzun \"-target-select remote \" çalıştıran bir \"customSetupCommand\" ile birlikte kullanılır.", "c_cpp.debuggers.debugServerArgs.description": "İsteğe bağlı hata ayıklama sunucusu bağımsız değişkenleri. Varsayılan olarak şu değeri alır: null.", "c_cpp.debuggers.serverStarted.description": "Hata ayıklama sunucusu çıktısında aranacak, sunucu tarafından başlatılan isteğe bağlı model. Varsayılan olarak şu değeri alır: null.", "c_cpp.debuggers.filterStdout.description": "Sunucu tarafından başlatılan model için stdout akışını arar ve çıktıda hata ayıklamak için stdout'u günlüğe kaydeder. Varsayılan olarak şu değeri alır: true.", diff --git a/Extension/i18n/trk/src/LanguageServer/client.i18n.json b/Extension/i18n/trk/src/LanguageServer/client.i18n.json index e00893b94..baabfc89c 100644 --- a/Extension/i18n/trk/src/LanguageServer/client.i18n.json +++ b/Extension/i18n/trk/src/LanguageServer/client.i18n.json @@ -30,6 +30,9 @@ "config.not.found": "İstenen yapılandırma adı bulunamadı: {0}", "unsupported.client": "Desteklenmeyen istemci", "timed.out": "{0} ms'de zaman aşımına uğradı.", + "parsing.stats.large.project": "{1} C/C++ kaynak dosyası algılanan {0} dosya listelendi. Daha iyi performans için bazı dosyaları hariç tutmayı düşünebilirsiniz.", + "learn.more": "Daha Fazla Bilgi Edinin", + "dont.show.again": "Bir Daha Gösterme", "update.intellisense.time": "IntelliSense güncelleştirme zamanı (sn): {0}", "configurations.received": "Alınan özel yapılandırmalar:", "browse.configuration.received": "Özel gözatma yapılandırması alındı: {0}", diff --git a/Extension/i18n/trk/src/LanguageServer/configurations.i18n.json b/Extension/i18n/trk/src/LanguageServer/configurations.i18n.json index e0f009e6f..9a690d6dc 100644 --- a/Extension/i18n/trk/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/trk/src/LanguageServer/configurations.i18n.json @@ -5,6 +5,7 @@ // Do not edit this file. It is machine generated. { "incompatible.intellisense.mode": "{0} IntelliSense modu, derleyici yolu ile uyumsuz.", + "resolve.configuration.processed": "c_cpp_properties.json dosyası {0} saniyede işlendi", "failed.to.create.config.folder": "\"{0}\" oluşturulamadı", "invalid.configuration.file": "Yapılandırma dosyası geçersiz. Dizide mevcut en az bir yapılandırma olmalıdır.", "unknown.properties.version": "c_cpp_properties.json dosyasında bilinmeyen sürüm numarası bulundu. Bazı özellikler beklendiği gibi çalışmayabilir.", @@ -13,9 +14,13 @@ "path.with.spaces": "Boşluk içeren derleyici yolu bulunamadı. Eğer bunun, derleyici bağımsız değişkenlerini içermesi amaçlandıysa, derleyici yolunu çift tırnak ({0}) ile çevreleyin.", "cannot.find": "{0} bulunamıyor", "path.is.not.a.file": "Yol bir dosya değil: {0}", + "resolve.includePath.took.too.long": "Dahil etme yolu doğrulama {0} saniye sürdü", + "resolve.includePath.failed": "Dahil etme yolunu çözemedi. Hata: {0}", "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.", + "resolve.path.took.too.long": "Yolun değerlendirilmesi {0} saniye sürdü", + "resolve.path.failed": "Yol {0} çözülemedi. Hata: {1}", "multiple.paths.not.allowed": "Birden fazla yola izin verilmez.", "multiple.paths.should.be.separate.entries": "Birden çok yol bir dizideki ayrı girişler olmalıdır.", "paths.are.not.directories": "Yollar dizin değil: {0}" diff --git a/Extension/i18n/trk/ui/settings.html.i18n.json b/Extension/i18n/trk/ui/settings.html.i18n.json index c340cd2b2..ef9983598 100644 --- a/Extension/i18n/trk/ui/settings.html.i18n.json +++ b/Extension/i18n/trk/ui/settings.html.i18n.json @@ -44,7 +44,7 @@ "cpp.standard.description": "IntelliSense için kullanılacak C++ dil standardı sürümü. Not: GNU standartları yalnızca GNU tanımlarını almak için ayarlanan derleyiciyi sorgulamak amacıyla kullanılır ve IntelliSense, eşdeğer C++ standart sürümüne öykünür.", "advanced.settings": "Gelişmiş Ayarlar", "configuration.provider": "Yapılandırma sağlayıcısı", - "configuration.provider.description": "Kaynak dosyalar için IntelliSense yapılandırma bilgilerini sağlayabilecek VS Code uzantısının kimliği. Örneğin, CMake Araçları uzantısındaki yapılandırma bilgilerini sağlamak için VS Code {0} uzantı kimliğini kullanın.", + "configuration.provider.description": "Kaynak dosyalar için IntelliSense yapılandırma bilgilerini sağlayabilecek VS Code uzantısının kimliği. Örneğin, Cmake Tools uzantısındaki yapılandırma bilgilerini sağlamak için VS Code {0} uzantı kimliğini kullanın.", "windows.sdk.version": "Windows SDK sürümü", "windows.sdk.version.description": "Windows üzerinde kullanılacak Windows SDK ekleme yolu sürümü, örneğin {0}.", "mac.framework.path": "Mac çerçevesi yolu", diff --git a/Extension/package.json b/Extension/package.json index 5c6f3d876..3ca862188 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.26.5-main", + "version": "1.27.7-main", "publisher": "ms-vscode", "icon": "LanguageCCPP_color_128x.png", "readme": "README.md", @@ -3379,6 +3379,17 @@ "default": "default", "markdownDescription": "%c_cpp.configuration.copilotHover.markdownDescription%", "scope": "window" + }, + "C_Cpp.windowsErrorReportingMode": { + "type": "string", + "enum": [ + "default", + "enabled", + "disabled" + ], + "default": "default", + "markdownDescription": "%c_cpp.configuration.windowsErrorReportingMode.markdownDescription%", + "scope": "window" } } } @@ -4055,11 +4066,9 @@ "default": {} }, "quoteArgs": { - "exceptions": { - "type": "boolean", - "description": "%c_cpp.debuggers.pipeTransport.quoteArgs.description%", - "default": true - } + "type": "boolean", + "description": "%c_cpp.debuggers.pipeTransport.quoteArgs.description%", + "default": true } } }, @@ -4841,11 +4850,9 @@ "default": {} }, "quoteArgs": { - "exceptions": { - "type": "boolean", - "description": "%c_cpp.debuggers.pipeTransport.quoteArgs.description%", - "default": true - } + "type": "boolean", + "description": "%c_cpp.debuggers.pipeTransport.quoteArgs.description%", + "default": true } } }, @@ -6560,7 +6567,7 @@ "@types/glob": "^7.2.0", "@types/mocha": "^10.0.6", "@types/node": "^20.14.2", - "@types/node-fetch": "^2.6.11", + "@types/node-fetch": "^2.6.13", "@types/plist": "^3.0.5", "@types/proxyquire": "^1.3.31", "@types/semver": "^7.5.8", @@ -6618,7 +6625,7 @@ "posix-getopt": "^1.2.1", "shell-quote": "^1.8.1", "ssh-config": "^4.4.4", - "tmp": "^0.2.3", + "tmp": "^0.2.4", "vscode-cpptools": "^7.1.1", "vscode-languageclient": "^8.1.0", "vscode-nls": "^5.2.0", diff --git a/Extension/package.nls.json b/Extension/package.nls.json index 2b729a732..c6bc95490 100644 --- a/Extension/package.nls.json +++ b/Extension/package.nls.json @@ -790,6 +790,12 @@ "{Locked=\"`disabled`\"} {Locked=\"Copilot\"}" ] }, + "c_cpp.configuration.windowsErrorReportingMode.markdownDescription": { + "message": "If `disabled`, Windows Error Reporting will be disabled. If `default`, Windows Error Reporting will be enabled, but it becomes disabled after the first crash in the current session. Changing the setting doesn't affect currently running IntelliSense processes.", + "comment": [ + "{Locked=\"`disabled`\"} {Locked=\"`default`\"} {Locked=\"`IntelliSense`\"}" + ] + }, "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": { "message": "If `true`, 'Rename Symbol' will require a valid C/C++ identifier.", "comment": [ @@ -895,7 +901,7 @@ "{Locked=\"`true`\"} {Locked=\"`processId`\"}" ] }, - "c_cpp.debuggers.debugServerPath.description": "Optional full path to the debug server to launch. Defaults to null. It is used in conjunction with either \"miDebugServerAddress\" or your own server with a \"customSetupCommand\" that runs \"-target-select remote \".", + "c_cpp.debuggers.debugServerPath.description": "Optional full path to the debug server to launch. Defaults to null. It is used in conjunction with either \"miDebuggerServerAddress\" or your own server with a \"customSetupCommand\" that runs \"-target-select remote \".", "c_cpp.debuggers.debugServerArgs.description": "Optional debug server args. Defaults to null.", "c_cpp.debuggers.serverStarted.description": "Optional server-started pattern to look for in the debug server output. Defaults to null.", "c_cpp.debuggers.filterStdout.description": "Search stdout stream for server-started pattern and log stdout to debug output. Defaults to true.", diff --git a/Extension/src/Debugger/attachToProcess.ts b/Extension/src/Debugger/attachToProcess.ts index 4ff3ce0c2..169c99218 100644 --- a/Extension/src/Debugger/attachToProcess.ts +++ b/Extension/src/Debugger/attachToProcess.ts @@ -81,7 +81,10 @@ export class RemoteAttachPicker { const pipeCmd: string = `"${pipeProgram}" ${argList}`; - processes = await this.getRemoteOSAndProcesses(pipeCmd); + // If unspecified quoteArgs defaults to true. + const quoteArgs: boolean = pipeTransport.quoteArgs ?? true; + + processes = await this.getRemoteOSAndProcesses(pipeCmd, quoteArgs); } else if (!pipeTransport && useExtendedRemote) { if (!miDebuggerPath || !miDebuggerServerAddress) { throw new Error(localize("debugger.path.and.server.address.required", "{0} in debug configuration requires {1} and {2}", "useExtendedRemote", "miDebuggerPath", "miDebuggerServerAddress")); @@ -106,7 +109,7 @@ export class RemoteAttachPicker { } // Creates a string to run on the host machine which will execute a shell script on the remote machine to retrieve OS and processes - private getRemoteProcessCommand(): string { + private getRemoteProcessCommand(quoteArgs: boolean): string { let innerQuote: string = `'`; let outerQuote: string = `"`; let parameterBegin: string = `$(`; @@ -127,6 +130,12 @@ export class RemoteAttachPicker { innerQuote = `"`; outerQuote = `'`; } + + // If the pipeTransport settings indicate "quoteArgs": "false", we need to skip the outer quotes. + if (!quoteArgs) { + outerQuote = ``; + } + // Also use a full path on Linux, so that we can use transports that need a full path such as 'machinectl' to connect to nspawn containers. if (os.platform() === "linux") { shPrefix = `/bin/`; @@ -138,9 +147,9 @@ export class RemoteAttachPicker { `then ${PsProcessParser.psDarwinCommand}; fi${innerQuote}${outerQuote}`; } - private async getRemoteOSAndProcesses(pipeCmd: string): Promise { + private async getRemoteOSAndProcesses(pipeCmd: string, quoteArgs: boolean): Promise { // Do not add any quoting in execCommand. - const execCommand: string = `${pipeCmd} ${this.getRemoteProcessCommand()}`; + const execCommand: string = `${pipeCmd} ${this.getRemoteProcessCommand(quoteArgs)}`; const output: string = await util.execChildProcess(execCommand, undefined, this._channel); // OS will be on first line diff --git a/Extension/src/LanguageServer/Providers/CopilotHoverProvider.ts b/Extension/src/LanguageServer/Providers/CopilotHoverProvider.ts index 2efb36106..b04b8e302 100644 --- a/Extension/src/LanguageServer/Providers/CopilotHoverProvider.ts +++ b/Extension/src/LanguageServer/Providers/CopilotHoverProvider.ts @@ -5,6 +5,7 @@ import * as vscode from 'vscode'; import { Position, ResponseError } from 'vscode-languageclient'; import * as nls from 'vscode-nls'; +import { getVSCodeLanguageModel } from '../../common'; import { modelSelector } from '../../constants'; import * as telemetry from '../../telemetry'; import { DefaultClient, GetCopilotHoverInfoParams, GetCopilotHoverInfoRequest, GetCopilotHoverInfoResult } from '../client'; @@ -42,7 +43,7 @@ export class CopilotHoverProvider implements vscode.HoverProvider { } // Ensure the user has access to Copilot. - const vscodelm = (vscode as any).lm; + const vscodelm = getVSCodeLanguageModel(); if (vscodelm) { const [model] = await vscodelm.selectChatModels(modelSelector); if (!model) { diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index 314d7c4b9..40611c728 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -90,6 +90,7 @@ export function hasTrustedCompilerPaths(): boolean { // Data shared by all clients. let languageClient: LanguageClient; let firstClientStarted: Promise<{ wasShutdown: boolean }>; +let languageClientHasCrashed: boolean = false; let languageClientCrashedNeedsRestart: boolean = false; const languageClientCrashTimes: number[] = []; let compilerDefaults: configs.CompilerDefaults | undefined; @@ -517,10 +518,15 @@ interface TagParseStatus { isPaused: boolean; } +interface VisibleEditorInfo { + visibleRanges: Range[]; + originalEncoding: string; +} + interface DidChangeVisibleTextEditorsParams { activeUri?: string; activeSelection?: Range; - visibleRanges?: { [uri: string]: Range[] }; + visibleEditorInfo?: { [uri: string]: VisibleEditorInfo }; } interface DidChangeTextEditorVisibleRangesParams { @@ -590,6 +596,11 @@ export interface CopilotCompletionContextParams { doAggregateSnippets: boolean; } +export interface SetOpenFileOriginalEncodingParams { + uri: string; + originalEncoding: string; +} + // Requests const PreInitializationRequest: RequestType = new RequestType('cpptools/preinitialize'); const InitializationRequest: RequestType = new RequestType('cpptools/initialize'); @@ -638,6 +649,7 @@ const FinishedRequestCustomConfig: NotificationType = new NotificationType('cpptools/didChangeSettings'); const DidChangeVisibleTextEditorsNotification: NotificationType = new NotificationType('cpptools/didChangeVisibleTextEditors'); const DidChangeTextEditorVisibleRangesNotification: NotificationType = new NotificationType('cpptools/didChangeTextEditorVisibleRanges'); +const SetOpenFileOriginalEncodingNotification: NotificationType = new NotificationType('cpptools/setOpenFileOriginalEncoding'); const CodeAnalysisNotification: NotificationType = new NotificationType('cpptools/runCodeAnalysis'); const PauseCodeAnalysisNotification: NotificationType = new NotificationType('cpptools/pauseCodeAnalysis'); @@ -1378,7 +1390,7 @@ export class DefaultClient implements Client { this.semanticTokensProviderDisposable = vscode.languages.registerDocumentSemanticTokensProvider(util.documentSelector, this.semanticTokensProvider, semanticTokensLegend); } - this.copilotCompletionProvider = await CopilotCompletionContextProvider.Create(); + this.copilotCompletionProvider = CopilotCompletionContextProvider.Create(); this.disposables.push(this.copilotCompletionProvider); // Listen for messages from the language server. @@ -1589,6 +1601,7 @@ export class DefaultClient implements Client { codeAnalysisMaxMemory: workspaceSettings.codeAnalysisMaxMemory, codeAnalysisUpdateDelay: workspaceSettings.codeAnalysisUpdateDelay, copilotHover: workspaceSettings.copilotHover, + windowsErrorReportingMode: workspaceSettings.windowsErrorReportingMode, workspaceFolderSettings: workspaceFolderSettingsParams }; } @@ -1677,6 +1690,7 @@ export class DefaultClient implements Client { errorHandler: { error: (_error, _message, _count) => ({ action: ErrorAction.Continue }), closed: () => { + languageClientHasCrashed = true; languageClientCrashTimes.push(Date.now()); languageClientCrashedNeedsRestart = true; let restart: boolean = true; @@ -1734,13 +1748,19 @@ export class DefaultClient implements Client { languageClient = new LanguageClient(`cpptools`, serverOptions, clientOptions); languageClient.onNotification(DebugProtocolNotification, logDebugProtocol); languageClient.onNotification(DebugLogNotification, logLocalized); - languageClient.onNotification(LogTelemetryNotification, (e) => this.logTelemetry(e)); + languageClient.onNotification(LogTelemetryNotification, (e) => void this.logTelemetry(e)); languageClient.onNotification(ShowMessageWindowNotification, showMessageWindow); languageClient.registerProposedFeatures(); await languageClient.start(); if (usesCrashHandler()) { watchForCrashes(await languageClient.sendRequest(PreInitializationRequest, null)); + } else if (os.platform() === "win32") { + const settings: CppSettings = new CppSettings(); + if ((settings.windowsErrorReportingMode === "default" && !languageClientHasCrashed) || + settings.windowsErrorReportingMode === "enabled") { + await languageClient.sendRequest(PreInitializationRequest, null); + } } // Move initialization to a separate message, so we can see log output from it. @@ -1841,32 +1861,35 @@ export class DefaultClient implements Client { return changedSettings; } - private prepareVisibleRanges(editors: readonly vscode.TextEditor[]): { [uri: string]: Range[] } { - const visibleRanges: { [uri: string]: Range[] } = {}; + private prepareVisibleEditorInfo(editors: readonly vscode.TextEditor[]): { [uri: string]: VisibleEditorInfo } { + const visibileEditorInfo: { [uri: string]: VisibleEditorInfo } = {}; editors.forEach(editor => { // Use a map, to account for multiple editors for the same file. // First, we just concat all ranges for the same file. const uri: string = editor.document.uri.toString(); - if (!visibleRanges[uri]) { - visibleRanges[uri] = []; + if (!visibileEditorInfo[uri]) { + visibileEditorInfo[uri] = { + visibleRanges: [], + originalEncoding: editor.document.encoding + }; } - visibleRanges[uri] = visibleRanges[uri].concat(editor.visibleRanges.map(makeLspRange)); + visibileEditorInfo[uri].visibleRanges = visibileEditorInfo[uri].visibleRanges.concat(editor.visibleRanges.map(makeLspRange)); }); // We may need to merge visible ranges, if there are multiple editors for the same file, // and some of the ranges overlap. - Object.keys(visibleRanges).forEach(uri => { - visibleRanges[uri] = util.mergeOverlappingRanges(visibleRanges[uri]); + Object.keys(visibileEditorInfo).forEach(uri => { + visibileEditorInfo[uri].visibleRanges = util.mergeOverlappingRanges(visibileEditorInfo[uri].visibleRanges); }); - return visibleRanges; + return visibileEditorInfo; } // Handles changes to visible files/ranges, changes to current selection/position, // and changes to the active text editor. Should only be called on the primary client. public async onDidChangeVisibleTextEditors(editors: readonly vscode.TextEditor[]): Promise { const params: DidChangeVisibleTextEditorsParams = { - visibleRanges: this.prepareVisibleRanges(editors) + visibleEditorInfo: this.prepareVisibleEditorInfo(editors) }; if (vscode.window.activeTextEditor) { if (util.isCpp(vscode.window.activeTextEditor.document)) { @@ -2270,9 +2293,12 @@ export class DefaultClient implements Client { message += ` (${err})`; } - if (await vscode.window.showInformationMessage(message, dismiss, disable) === disable) { - settings.toggleSetting("configurationWarnings", "enabled", "disabled"); - } + // Do not await here, as that would prevent the function from returning until the user dismisses the message. + void vscode.window.showInformationMessage(message, dismiss, disable).then(result => { + if (result === disable) { + settings.toggleSetting("configurationWarnings", "enabled", "disabled"); + } + }); } } return result; @@ -2357,10 +2383,17 @@ export class DefaultClient implements Client { text: document.getText() } }; - await this.ready; await this.languageClient.sendNotification(DidOpenNotification, params); } + public async sendOpenFileOriginalEncoding(document: vscode.TextDocument): Promise { + const params: SetOpenFileOriginalEncodingParams = { + uri: document.uri.toString(), + originalEncoding: document.encoding + }; + await this.languageClient.sendNotification(SetOpenFileOriginalEncodingNotification, params); + } + /** * Copilot completion-related requests (e.g. getIncludes and getProjectContext) will have their cancellation tokens cancelled * if the current request times out (showing the user completion results without context info), @@ -2656,7 +2689,7 @@ export class DefaultClient implements Client { }); // TODO: Handle new associations without a reload. - this.associations_for_did_change = new Set(["cu", "cuh", "c", "i", "cpp", "cc", "cxx", "c++", "cp", "hpp", "hh", "hxx", "h++", "hp", "h", "ii", "ino", "inl", "ipp", "tcc", "idl"]); + this.associations_for_did_change = new Set(["cu", "cuh", "c", "i", "cpp", "cc", "cxx", "c++", "cp", "hpp", "hh", "hxx", "h++", "hp", "h", "ii", "ino", "inl", "ipp", "tcc", "txx", "tpp", "idl"]); const assocs: any = new OtherSettings().filesAssociations; for (const assoc in assocs) { const dotIndex: number = assoc.lastIndexOf('.'); @@ -2758,10 +2791,38 @@ export class DefaultClient implements Client { } } - private logTelemetry(notificationBody: TelemetryPayload): void { + private excessiveFilesWarningShown: boolean = false; + private async logTelemetry(notificationBody: TelemetryPayload): Promise { if (notificationBody.event === "includeSquiggles" && this.configurationProvider && notificationBody.properties) { notificationBody.properties["providerId"] = this.configurationProvider; } + + const showExcessiveFilesWarning = new PersistentWorkspaceState('CPP.showExcessiveFilesWarning', true); + if (!this.excessiveFilesWarningShown && showExcessiveFilesWarning.Value && notificationBody.event === 'ParsingStats') { + const filesDiscovered = notificationBody.metrics?.filesDiscovered ?? 0; + const parsableFiles = notificationBody.metrics?.parsableFiles ?? 0; + if (filesDiscovered > 250000 || parsableFiles > 100000) { + // According to telemetry, less than 3% of workspaces have this many files so it seems like a reasonable threshold. + + const message = localize( + "parsing.stats.large.project", + 'Enumerated {0} files with {1} C/C++ source files detected. You may want to consider excluding some files for better performance.', + filesDiscovered, + parsableFiles); + const learnMore = localize('learn.more', 'Learn More'); + const dontShowAgain = localize('dont.show.again', 'Don\'t Show Again'); + + // We only want to show this once per session. + this.excessiveFilesWarningShown = true; + const response = await vscode.window.showInformationMessage(message, learnMore, dontShowAgain); + + if (response === dontShowAgain) { + showExcessiveFilesWarning.Value = false; + } else if (response === learnMore) { + void vscode.commands.executeCommand('vscode.open', vscode.Uri.parse('https://go.microsoft.com/fwlink/?linkid=2333292')); + } + } + } telemetry.logLanguageServerEvent(notificationBody.event, notificationBody.properties, notificationBody.metrics); } diff --git a/Extension/src/LanguageServer/clientCollection.ts b/Extension/src/LanguageServer/clientCollection.ts index 6788eb65d..a6b21f431 100644 --- a/Extension/src/LanguageServer/clientCollection.ts +++ b/Extension/src/LanguageServer/clientCollection.ts @@ -121,6 +121,7 @@ export class ClientCollection { const client: cpptools.Client = pair[1]; const newClient: cpptools.Client = this.createClient(client.RootFolder, true); + await newClient.ready; for (const document of client.TrackedDocuments.values()) { this.transferOwnership(document, client); await newClient.sendDidOpen(document); diff --git a/Extension/src/LanguageServer/configurations.ts b/Extension/src/LanguageServer/configurations.ts index 8a08b9987..ea135109d 100644 --- a/Extension/src/LanguageServer/configurations.ts +++ b/Extension/src/LanguageServer/configurations.ts @@ -24,6 +24,7 @@ import { PersistentFolderState } from './persistentState'; import { CppSettings, OtherSettings } from './settings'; import { SettingsPanel } from './settingsPanel'; import { ConfigurationType, getUI } from './ui'; +import { Deferral } from './utils'; import escapeStringRegExp = require('escape-string-regexp'); nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })(); @@ -152,7 +153,6 @@ export class CppProperties { private defaultCStandard: string | null = null; private defaultCppStandard: string | null = null; private defaultWindowsSdkVersion: string | null = null; - private isCppPropertiesJsonVisible: boolean = false; private vcpkgIncludes: string[] = []; private vcpkgPathReady: boolean = false; private nodeAddonIncludes: string[] = []; @@ -250,7 +250,6 @@ export class CppProperties { } public setupConfigurations(): void { - // defaultPaths is only used when there isn't a c_cpp_properties.json, but we don't send the configuration changed event // to the language server until the default include paths and frameworks have been sent. @@ -280,21 +279,21 @@ export class CppProperties { }); vscode.workspace.onDidChangeTextDocument((e) => { - if (e.document.uri.fsPath === settingsPath && this.isCppPropertiesJsonVisible) { - void this.handleSquiggles().catch(logAndReturn.undefined); + if (e.document.uri.fsPath === settingsPath) { + this.handleSquiggles(e.document); } }); - vscode.window.onDidChangeVisibleTextEditors((editors) => { - const wasVisible: boolean = this.isCppPropertiesJsonVisible; - editors.forEach(editor => { - if (editor.document.uri.fsPath === settingsPath) { - this.isCppPropertiesJsonVisible = true; - if (!wasVisible) { - void this.handleSquiggles().catch(logAndReturn.undefined); - } - } - }); + vscode.workspace.onDidOpenTextDocument(document => { + if (document.uri.fsPath === settingsPath) { + this.handleSquiggles(); + } + }); + + vscode.workspace.onDidCloseTextDocument(document => { + if (document.uri.fsPath === settingsPath) { + this.diagnosticCollection.clear(); + } }); vscode.workspace.onDidSaveTextDocument((doc: vscode.TextDocument) => { @@ -331,6 +330,7 @@ export class CppProperties { } }); } + public set CompilerDefaults(compilerDefaults: CompilerDefaults) { this.defaultCompilerPath = compilerDefaults.trustedCompilerFound ? compilerDefaults.compilerPath : null; this.knownCompilers = compilerDefaults.knownCompilers; @@ -353,7 +353,7 @@ export class CppProperties { private onSelectionChanged(): void { this.selectionChanged.fire(this.CurrentConfigurationIndex); - void this.handleSquiggles().catch(logAndReturn.undefined); + this.handleSquiggles(); } private onCompileCommandsChanged(path: string): void { @@ -493,9 +493,10 @@ export class CppProperties { }); } } - } catch (error) { /*ignore*/ } finally { + } catch (error) { + /*ignore*/ + } finally { this.vcpkgPathReady = true; - this.handleConfigurationChange(); } } @@ -795,7 +796,7 @@ export class CppProperties { return result; } - private resolveAndSplit(paths: string[] | undefined, defaultValue: string[] | undefined, env: Environment, assumeRelative: boolean = true, glob: boolean = false): string[] { + private async resolveAndSplit(paths: string[] | undefined, defaultValue: string[] | undefined, env: Environment, assumeRelative: boolean = true, glob: boolean = false): Promise { const resolvedVariables: string[] = []; if (paths === undefined) { return resolvedVariables; @@ -846,7 +847,7 @@ export class CppProperties { if (isGlobPattern) { // fastGlob silently strips non-found paths. Limit that behavior to dynamic paths only. const matches: string[] = fastGlob.isDynamicPattern(normalized) ? - fastGlob.sync(normalized, { onlyDirectories: true, cwd, suppressErrors: true, deep: 15 }) : [res]; + await fastGlob.async(normalized, { onlyDirectories: true, cwd, suppressErrors: true, deep: 15 }) : [res]; resolvedGlob.push(...matches.map(s => s + suffix)); if (resolvedGlob.length === 0) { resolvedGlob.push(normalized); @@ -881,14 +882,14 @@ export class CppProperties { return property; } - private updateConfigurationPathsArray(paths: string[] | undefined, defaultValue: string[] | undefined, env: Environment, assumeRelative: boolean = true): string[] | undefined { + private updateConfigurationPathsArray(paths: string[] | undefined, defaultValue: string[] | undefined, env: Environment, assumeRelative: boolean = true): Promise { if (paths) { return this.resolveAndSplit(paths, defaultValue, env, assumeRelative, true); } - if (!paths && defaultValue) { + if (defaultValue) { return this.resolveAndSplit(defaultValue, [], env, assumeRelative, true); } - return paths; + return Promise.resolve(undefined); } private updateConfigurationBoolean(property: boolean | string | undefined | null, defaultValue: boolean | undefined | null): boolean | undefined { @@ -933,7 +934,7 @@ export class CppProperties { return this.configProviderAutoSelected; } - private updateServerOnFolderSettingsChange(): void { + private async updateServerOnFolderSettingsChange(): Promise { this.configProviderAutoSelected = false; if (!this.configurationJson) { return; @@ -946,7 +947,7 @@ export class CppProperties { configuration.compilerPathInCppPropertiesJson = configuration.compilerPath; configuration.compileCommandsInCppPropertiesJson = configuration.compileCommands; configuration.configurationProviderInCppPropertiesJson = configuration.configurationProvider; - configuration.includePath = this.updateConfigurationPathsArray(configuration.includePath, settings.defaultIncludePath, env); + configuration.includePath = await this.updateConfigurationPathsArray(configuration.includePath, settings.defaultIncludePath, env); // in case includePath is reset below const origIncludePath: string[] | undefined = configuration.includePath; if (userSettings.addNodeAddonIncludePaths) { @@ -964,7 +965,7 @@ export class CppProperties { configuration.macFrameworkPath = this.updateConfigurationStringArray(configuration.macFrameworkPath, settings.defaultMacFrameworkPath, env); configuration.windowsSdkVersion = this.updateConfigurationString(configuration.windowsSdkVersion, settings.defaultWindowsSdkVersion, env); - configuration.forcedInclude = this.updateConfigurationPathsArray(configuration.forcedInclude, settings.defaultForcedInclude, env, false); + configuration.forcedInclude = await this.updateConfigurationPathsArray(configuration.forcedInclude, settings.defaultForcedInclude, env, false); configuration.compileCommands = this.updateConfigurationStringArray(configuration.compileCommands, settings.defaultCompileCommands, env); configuration.compilerArgs = this.updateConfigurationStringArray(configuration.compilerArgs, settings.defaultCompilerArgs, env); configuration.cStandard = this.updateConfigurationString(configuration.cStandard, settings.defaultCStandard, env); @@ -1042,7 +1043,7 @@ export class CppProperties { // Otherwise, if the browse path is not set, let the native process populate it // with include paths, including any parsed from compilerArgs. } else { - configuration.browse.path = this.updateConfigurationPathsArray(configuration.browse.path, settings.defaultBrowsePath, env); + configuration.browse.path = await this.updateConfigurationPathsArray(configuration.browse.path, settings.defaultBrowsePath, env); } configuration.browse.limitSymbolsToIncludedHeaders = this.updateConfigurationBoolean(configuration.browse.limitSymbolsToIncludedHeaders, settings.defaultLimitSymbolsToIncludedHeaders); @@ -1261,7 +1262,7 @@ export class CppProperties { this.settingsPanel.selectedConfigIndex = this.CurrentConfigurationIndex; this.settingsPanel.createOrShow(configNames, this.configurationJson.configurations[this.settingsPanel.selectedConfigIndex], - this.getErrorsForConfigUI(this.settingsPanel.selectedConfigIndex), + await this.getErrorsForConfigUI(this.settingsPanel.selectedConfigIndex), viewColumn); } } @@ -1292,7 +1293,7 @@ export class CppProperties { } this.settingsPanel.updateConfigUI(configNames, this.configurationJson.configurations[this.settingsPanel.selectedConfigIndex], - this.getErrorsForConfigUI(this.settingsPanel.selectedConfigIndex)); + await this.getErrorsForConfigUI(this.settingsPanel.selectedConfigIndex)); } else { // Parse failed, open json file void vscode.workspace.openTextDocument(this.propertiesFile).then(undefined, logAndReturn.undefined); @@ -1321,13 +1322,13 @@ export class CppProperties { return trimmedPaths; } - private saveConfigurationUI(): void { + private async saveConfigurationUI(): Promise { this.parsePropertiesFile(); // Clear out any modifications we may have made internally. if (this.settingsPanel && this.configurationJson) { const config: Configuration = this.settingsPanel.getLastValuesFromConfigUI(); this.configurationJson.configurations[this.settingsPanel.selectedConfigIndex] = config; this.configurationJson.configurations[this.settingsPanel.selectedConfigIndex].includePath = this.trimPathWhitespace(this.configurationJson.configurations[this.settingsPanel.selectedConfigIndex].includePath); - this.settingsPanel.updateErrors(this.getErrorsForConfigUI(this.settingsPanel.selectedConfigIndex)); + this.settingsPanel.updateErrors(await this.getErrorsForConfigUI(this.settingsPanel.selectedConfigIndex)); this.writeToJson(); } // Any time parsePropertiesFile is called, configurationJson gets @@ -1335,12 +1336,12 @@ export class CppProperties { this.handleConfigurationChange(); } - private onConfigSelectionChanged(): void { + private async onConfigSelectionChanged(): Promise { const configNames: string[] | undefined = this.ConfigurationNames; if (configNames && this.settingsPanel && this.configurationJson) { this.settingsPanel.updateConfigUI(configNames, this.configurationJson.configurations[this.settingsPanel.selectedConfigIndex], - this.getErrorsForConfigUI(this.settingsPanel.selectedConfigIndex)); + await this.getErrorsForConfigUI(this.settingsPanel.selectedConfigIndex)); } } @@ -1393,7 +1394,9 @@ export class CppProperties { } void this.applyDefaultIncludePathsAndFrameworks().catch(logAndReturn.undefined); - this.updateServerOnFolderSettingsChange(); + void this.timeOperation(() => this.updateServerOnFolderSettingsChange()).then(result => { + getOutputChannelLogger().appendLineAtLevel(5, localize('resolve.configuration.processed', "Processed c_cpp_properties.json in {0}s", result.duration)); + }).catch(logAndReturn.undefined); } private async ensurePropertiesFile(): Promise { @@ -1454,6 +1457,7 @@ export class CppProperties { return false; } let success: boolean = true; + const firstParse = this.configurationJson === undefined; try { const readResults: string = fs.readFileSync(this.propertiesFile.fsPath, 'utf8'); if (readResults === "") { @@ -1584,6 +1588,14 @@ export class CppProperties { e.recursiveIncludesOrderIsExplicit = e.recursiveIncludes?.order !== undefined; }); + if (firstParse) { + // Check documents that are already open since no event will fire for them. + const fsPath = this.propertiesFile.fsPath; + const document = vscode.workspace.textDocuments.find(doc => doc.uri.fsPath === fsPath); + if (document) { + this.handleSquiggles(document); + } + } } catch (errJS) { const err: Error = errJS as Error; const failedToParse: string = localize("failed.to.parse.properties", 'Failed to parse "{0}"', this.propertiesFile.fsPath); @@ -1712,7 +1724,21 @@ export class CppProperties { return compilerPathAndArgs; } - private getErrorsForConfigUI(configIndex: number): ConfigurationErrors { + /** + * Time an operation and return the result plus the length of the operation. + * + * @param operation The async operation to perform. + * @returns The result of the operation and the time it took to complete in seconds. + */ + private async timeOperation(operation: () => Promise): Promise<{ result: T | undefined; duration: number }> { + const start = process.hrtime(); + const result = await operation(); + const diff = process.hrtime(start); + const duration = diff[0] + diff[1] / 1e9; // diff[0] is in seconds, diff[1] is in nanoseconds + return { result, duration }; + } + + private async getErrorsForConfigUI(configIndex: number): Promise { const errors: ConfigurationErrors = {}; if (!this.configurationJson) { return errors; @@ -1731,15 +1757,20 @@ export class CppProperties { errors.compilerPath = compilerPathAndArgs.error; // Validate paths (directories) - errors.includePath = this.validatePath(config.includePath, { globPaths: true }); - errors.macFrameworkPath = this.validatePath(config.macFrameworkPath); - errors.browsePath = this.validatePath(config.browse ? config.browse.path : undefined); + try { + const { result, duration } = await this.timeOperation(() => this.validatePath(config.includePath, { globPaths: true })); + errors.includePath = result ?? duration >= 10 ? localize('resolve.includePath.took.too.long', "The include path validation took {0}s to evaluate", duration) : undefined; + } catch (e) { + errors.includePath = localize('resolve.includePath.failed', "Failed to resolve include path. Error: {0}", (e as Error).message); + } + errors.macFrameworkPath = await this.validatePath(config.macFrameworkPath); + errors.browsePath = await this.validatePath(config.browse ? config.browse.path : undefined); // Validate files - errors.forcedInclude = this.validatePath(config.forcedInclude, { isDirectory: false, assumeRelative: false }); - errors.compileCommands = this.validatePath(config.compileCommands, { isDirectory: false }); - errors.dotConfig = this.validatePath(config.dotConfig, { isDirectory: false }); - errors.databaseFilename = this.validatePath(config.browse ? config.browse.databaseFilename : undefined, { isDirectory: false }); + errors.forcedInclude = await this.validatePath(config.forcedInclude, { isDirectory: false, assumeRelative: false }); + errors.compileCommands = await this.validatePath(config.compileCommands, { isDirectory: false }); + errors.dotConfig = await this.validatePath(config.dotConfig, { isDirectory: false }); + errors.databaseFilename = await this.validatePath(config.browse ? config.browse.databaseFilename : undefined, { isDirectory: false }); // Validate intelliSenseMode if (isWindows) { @@ -1752,7 +1783,7 @@ export class CppProperties { return errors; } - private validatePath(input: string | string[] | undefined, { isDirectory = true, assumeRelative = true, globPaths = false } = {}): string | undefined { + private async validatePath(input: string | string[] | undefined, { isDirectory = true, assumeRelative = true, globPaths = false } = {}): Promise { if (!input) { return undefined; } @@ -1768,7 +1799,7 @@ export class CppProperties { } // Resolve and split any environment variables - paths = this.resolveAndSplit(paths, undefined, this.ExtendedEnvironment, assumeRelative, globPaths); + paths = await this.resolveAndSplit(paths, undefined, this.ExtendedEnvironment, assumeRelative, globPaths); for (const p of paths) { let pathExists: boolean = true; @@ -1834,7 +1865,24 @@ export class CppProperties { return errorMsg; } - private async handleSquiggles(): Promise { + private lastConfigurationVersion: number = 0; + private handleSquigglesDeferral: Deferral | undefined; + + private handleSquiggles(doc?: vscode.TextDocument): void { + // When we open the doc or the active config changes, we don't pass the doc in since we always want to process squiggles. + if (doc?.version !== this.lastConfigurationVersion) { + this.lastConfigurationVersion = doc?.version ?? 0; + + // Debounce the squiggles requests. + this.handleSquigglesDeferral?.cancel(); + this.handleSquigglesDeferral = new Deferral(() => void this.handleSquigglesImpl().catch(logAndReturn.undefined), 1000); + } + } + + /** + * Not to be called directly. Use the `handleSquiggles` method instead which will debounce the calls. + */ + private async handleSquigglesImpl(): Promise { if (!this.propertiesFile) { return; } @@ -1949,9 +1997,9 @@ export class CppProperties { curText = curText.substring(0, nextNameStart2); } if (this.prevSquiggleMetrics.get(currentConfiguration.name) === undefined) { - this.prevSquiggleMetrics.set(currentConfiguration.name, { PathNonExistent: 0, PathNotAFile: 0, PathNotADirectory: 0, CompilerPathMissingQuotes: 0, CompilerModeMismatch: 0, MultiplePathsNotAllowed: 0, MultiplePathsShouldBeSeparated: 0 }); + this.prevSquiggleMetrics.set(currentConfiguration.name, { PathNonExistent: 0, PathNotAFile: 0, PathNotADirectory: 0, SlowPathResolution: 0, CompilerPathMissingQuotes: 0, CompilerModeMismatch: 0, MultiplePathsNotAllowed: 0, MultiplePathsShouldBeSeparated: 0 }); } - const newSquiggleMetrics: { [key: string]: number } = { PathNonExistent: 0, PathNotAFile: 0, PathNotADirectory: 0, CompilerPathMissingQuotes: 0, CompilerModeMismatch: 0, MultiplePathsNotAllowed: 0, MultiplePathsShouldBeSeparated: 0 }; + const newSquiggleMetrics: { [key: string]: number } = { PathNonExistent: 0, PathNotAFile: 0, PathNotADirectory: 0, SlowPathResolution: 0, CompilerPathMissingQuotes: 0, CompilerModeMismatch: 0, MultiplePathsNotAllowed: 0, MultiplePathsShouldBeSeparated: 0 }; const isWindows: boolean = os.platform() === 'win32'; // TODO: Add other squiggles. @@ -2085,8 +2133,33 @@ export class CppProperties { // and extend that pattern to the next quote before and next quote after it. const pattern: RegExp = new RegExp(`"[^"]*?(?<="|;)${escapedPath}(?="|;).*?"`, "g"); const configMatches: string[] | null = curText.match(pattern); + let expandedPaths: string[]; - const expandedPaths: string[] = this.resolveAndSplit([curPath], undefined, this.ExtendedEnvironment, true, true); + try { + const { result, duration } = await this.timeOperation(() => this.resolveAndSplit([curPath], undefined, this.ExtendedEnvironment, true, true)); + expandedPaths = result ?? []; + if (duration > 10 && configMatches) { + newSquiggleMetrics.SlowPathResolution++; + const curOffset = curText.indexOf(configMatches[0]); + const endOffset = curOffset + curPath.length; + const diagnostic: vscode.Diagnostic = new vscode.Diagnostic( + new vscode.Range(document.positionAt(curTextStartOffset + curOffset), document.positionAt(curTextStartOffset + endOffset)), + localize('resolve.path.took.too.long', "Path took {0}s to evaluate", duration), + vscode.DiagnosticSeverity.Warning); + diagnostics.push(diagnostic); + } + } catch (e) { + expandedPaths = []; + if (configMatches) { + const curOffset = curText.indexOf(configMatches[0]); + const endOffset = curOffset + curPath.length; + const diagnostic: vscode.Diagnostic = new vscode.Diagnostic( + new vscode.Range(document.positionAt(curTextStartOffset + curOffset), document.positionAt(curTextStartOffset + endOffset)), + localize('resolve.path.failed', "Failed to resolve path {0}. Error: {1}", curPath, (e as Error).message), + vscode.DiagnosticSeverity.Warning); + diagnostics.push(diagnostic); + } + } const incorrectExpandedPaths: string[] = []; if (expandedPaths.length <= 0) { diff --git a/Extension/src/LanguageServer/copilotCompletionContextProvider.ts b/Extension/src/LanguageServer/copilotCompletionContextProvider.ts index a456ab73c..1e6d32658 100644 --- a/Extension/src/LanguageServer/copilotCompletionContextProvider.ts +++ b/Extension/src/LanguageServer/copilotCompletionContextProvider.ts @@ -304,9 +304,9 @@ export class CopilotCompletionContextProvider implements ContextResolver { - const properties: Record = {}; + public registerCopilotContextProvider(): void { const registerCopilotContextProvider = 'registerCopilotContextProvider'; - try { - const copilotApi = await getCopilotClientApi(); - const copilotChatApi = await getCopilotChatApi(); - if (!copilotApi && !copilotChatApi) { throw new CopilotContextProviderException("getCopilotApi() returned null, Copilot is missing or inactive."); } - const contextProvider = { - id: CopilotCompletionContextProvider.providerId, - selector: CopilotCompletionContextProvider.defaultCppDocumentSelector, - resolver: this - }; - type InstallSummary = { hasGetContextProviderAPI: boolean; hasAPI: boolean }; - const installSummary: { client?: InstallSummary; chat?: InstallSummary } = {}; - if (copilotApi) { - installSummary.client = await this.installContextProvider(copilotApi, contextProvider); + const contextProvider = { + id: CopilotCompletionContextProvider.providerId, + selector: CopilotCompletionContextProvider.defaultCppDocumentSelector, + resolver: this + }; + type RegistrationResult = { message: string } | boolean; + const clientPromise: Promise = getCopilotClientApi().then(async (api) => { + if (!api) { + throw new CopilotContextProviderException("getCopilotApi() returned null, Copilot client is missing or inactive."); + } + const disposable = await this.installContextProvider(api, contextProvider); + if (disposable) { + this.contextProviderDisposables = this.contextProviderDisposables ?? []; + this.contextProviderDisposables.push(disposable); + return true; + } else { + throw new CopilotContextProviderException("getContextProviderAPI() is not available in Copilot client."); } - if (copilotChatApi) { - installSummary.chat = await this.installContextProvider(copilotChatApi, contextProvider); + }).catch((e) => { + console.debug("Failed to register the Copilot Context Provider with Copilot client."); + let message = "Failed to register the Copilot Context Provider with Copilot client"; + if (e instanceof CopilotContextProviderException) { + message += `: ${e.message} `; } - if (installSummary.client?.hasAPI || installSummary.chat?.hasAPI) { - properties["cppCodeSnippetsProviderRegistered"] = "true"; + return { message }; + }); + const chatPromise: Promise = getCopilotChatApi().then(async (api) => { + if (!api) { + throw new CopilotContextProviderException("getCopilotChatApi() returned null, Copilot Chat is missing or inactive."); + } + const disposable = await this.installContextProvider(api, contextProvider); + if (disposable) { + this.contextProviderDisposables = this.contextProviderDisposables ?? []; + this.contextProviderDisposables.push(disposable); + return true; } else { - if (installSummary.client?.hasGetContextProviderAPI === false && - installSummary.chat?.hasGetContextProviderAPI === false) { - throw new CopilotContextProviderException("getContextProviderAPI() is not available."); - } else { - throw new CopilotContextProviderException("getContextProviderAPI(v1) returned null."); - } + throw new CopilotContextProviderException("getContextProviderAPI() is not available in Copilot Chat."); } - } catch (e) { - console.debug("Failed to register the Copilot Context Provider."); - properties["error"] = "Failed to register the Copilot Context Provider"; + }).catch((e) => { + console.debug("Failed to register the Copilot Context Provider with Copilot Chat."); + let message = "Failed to register the Copilot Context Provider with Copilot Chat"; if (e instanceof CopilotContextProviderException) { - properties["error"] += `: ${e.message} `; + message += `: ${e.message} `; } - } finally { + return { message }; + }); + // The client usually doesn't block. So test it first. + clientPromise.then((clientResult) => { + const properties: Record = {}; + if (isBoolean(clientResult) && clientResult) { + properties["cppCodeSnippetsProviderRegistered"] = "true"; + telemetry.logCopilotEvent(registerCopilotContextProvider, { ...properties }); + return; + } + return chatPromise.then((chatResult) => { + const properties: Record = {}; + if (isBoolean(chatResult) && chatResult) { + properties["cppCodeSnippetsProviderRegistered"] = "true"; + telemetry.logCopilotEvent(registerCopilotContextProvider, { ...properties }); + return; + } else if (!isBoolean(clientResult) && isString(clientResult.message)) { + properties["error"] = clientResult.message; + } else if (!isBoolean(chatResult) && isString(chatResult.message)) { + properties["error"] = chatResult.message; + } else { + properties["error"] = "Failed to register the Copilot Context Provider for unknown reason."; + } + telemetry.logCopilotEvent(registerCopilotContextProvider, { ...properties }); + }); + }).catch((e) => { + const properties: Record = {}; + properties["error"] = `Failed to register the Copilot Context Provider with exception: ${e}`; telemetry.logCopilotEvent(registerCopilotContextProvider, { ...properties }); - } + }); } - private async installContextProvider(copilotAPI: CopilotContextProviderAPI, contextProvider: ContextProvider): Promise<{ hasGetContextProviderAPI: boolean; hasAPI: boolean }> { + private async installContextProvider(copilotAPI: CopilotContextProviderAPI, contextProvider: ContextProvider): Promise { const hasGetContextProviderAPI = typeof copilotAPI.getContextProviderAPI === 'function'; if (hasGetContextProviderAPI) { const contextAPI = await copilotAPI.getContextProviderAPI("v1"); if (contextAPI) { - this.contextProviderDisposables = this.contextProviderDisposables ?? []; - this.contextProviderDisposables.push(contextAPI.registerContextProvider(contextProvider)); + return contextAPI.registerContextProvider(contextProvider); } - return { hasGetContextProviderAPI, hasAPI: contextAPI !== undefined }; + return undefined; } else { - return { hasGetContextProviderAPI: false, hasAPI: false }; + return undefined; } } } diff --git a/Extension/src/LanguageServer/copilotProviders.ts b/Extension/src/LanguageServer/copilotProviders.ts index c402afec8..31cf21f3e 100644 --- a/Extension/src/LanguageServer/copilotProviders.ts +++ b/Extension/src/LanguageServer/copilotProviders.ts @@ -159,14 +159,7 @@ export async function getCopilotChatApi(): Promise(resolve => { - setTimeout(() => { - resolve(undefined); - }, 3000); - }) - ]); + exports = await copilotExtension.activate(); } catch { return undefined; } diff --git a/Extension/src/LanguageServer/dataBinding.ts b/Extension/src/LanguageServer/dataBinding.ts index 26a4691b7..5dcceaf5d 100644 --- a/Extension/src/LanguageServer/dataBinding.ts +++ b/Extension/src/LanguageServer/dataBinding.ts @@ -3,23 +3,7 @@ * See 'LICENSE' in the project root for license information. * ------------------------------------------------------------------------------------------ */ import * as vscode from 'vscode'; - -class Deferral { - private timer?: NodeJS.Timeout; - - constructor(callback: () => void, timeout: number) { - this.timer = setTimeout(() => { - this.timer = undefined; - callback(); - }, timeout); - } - public cancel() { - if (this.timer) { - clearTimeout(this.timer); - this.timer = undefined; - } - } -} +import { Deferral } from './utils'; export class DataBinding { private valueChanged = new vscode.EventEmitter(); diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index c664f896f..896bfddfb 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -478,21 +478,7 @@ async function onSwitchHeaderSource(): Promise { } }); const document: vscode.TextDocument = await vscode.workspace.openTextDocument(targetFileName); - const workbenchConfig: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration("workbench"); - let foundEditor: boolean = false; - if (workbenchConfig.get("editor.revealIfOpen")) { - // If the document is already visible in another column, open it there. - vscode.window.visibleTextEditors.forEach(editor => { - if (editor.document === document && !foundEditor) { - foundEditor = true; - void vscode.window.showTextDocument(document, editor.viewColumn).then(undefined, logAndReturn.undefined); - } - }); - } - - if (!foundEditor) { - void vscode.window.showTextDocument(document).then(undefined, logAndReturn.undefined); - } + void vscode.window.showTextDocument(document).then(undefined, logAndReturn.undefined); } /** @@ -1013,7 +999,7 @@ export function watchForCrashes(crashDirectory: string): void { // vscode.workspace.createFileSystemWatcher only works in workspace folders. try { fs.watch(crashDirectory, (event, filename) => { - if (event !== "rename") { + if (event !== "change") { return; } if (!filename || filename === prevCppCrashFile) { @@ -1180,7 +1166,7 @@ async function handleCrashFileRead(crashDirectory: string, crashFile: string, cr } const lines: string[] = data.split("\n"); - let addressData: string = ".\n"; + let addressData: string; const isCppToolsSrv: boolean = crashFile.startsWith("cpptools-srv"); const telemetryHeader: string = (isCppToolsSrv ? "cpptools-srv.txt" : crashFile) + "\n"; const filtPath: string | null = which.sync("c++filt", { nothrow: true }); @@ -1210,17 +1196,20 @@ async function handleCrashFileRead(crashDirectory: string, crashFile: string, cr crashStackStartLine = ++crashLogLine; } if (lines[crashStackStartLine].startsWith("SIG")) { - signalType = lines[crashStackStartLine] + "\n"; + signalType = `${lines[crashStackStartLine]}\n`; + addressData = `${lines[crashStackStartLine + 1]}:${lines[crashStackStartLine + 2]}\n`; // signalCode:signalAddr + crashStackStartLine += 3; } else { // The signal type may fail to be written. // Intentionally different from SIGUNKNOWN from cpptools, // and not SIG-? to avoid matching the regex in containsFilteredTelemetryData. signalType = "SIGMISSING\n"; + addressData = ".\n"; } data = telemetryHeader + signalType; let crashCallStack: string = ""; let validFrameFound: boolean = false; - for (let lineNum: number = crashStackStartLine + 1; lineNum < lines.length - 3; ++lineNum) { // skip last lines + for (let lineNum: number = crashStackStartLine; lineNum < lines.length - 3; ++lineNum) { // skip last lines const line: string = lines[lineNum]; const startPos: number = line.indexOf(startStr); let pendingCallStack: string = ""; @@ -1416,8 +1405,7 @@ export async function preReleaseCheck(): Promise { async function onCopilotHover(): Promise { telemetry.logLanguageServerEvent("CopilotHover"); - // Check if the user has access to vscode language model. - const vscodelm = (vscode as any).lm; + const vscodelm = util.getVSCodeLanguageModel(); if (!vscodelm) { return; } @@ -1480,6 +1468,7 @@ async function onCopilotHover(): Promise { let chatResponse: vscode.LanguageModelChatResponse | undefined; try { + // Select the chat model. const [model] = await vscodelm.selectChatModels(modelSelector); chatResponse = await model.sendRequest( diff --git a/Extension/src/LanguageServer/settings.ts b/Extension/src/LanguageServer/settings.ts index 0f35cc315..6e199cd64 100644 --- a/Extension/src/LanguageServer/settings.ts +++ b/Extension/src/LanguageServer/settings.ts @@ -164,6 +164,7 @@ export interface SettingsParams { codeAnalysisUpdateDelay: number; workspaceFolderSettings: WorkspaceFolderSettingsParams[]; copilotHover: string; + windowsErrorReportingMode: string; } function getTarget(): vscode.ConfigurationTarget { @@ -478,6 +479,7 @@ export class CppSettings extends Settings { } return this.getAsString("copilotHover"); } + public get windowsErrorReportingMode(): string { return this.getAsString("windowsErrorReportingMode"); } public get cppContextProviderParams(): string | undefined { const value = super.Section.get("copilotContextProviderParams"); if (isString(value)) { diff --git a/Extension/src/LanguageServer/settingsPanel.ts b/Extension/src/LanguageServer/settingsPanel.ts index 6352e428f..00105925b 100644 --- a/Extension/src/LanguageServer/settingsPanel.ts +++ b/Extension/src/LanguageServer/settingsPanel.ts @@ -121,6 +121,7 @@ export class SettingsPanel { { enableCommandUris: true, enableScripts: true, + retainContextWhenHidden: true, // Restrict the webview to only loading content from these directories localResourceRoots: [ diff --git a/Extension/src/LanguageServer/utils.ts b/Extension/src/LanguageServer/utils.ts index 3a46a486a..fff791eef 100644 --- a/Extension/src/LanguageServer/utils.ts +++ b/Extension/src/LanguageServer/utils.ts @@ -118,3 +118,23 @@ export async function checkDuration(fn: () => Promise): Promise<{ result: const result = await fn(); return { result, duration: performance.now() - start }; } + +/** + * A class that delays the execution of a callback until a specified timeout period has elapsed. + */ +export class Deferral { + private timer?: NodeJS.Timeout; + + constructor(callback: () => void, timeout: number) { + this.timer = setTimeout(() => { + this.timer = undefined; + callback(); + }, timeout); + } + public cancel() { + if (this.timer) { + clearTimeout(this.timer); + this.timer = undefined; + } + } +} diff --git a/Extension/src/common.ts b/Extension/src/common.ts index 4ce922d28..c9cf94954 100644 --- a/Extension/src/common.ts +++ b/Extension/src/common.ts @@ -165,7 +165,7 @@ 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", ".inl", ".ipp", ".tcc", ".tlh", ".tli", ""].some(ext => fileExtLower === ext); + return !fileExt || [".cuh", ".hpp", ".hh", ".hxx", ".h++", ".hp", ".h", ".inl", ".ipp", ".tcc", ".txx", ".tpp", ".tlh", ".tli", ""].some(ext => fileExtLower === ext); } export function isCppFile(uri: vscode.Uri): boolean { @@ -1828,3 +1828,16 @@ export function equals(array1: string[] | undefined, array2: string[] | undefine } return true; } + +export function getVSCodeLanguageModel(): any | undefined { + // Check if the user has access to vscode language model. + const vscodelm = (vscode as any).lm; + if (!vscodelm) { + return undefined; + } + // Check that vscodelm has a method called 'selectChatModels' + if (!vscodelm.selectChatModels || typeof vscodelm.selectChatModels !== 'function') { + return undefined; + } + return vscodelm; +} diff --git a/Extension/src/main.ts b/Extension/src/main.ts index 2f47e0ef3..be5f02274 100644 --- a/Extension/src/main.ts +++ b/Extension/src/main.ts @@ -125,9 +125,15 @@ export async function activate(context: vscode.ExtensionContext): Promise