diff --git a/.github/actions/package-lock.json b/.github/actions/package-lock.json index 57e2f7656d..3950c767c7 100644 --- a/.github/actions/package-lock.json +++ b/.github/actions/package-lock.json @@ -662,9 +662,9 @@ "dev": true }, "follow-redirects": { - "version": "1.14.7", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", - "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==" + "version": "1.14.8", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", + "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==" }, "fs.realpath": { "version": "1.0.0", diff --git a/Build/lldb-mi/README.md b/Build/lldb-mi/README.md new file mode 100644 index 0000000000..fc54ab8eda --- /dev/null +++ b/Build/lldb-mi/README.md @@ -0,0 +1,6 @@ +This folder contains the entitlements needed for the debugger to run on macOS. + +We use the entitlements that the .net runtime uses. See https://github.com/dotnet/runtime/blob/57678512d214af368ff055f358c5106f1aa19ac4/eng/pipelines/common/entitlements.plist + +Related Links: +https://docs.microsoft.com/en-us/dotnet/core/install/macos-notarization-issues#default-entitlements \ No newline at end of file diff --git a/Build/lldb-mi/debugger-entitlements.plist b/Build/lldb-mi/debugger-entitlements.plist new file mode 100644 index 0000000000..70eab3f119 --- /dev/null +++ b/Build/lldb-mi/debugger-entitlements.plist @@ -0,0 +1,20 @@ + + + + + com.apple.security.cs.allow-jit + + com.apple.security.cs.allow-unsigned-executable-memory + + com.apple.security.cs.allow-dyld-environment-variables + + com.apple.security.cs.disable-library-validation + + com.apple.security.cs.debugger + + com.apple.security.get-task-allow + + com.apple.security.task_for_pid-allow + + + \ No newline at end of file diff --git a/Build/lldb-mi/lldb-mi-sign.template.yml b/Build/lldb-mi/lldb-mi-sign.template.yml new file mode 100644 index 0000000000..f6e2f256eb --- /dev/null +++ b/Build/lldb-mi/lldb-mi-sign.template.yml @@ -0,0 +1,30 @@ +--- +parameters: + archs: ["x86_64", "arm64"] + +jobs: +- job: + pool: + name: VSEngSS-MicroBuild2022-1ES + steps: + - checkout: none + + - ${{ each arch in parameters.archs }}: + - task: DownloadPipelineArtifact@1 + displayName: 'Downloading unsigned_lldb-mi_${{ arch }}' + inputs: + targetPath: '$(Pipeline.Workspace)/Artifacts' + artifactName: 'unsigned_lldb-mi_${{ arch }}' + + - task: MicroBuildSignMacFiles@1 + displayName: 'ESRP Sign' + inputs: + SigningTarget: '$(Pipeline.Workspace)\Artifacts\lldb-mi_${{ arch }}.zip' + SigningCert: 8023 + + - task: PublishPipelineArtifact@1 + displayName: 'Publish signed LLDB-MI' + inputs: + targetPath: '$(Pipeline.Workspace)\Artifacts\lldb-mi_${{ arch }}.zip' + artifactName: 'lldb-mi_${{ arch }}_zip' +... \ No newline at end of file diff --git a/Build/lldb-mi/lldb-mi.template.yml b/Build/lldb-mi/lldb-mi.template.yml new file mode 100644 index 0000000000..539ed58362 --- /dev/null +++ b/Build/lldb-mi/lldb-mi.template.yml @@ -0,0 +1,160 @@ +parameters: +# Note: Make sure llvm_repo is the same as the one in Extension/cgmanifest.json +# 'RepositoryUrl' for llvm-project. + llvm_repo: https://github.com/llvm/llvm-project.git + +# Note: Make sure llvm_commit is the same as the one in Extension/cgmanifest.json +# 'CommitHash' for llvm-project. + llvm_commit: 0d44201451f03ba907cdb268ddddfc3fa38a0ebd + + llvm_build_type: Release + + llvm_arch: x86_64 + + llvm_additional_parameters: "-DLLDB_USE_SYSTEM_DEBUGSERVER=ON -DLLDB_RELOCATABLE_PYTHON=1 -DLLDB_INCLUDE_TESTS=OFF -DLLDB_BUILD_FRAMEWORK=1" + +# Note: Make sure lldb_mi_repo is the same as the one in Extension/cgmanifest.json +# 'CommitHash' for lldb-mi. + lldb_mi_repo: https://github.com/lldb-tools/lldb-mi.git + +# Note: Make sure lldb_mi_commit is the same as the one in Extension/cgmanifest.json +# 'CommitHash' for lldb-mi. + lldb_mi_commit: 2388bd74133bc21eac59b2e2bf97f2a30770a315 + + lldb_mi_additional_parameters: "-DUSE_LLDB_FRAMEWORK=1" + +jobs: +- job: LLDB_MI_${{ parameters.llvm_arch }} + timeoutInMinutes: 360 + pool: + ${{if eq(parameters['llvm_arch'], 'arm64')}}: + name: cpptoolsMacM1pool + ${{ else }}: + vmImage: macOS-latest + steps: + - task: CmdLine@2 + displayName: 'Install Dependencies' + inputs: + script: brew install cmake ninja swig + continueOnError: true + + - task: CmdLine@2 + displayName: 'Make sure buildspace does not exist' + inputs: + script: rm -rf $(Build.StagingDirectory)/buildspace + condition: always() + + - task: CmdLine@2 + displayName: 'Build LLVM Project' + inputs: + script: | + log_and_exec_cmd() { + echo "##[command] $1" + $1 + } + + log_and_exec_cmd "sudo rm -rf /Library/Developer/CommandLineTools" + log_and_exec_cmd "sudo xcode-select --switch /Applications/XCode.app" + + log_and_exec_cmd "cd $(Build.StagingDirectory)" + log_and_exec_cmd "mkdir $(Build.StagingDirectory)/buildspace" + + log_and_exec_cmd "git clone ${{ parameters.llvm_repo }} llvm-project" + log_and_exec_cmd "cd llvm-project" + log_and_exec_cmd "git checkout ${{ parameters.llvm_commit }}" + + log_and_exec_cmd "./lldb/scripts/macos-setup-codesign.sh" + + log_and_exec_cmd "cd .." + log_and_exec_cmd "mkdir $(Build.StagingDirectory)/buildspace/llvm-inst" + log_and_exec_cmd "mkdir $(Build.StagingDirectory)/buildspace/llvm-build" + log_and_exec_cmd "cd $(Build.StagingDirectory)/buildspace/llvm-build" + + log_and_exec_cmd "cmake -DLLVM_ENABLE_PROJECTS=clang;lldb -DCMAKE_BUILD_TYPE=${{ parameters.llvm_build_type }} -DCMAKE_INSTALL_PREFIX=$(Build.StagingDirectory)/buildspace/llvm-inst/ -DCMAKE_OSX_ARCHITECTURES=${{ parameters.llvm_arch }} ${{ parameters.llvm_additional_parameters }} -GNinja $(Build.StagingDirectory)/llvm-project/llvm" + if [[ $? -ne 0 ]] + then + echo "##[error] cmake llvm failed" + cat $(Build.SourcesDirectory)/buildspace/llvm-build/CMakeFiles/CMakeError.log + exit 1 + fi + + log_and_exec_cmd ninja + if [[ $? -ne 0 ]] + then + echo "##[error] ninja failed" + exit 1 + fi + + ### Workaround for https://github.com/llvm/llvm-project/issues/108 + log_and_exec_cmd "ninja install" + + # Remove conflicting LLDB.framework file. + log_and_exec_cmd "rm -rf $(Build.StagingDirectory)/buildspace/llvm-inst/Library/Frameworks/LLDB.framework" + + # Build lldb/sources/API first + log_and_exec_cmd "cmake -P $(Build.StagingDirectory)/buildspace/llvm-build/tools/lldb/source/API/cmake_install.cmake" + ### End of Workaround + + log_and_exec_cmd "ninja install" + if [[ $? -ne 0 ]] + then + echo "##[error] ninja install failed" + exit 1 + fi + + echo "##[section] Build LLDB-MI" + # Download lldb-mi and build it against our custom installation. + log_and_exec_cmd "cd $(Build.StagingDirectory)/buildspace" + log_and_exec_cmd "git clone ${{ parameters.lldb_mi_repo }} lldb-mi" + log_and_exec_cmd "cd lldb-mi" + log_and_exec_cmd "git checkout ${{ parameters.lldb_mi_commit }}" + + # Create a separate build directory for building lldb-mi. + log_and_exec_cmd "mkdir build" + log_and_exec_cmd "cd build" + log_and_exec_cmd "cmake -DCMAKE_PREFIX_PATH=$(Build.StagingDirectory)/buildspace/llvm-inst/ -DCMAKE_OSX_ARCHITECTURES=${{ parameters.llvm_arch }} ${{ parameters.lldb_mi_additional_parameters }} -GNinja .." + log_and_exec_cmd "ninja" + if [[ $? -ne 0 ]] + then + echo "##[error] ninja failed" + exit 1 + fi + + log_and_exec_cmd "mkdir $(Build.StagingDirectory)/publish" + log_and_exec_cmd "cd $(Build.StagingDirectory)/publish" + + log_and_exec_cmd "mkdir -p ./debugAdapters/lldb-mi_${{ parameters.llvm_arch }}/bin" + + log_and_exec_cmd "cp $(Build.StagingDirectory)/buildspace/lldb-mi/build/src/lldb-mi ./debugAdapters/lldb-mi_${{ parameters.llvm_arch }}/bin/." + + # Set rpath for finding LLDB.Framework + log_and_exec_cmd "install_name_tool -add_rpath @rpath/LLDB.framework/Versions/A/LLDB ./debugAdapters/lldb-mi_${{ parameters.llvm_arch }}/bin/lldb-mi" + + # Set rpath for App Store XCode LLDB.Framework + log_and_exec_cmd "install_name_tool -add_rpath /Applications/Xcode.app/Contents/SharedFrameworks/ ./debugAdapters/lldb-mi_${{ parameters.llvm_arch }}/bin/lldb-mi" + + # Set rpath for XCode CLI LLDB.Framework + log_and_exec_cmd "install_name_tool -add_rpath /Library/Developer/CommandLineTools/Library/PrivateFrameworks/ ./debugAdapters/lldb-mi_${{ parameters.llvm_arch }}/bin/lldb-mi" + + # Set rpath next to the lldb-mi executable LLDB.Framework + log_and_exec_cmd "install_name_tool -add_rpath @executable_path/. ./debugAdapters/lldb-mi_${{ parameters.llvm_arch }}/bin/lldb-mi" + + # Add entitlements + log_and_exec_cmd "codesign -s - -f --entitlements $(Build.SourcesDirectory)/Build/lldb-mi/debugger-entitlements.plist ./debugAdapters/lldb-mi_${{ parameters.llvm_arch }}/bin/lldb-mi" + + # Grab NOTICE.TXT + cp $(Build.SourcesDirectory)/Build/lldb-mi/NOTICE.TXT ./debugAdapters/lldb-mi_${{ parameters.llvm_arch }}/. + + zip -r $(Build.StagingDirectory)/lldb-mi_${{ parameters.llvm_arch }}.zip ./debugAdapters + + - task: PublishPipelineArtifact@1 + displayName: 'Publish LLDB-MI' + inputs: + targetPath: '$(Build.StagingDirectory)/lldb-mi_${{ parameters.llvm_arch }}.zip' + artifactName: 'unsigned_lldb-mi_${{ parameters.llvm_arch }}' + + - task: CmdLine@2 + displayName: 'Clean up' + inputs: + script: rm -rf $(Build.StagingDirectory)/buildspace + condition: always() \ No newline at end of file diff --git a/Build/lldb-mi/lldb-mi.yml b/Build/lldb-mi/lldb-mi.yml index 85aa0182d8..be8a7f3659 100644 --- a/Build/lldb-mi/lldb-mi.yml +++ b/Build/lldb-mi/lldb-mi.yml @@ -1,125 +1,23 @@ -variables: - llvm_repo: https://github.com/llvm/llvm-project.git - llvm_branch: release/10.x - llvm_build_type: Release - llvm_arch: x86_64 - llvm_additional_parameters: "-DLLDB_RELOCATABLE_PYTHON=1 -DLLDB_INCLUDE_TESTS=OFF -DLLDB_BUILD_FRAMEWORK=1" - # TODO: fix lldb_mi_repo and lldb_mi_branch (https://github.com/lldb-tools/lldb-mi/pull/37 and https://github.com/lldb-tools/lldb-mi/pull/39) - lldb_mi_repo: https://github.com/WardenGnaw/lldb-mi # TODO: Change to lldb-tools - lldb_mi_branch: release/cpptools # TODO: Change to main - lldb_mi_additional_parameters: "-DUSE_LLDB_FRAMEWORK=1" - -jobs: -- job: LLDB_MI - timeoutInMinutes: 360 - pool: - vmImage: 'macOS-latest' - steps: - - task: CmdLine@2 - displayName: 'Install Dependencies' - inputs: - script: brew install cmake ninja swig - continueOnError: true - - - task: CmdLine@2 - displayName: 'Build LLVM Project' - inputs: - script: | - log_and_exec_cmd() { - echo "##[command] $1" - $1 - } - - log_and_exec_cmd "cd $(Build.StagingDirectory)" - log_and_exec_cmd "mkdir $(Build.StagingDirectory)/buildspace" - - log_and_exec_cmd "git clone $(llvm_repo) llvm-project" - log_and_exec_cmd "cd llvm-project" - log_and_exec_cmd "git checkout $(llvm_branch)" - - log_and_exec_cmd "./lldb/scripts/macos-setup-codesign.sh" - - log_and_exec_cmd "cd .." - log_and_exec_cmd "mkdir $(Build.StagingDirectory)/buildspace/llvm-inst" - log_and_exec_cmd "mkdir $(Build.StagingDirectory)/buildspace/llvm-build" - log_and_exec_cmd "cd $(Build.StagingDirectory)/buildspace/llvm-build" - - log_and_exec_cmd "cmake -DLLVM_ENABLE_PROJECTS=clang;lldb -DCMAKE_BUILD_TYPE=$(llvm_build_type) -DCMAKE_INSTALL_PREFIX=$(Build.StagingDirectory)/buildspace/llvm-inst/ -DCMAKE_OSX_ARCHITECTURES=$(llvm_arch) $(llvm_additional_parameters) -GNinja $(Build.StagingDirectory)/llvm-project/llvm" - if [[ $? -ne 0 ]] - then - echo "##[error] cmake llvm failed" - cat $(Build.SourcesDirectory)/buildspace/llvm-build/CMakeFiles/CMakeError.log - exit 1 - fi - - log_and_exec_cmd ninja - if [[ $? -ne 0 ]] - then - echo "##[error] ninja failed" - exit 1 - fi - - ### Workaround for https://github.com/llvm/llvm-project/issues/108 - log_and_exec_cmd "ninja install" - - # Remove conflicting LLDB.framework file. - log_and_exec_cmd "rm -rf $(Build.StagingDirectory)/buildspace/llvm-inst/Library/Frameworks/LLDB.framework" - - # Build lldb/sources/API first - log_and_exec_cmd "cmake -P $(Build.StagingDirectory)/buildspace/llvm-build/tools/lldb/source/API/cmake_install.cmake" - ### End of Workaround - - log_and_exec_cmd "ninja install" - if [[ $? -ne 0 ]] - then - echo "##[error] ninja install failed" - exit 1 - fi - - echo "##[section] Build LLDB-MI" - # Download lldb-mi and build it against our custom installation. - log_and_exec_cmd "cd $(Build.StagingDirectory)/buildspace" - log_and_exec_cmd "git clone $(lldb_mi_repo) lldb-mi" - log_and_exec_cmd "cd lldb-mi" - log_and_exec_cmd "git checkout $(lldb_mi_branch)" - - # Create a separate build directory for building lldb-mi. - log_and_exec_cmd "mkdir build" - log_and_exec_cmd "cd build" - log_and_exec_cmd "cmake -DCMAKE_PREFIX_PATH=$(Build.StagingDirectory)/buildspace/llvm-inst/ $(lldb_mi_additional_parameters) -GNinja .." - log_and_exec_cmd "ninja" - if [[ $? -ne 0 ]] - then - echo "##[error] ninja failed" - exit 1 - fi - - log_and_exec_cmd "mkdir $(Build.StagingDirectory)/publish" - log_and_exec_cmd "cd $(Build.StagingDirectory)/publish" - - log_and_exec_cmd "mkdir -p ./debugAdapters/lldb-mi/bin" - - log_and_exec_cmd "cp $(Build.StagingDirectory)/buildspace/lldb-mi/build/src/lldb-mi ./debugAdapters/lldb-mi/bin/." - - # Set rpath for finding LLDB.Framework - log_and_exec_cmd "install_name_tool -add_rpath @rpath/LLDB.framework/Versions/A/LLDB ./debugAdapters/lldb-mi/bin/lldb-mi" - - # Set rpath for App Store XCode LLDB.Framework - log_and_exec_cmd "install_name_tool -add_rpath /Applications/Xcode.app/Contents/SharedFrameworks/ ./debugAdapters/lldb-mi/bin/lldb-mi" - - # Set rpath for XCode CLI LLDB.Framework - log_and_exec_cmd "install_name_tool -add_rpath /Library/Developer/CommandLineTools/Library/PrivateFrameworks/ ./debugAdapters/lldb-mi/bin/lldb-mi" - - # Set rpath next to the lldb-mi executable LLDB.Framework - log_and_exec_cmd "install_name_tool -add_rpath @executable_path/. ./debugAdapters/lldb-mi/bin/lldb-mi" - - # Grab NOTICE.TXT - cp $(Build.SourcesDirectory)/Build/lldb-mi/NOTICE.TXT ./debugAdapters/lldb-mi/. - - # Build can be found at https://dev.azure.com/ms/vscode-cpptools/_build?definitionId=313 - # Click on the build and select 'Artifacts' - - task: PublishPipelineArtifact@1 - displayName: 'Publish LLDB-MI' - inputs: - targetPath: '$(Build.StagingDirectory)/publish' - artifactName: 'lldb-mi' +parameters: +- name: Build_Type + displayName: Build Type + type: string + default: Release + +stages: +- stage: Build + dependsOn: [] + jobs: + - template: lldb-mi.template.yml + parameters: + llvm_build_type: ${{ parameters.Build_Type }} + llvm_arch: x86_64 + - template: lldb-mi.template.yml + parameters: + llvm_build_type: ${{ parameters.Build_Type }} + llvm_arch: arm64 + +- stage: Signing + dependsOn: ["Build"] + jobs: + - template: lldb-mi-sign.template.yml \ No newline at end of file diff --git a/Build/loc/TranslationsImportExport.yml b/Build/loc/TranslationsImportExport.yml index f80a0f3661..c79f0fa272 100644 --- a/Build/loc/TranslationsImportExport.yml +++ b/Build/loc/TranslationsImportExport.yml @@ -19,7 +19,9 @@ schedules: always: true pool: - vmImage: 'windows-latest' + name: 'AzurePipelines-EO' + demands: + - ImageOverride -equals AzurePipelinesWindows2022compliant steps: - task: CmdLine@2 diff --git a/Documentation/Building the Extension.md b/Documentation/Building the Extension.md index 64c5d9a371..86b43a4d76 100644 --- a/Documentation/Building the Extension.md +++ b/Documentation/Building the Extension.md @@ -10,6 +10,14 @@ Prerequisite steps: * From a command line, run the following commands from the **Extension** folder in the root of the repository: * `yarn install` will install the dependencies needed to build the extension. * **(optional)** `yarn global add vsce` will install `vsce` globally to create a VSIX package that you can install. - * **(optional)** Set an environment variable `CPPTOOLS_DEV=1`. - * This enables the local developer workflow when testing the debugger, copying dependencies from the **node_modules** folder. Testing the language server does not require this step. * Open the **Extension** folder in Visual Studio Code and press F5. This will launch a VS Code Extension Host window and activate the TypeScript debugger. You can set breakpoints on the extension source code and debug your scenario. + * If, after pressing F5, you see the following error in the `[Extension Development Host]` window, + > Unable to start the C/C++ language server. IntelliSense features will be disabled. Error: Missing binary at .../vscode-cpptools/Extension/bin/cpptools + * Then, you can follow the instructions in this [comment in a discussion about building this extension locally](https://github.com/microsoft/vscode-cpptools/discussions/8745#discussioncomment-2091563). + > get the binaries from installing the extension and then copying the binaries + 1. To do this, install this extension from the Visual Studio Marketplace and find its location on your device. It might be in a directory like `\\wsl$\Ubuntu\home\hamir\.vscode-server\extensions\ms-vscode.cpptools-`, for example. + 2. Next, go to the `bin/` directory of the aforementioned directory, and drag-and-drop, or copy-and-paste, `cpptools` and `cpptools-srv` from `...\extensions\ms-vscode.cpptools-\bin\` to this repository's `Extension\bin\` directory on your local device, so that `.../vscode-cpptools/Extension/bin/cpptools` and `.../vscode-cpptools/Extension/bin/cpptools-srv` both exist in your workspace. + 3. The aforementioned warning should be gone, and Intellisense, which gives those squiggly red error lines, should now be present. + 4. The `insiders` branch has binaries compatible with the latest Pre-Release version of the extension, and the `release` branch has binaries compatible with the latest Release version, but the `main` branch may have TypeScript changes that are incompatible with the published binaries, in which case, you'll need to create a branch off the `insiders` or `release` branches. + + * Feel free to use [the Discussions tab of this repository](https://github.com/microsoft/vscode-cpptools/discussions) if you have any further questions on building this extension locally. diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index 3f99973ae2..f776ae4075 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -1,5 +1,65 @@ # C/C++ for Visual Studio Code Change Log +## Version 1.9.7: March 23, 2022 +### New Features +* Add debugger support for Apple M1 (osx-arm64). [#7035](https://github.com/microsoft/vscode-cpptools/issues/7035) + * Resolves issue "[Big Sur M1] ERROR: Unable to start debugging. Unexpected LLDB output from command "-exec-run". process exited with status -1 (attach failed ((os/kern) invalid argument))". [#6779](https://github.com/microsoft/vscode-cpptools/issues/6779) +* Add a build and debug button when `C_Cpp.debugShortcut` is `true`. [#7497](https://github.com/microsoft/vscode-cpptools/issues/7497) + * The "Build and Debug Active File" command has been split into "Debug C++ File" and "Run C++ File", and it has been removed from the context menu. +* Add Alpine Linux arm64 support (VSIX). +* Add x64 debugger for CppVsdbg on Windows x64. + +### Enhancements +* Reserved identifiers with characters that match typed characters in the correct order but not contiguously are initially filtered in the auto-completion list. Doing a `ctrl` + `space` in the same location will show all auto-complete suggestions. [#4939](https://github.com/microsoft/vscode-cpptools/issues/4939) +* Add `dotConfig` property to IntelliSense Configuration (c_cpp_properties.json) to use .config file created by Kconfig system. + * Matheus Castello (@microhobby) [PR #7845](https://github.com/microsoft/vscode-cpptools/pull/7845) +* Rework how cancelation is processed for semantic tokens and folding operations. [PR #8739](https://github.com/microsoft/vscode-cpptools/pull/8739) +* Make SwitchHeaderSource use the `workbench.editor.revealIfOpen` setting. + * Joel Smith (@joelmsmith) [PR #8857](https://github.com/microsoft/vscode-cpptools/pull/8857) +* Add tag parser error logging. [#8907](https://github.com/microsoft/vscode-cpptools/issues/8907) +* Add error and warning messages if the VSIX for an incompatible or mismatching platform or architecture is installed. [#8908](https://github.com/microsoft/vscode-cpptools/issues/8908) +* Add a "More Info" option when an incompatible VSIX is encountered. [PR #8920](https://github.com/microsoft/vscode-cpptools/pull/8920) +* Add `;` to `break` and `continue` completion keywords. [#8932](https://github.com/microsoft/vscode-cpptools/issues/8932) +* Prevent stripping of format specifiers from -exec commands. + * Gareth Rees (@gareth-rees) [MIEngine#1277](https://github.com/microsoft/MIEngine/pull/1278) +* Improve messages for unknown breakpoints and watchpoints. + * Gareth Rees (@gareth-rees) [MIEngine#1282](https://github.com/microsoft/MIEngine/pull/1283) + +### Bug Fixes +* Fix some IntelliSense parsing bugs. [#5117](https://github.com/microsoft/vscode-cpptools/issues/5117) +* Fix IntelliSense process crashes caused by a stack overflow on Mac. [#7215](https://github.com/microsoft/vscode-cpptools/issues/7215), [#8653](https://github.com/microsoft/vscode-cpptools/issues/8653) +* Fix exclusions not applying during tag parsing of non-recursive dependent includes. [#8702](https://github.com/microsoft/vscode-cpptools/issues/8702) +* Fix issue that could cause an infinite loop when clicking on a preprocessor conditional directive. [#8717](https://github.com/microsoft/vscode-cpptools/issues/8717) +* Fix excludes applying to cases it should not when running code analysis. [#8724](https://github.com/microsoft/vscode-cpptools/issues/8724) +* Fix a crash when visualizing local variables for Microsoft Edge (msedge.exe) [#8738](https://github.com/microsoft/vscode-cpptools/issues/8738) +* Fix some system defines being incorrectly removed when running code analysis. [#8740](https://github.com/microsoft/vscode-cpptools/issues/8740) +* Prevent an error from being logged due to custom configuration processing prior to the provider being ready. [#8752](https://github.com/microsoft/vscode-cpptools/issues/8752) +* Fix incorrect crash recovery with multiroot. [#8762](https://github.com/microsoft/vscode-cpptools/issues/8762) +* Fix random compiler query, clang-tidy, or clang-format failure on Windows. [#8764](https://github.com/microsoft/vscode-cpptools/issues/8764) +* Fix invoking commands before cpptools is activated. [#8785](https://github.com/microsoft/vscode-cpptools/issues/8785) +* Fix a bug on Windows with semantic tokens updating. [#8799](https://github.com/microsoft/vscode-cpptools/issues/8799) +* Fix tag parser failure due to missing DLL dependencies on Windows. [#8851](https://github.com/microsoft/vscode-cpptools/issues/8851) +* Fix semantic tokens getting cleared for all other files in a TU after editing a file. [#8867](https://github.com/microsoft/vscode-cpptools/issues/8867) +* Fix a bug and typos with cppbuild task providers. + * InLAnn (@inlann) [PR #8897](https://github.com/microsoft/vscode-cpptools/pull/8897) +* Fix an issue that could cause the extension to fail to start up properly. [PR #8906](https://github.com/microsoft/vscode-cpptools/pull/8906) +* Fix handling of `-B` with compiler querying. [#8962](https://github.com/microsoft/vscode-cpptools/issues/8962) +* Fix incorrect "Running clang-tidy" status indications with multi-root workspaces. [#8964](https://github.com/microsoft/vscode-cpptools/issues/8964) +* Fix a crash during shutdown and potential database resetting due to shutdown being aborted too soon. [PR #8969](https://github.com/microsoft/vscode-cpptools/pull/8969) +* Fix an issue that could cause the active file to not be configured by a configuration provider when custom configurations are reset. [#8974](https://github.com/microsoft/vscode-cpptools/issues/8974) +* Fix detection of Visual Studio 2015. [#8975](https://github.com/microsoft/vscode-cpptools/issues/8975) +* Fix mingw clang being detected as gcc. [#9024](https://github.com/microsoft/vscode-cpptools/issues/9024) +* Fix a random crash on file open. +* Fix some IntelliSense crashes. +* Fix some IntelliSense parsing bugs. +* Fix a bug with IntelliSense updating not working if a file was closed and reopened while its TU was processing an update. +* Fix a potential heap corruption when `files.associations` are changed. +* Update translated text. + +### Documentation +* Clarify how to get binaries when debugging the source from GitHub. + * Hamir Mahal (@hamirmahal) [PR #8788](https://github.com/microsoft/vscode-cpptools/pull/8788) + ## Version 1.8.4: February 7, 2022 ### Bug Fixes * Suppress incorrect warnings on ARM64 macOS. [#8756](https://github.com/microsoft/vscode-cpptools/issues/8756) @@ -11,12 +71,12 @@ ### New Features * Add data breakpoints (memory read/write interrupts) with `gdb` debugging. [#1410](https://github.com/microsoft/vscode-cpptools/issues/1410) * Add "All Exceptions" Breakpoint for cppdbg [#1800](https://github.com/microsoft/vscode-cpptools/issues/1800) -* Add multi-threaded code analysis (using `clang-tidy`) based on the IntelliSense configuration. It defaults to using up to half the cores, but it can be changed via the `C_Cpp.codeAnalysis.maxConcurrentThreads` setting. [#2908](https://github.com/microsoft/vscode-cpptools/issues/2908). +* Add multi-threaded code analysis (using `clang-tidy`) based on the IntelliSense configuration. It defaults to using up to half the cores, but it can be changed via the `C_Cpp.codeAnalysis.maxConcurrentThreads` setting. [#2908](https://github.com/microsoft/vscode-cpptools/issues/2908) * Add support for Alpine Linux [#4827](https://github.com/microsoft/vscode-cpptools/issues/4827) * Implement platform-specific VSIX's via the marketplace. [#8152](https://github.com/microsoft/vscode-cpptools/issues/8152) ### Enhancements -* The maximum number of threads to use for Find All References can be configured with the `C_Cpp.references.maxConcurrentThreads` settings. [#4036](https://github.com/microsoft/vscode-cpptools/issues/4036). +* The maximum number of threads to use for Find All References can be configured with the `C_Cpp.references.maxConcurrentThreads` settings. [#4036](https://github.com/microsoft/vscode-cpptools/issues/4036) * The IntelliSense processes launched to confirm references during Find All References can be cached via the `C_Cpp.references.maxCachedProcesses` setting. [#4038](https://github.com/microsoft/vscode-cpptools/issues/4038) * The maximum number of IntelliSense processes can be configured with the `C_Cpp.intelliSense.maxCachedProcesses` setting, and the number of processes will automatically decrease when the free memory becomes < 256 MB and it can be configured to use less memory via the `maxMemory` settings (memory usage from code analysis is not handled yet). [#4811](https://github.com/microsoft/vscode-cpptools/issues/4811) * Switch from 32-bit to 64-bit binaries on 64-bit Windows. [#7230](https://github.com/microsoft/vscode-cpptools/issues/7230) @@ -740,8 +800,8 @@ * Show an error message when a Rename fails due to the symbol not being found. [#4510](https://github.com/microsoft/vscode-cpptools/issues/4510) * Fix `launch.json` creation due to localized strings containing quotes. [#4526](https://github.com/microsoft/vscode-cpptools/issues/4526) * Fix configuration error squiggles not being applied unless the setting was set in both `c_cpp_properties.json` and `settings.json`. [PR #4538](https://github.com/microsoft/vscode-cpptools/pull/4538) -* Fix document symbol for Outline view and breadcrumbs on Windows 7. [#4536](https://github.com/microsoft/vscode-cpptools/issues/4536). -* Add support for `"ms-vscode.cmake-tools"` `configurationProvider` id. [#4586](https://github.com/microsoft/vscode-cpptools/issues/4586). +* Fix document symbol for Outline view and breadcrumbs on Windows 7. [#4536](https://github.com/microsoft/vscode-cpptools/issues/4536) +* Add support for `"ms-vscode.cmake-tools"` `configurationProvider` id. [#4586](https://github.com/microsoft/vscode-cpptools/issues/4586) * Fix cancellation of Find All References sometimes resulting in an exception. [#2710](https://github.com/microsoft/vscode-cpptools/issues/2710) * Fix the sort order of files in the Find All References and Rename UI's. [#4615](https://github.com/microsoft/vscode-cpptools/issues/4615) * Fix localized Chinese strings not displaying on systems with case-sensitive file systems. [#4619](https://github.com/microsoft/vscode-cpptools/issues/4619) @@ -825,11 +885,11 @@ ### Bug Fixes * Fix wrong type of `this` pointer. [#2303](https://github.com/microsoft/vscode-cpptools/issues/2303) -* Fix previous cache path not deleted when new cache path is specified. Note that the VS Code bug [Microsoft/vscode#59391](https://github.com/microsoft/vscode/issues/59391) still occurs on the settings UI, but this fix should delete any incomplete path names as the extension receives changes from the cache path setting. [#3644](https://github.com/microsoft/vscode-cpptools/issues/3644). +* Fix previous cache path not deleted when new cache path is specified. Note that the VS Code bug [Microsoft/vscode#59391](https://github.com/microsoft/vscode/issues/59391) still occurs on the settings UI, but this fix should delete any incomplete path names as the extension receives changes from the cache path setting. [#3644](https://github.com/microsoft/vscode-cpptools/issues/3644) * Fix broken shell script when launch/attaching as root. [#3711](https://github.com/microsoft/vscode-cpptools/issues/3711) * Christian A. Jacobsen (@ChristianJacobsen) [PR MIEngine#906](https://github.com/microsoft/MIEngine/pull/906) * Fix ".H" files not appearing in include completion results on Linux/macOS. [#3744](https://github.com/microsoft/vscode-cpptools/issues/3744) -* Fix `compile_commands.json` file changes not updated. [#3864](https://github.com/microsoft/vscode-cpptools/issues/3864). +* Fix `compile_commands.json` file changes not updated. [#3864](https://github.com/microsoft/vscode-cpptools/issues/3864) * Fix `Failed to parse` error message in the open file scenario. [#3888](https://github.com/microsoft/vscode-cpptools/issues/3888) * Fix loading the wrong symbols when creating or copying a file. [#3897](https://github.com/microsoft/vscode-cpptools/issues/3897) * Fix IntelliSense process crash in clang mode. [#3898](https://github.com/microsoft/vscode-cpptools/issues/3898) diff --git a/Extension/Reinstalling the Extension.md b/Extension/Reinstalling the Extension.md new file mode 100644 index 0000000000..b99d613333 --- /dev/null +++ b/Extension/Reinstalling the Extension.md @@ -0,0 +1,32 @@ +

Incompatible or Mismatched C/C++ Extension Binaries

+ +

The C/C++ extension includes native binaries.

+ +

When installed via the marketplace UI in VS Code, the correct native binaries should be included. If incompatible binaries were detected and the C/C++ extension had been installed via the marketplace UI in VS Code, please report the issue.

+ +

Reinstalling the C/C++ Extension

+ +

When reinstalling an equivalent version of an extension, VS Code may reuse the existing extension directory. To prevent this from occurring when reinstalling the C/C++ extension, it may be necessary to first delete the existing extension directory.

+ +

Installed extension directories can be found under one of the following paths under your user directory (`%USERPROFILE%` on Windows, or `$HOME` on Linux and macOS)

+ +
%USERPROFILE%\.vscode\extensions
+
%USERPROFILE%\.vscode-insiders\extensions
+
%USERPROFILE%\.vscode-exploration\extensions
+ +

In a remote connection:

+
$HOME/.vscode-server/extensions
+
$HOME/.vscode-server-insiders/extensions
+
$HOME/.vscode-server-exploration/extensions
+ +

Example paths to installed C/C++ extension directories:

+ +

On Windows:

+
%USERPROFILE%\.vscode\extensions\ms-vscode.cpptools-1.9.0
+ +

On Linux:

+
$HOME/.vscode/extensions/ms-vscode.cpptools-1.9.0
+ +

Then reinstall via the marketplace UI in VS Code.

+ +

If the correct version of the extension fails to be deployed by VS Code, the correct VSIX for your system can be downloaded from the VS Code marketplace web site and installed using the `Install from VSIX...` option under the '...' menu in the marketplace UI in VS Code.

diff --git a/Extension/bin/messages/cs/messages.json b/Extension/bin/messages/cs/messages.json index bc6680cca7..60a609e3f3 100644 --- a/Extension/bin/messages/cs/messages.json +++ b/Extension/bin/messages/cs/messages.json @@ -838,7 +838,7 @@ "Vrací se odkaz na místní proměnnou.", "Vynechání explicitního typu je nestandardní (předpokládá se int).", "Víc než jedna částečná specializace odpovídá seznamu argumentů šablony %n.", - "%no", + "%nod", "Seznam argumentů šablony není v deklaraci primární šablony povolený.", "Částečné specializace nemůžou mít výchozí argumenty šablony.", "%n1 se nepoužívá nebo nejde odvodit ze seznamu argumentů šablony %n2.", @@ -3402,5 +3402,48 @@ "deklarace vlastněná globálním modulem je v konfliktu s %nd vlastněnou pojmenovaným modulem", "první argument atributu „malloc“ musí být funkce", "nejde zachytit %nod", - "nejde zachytit „this“" + "nejde zachytit „this“", + "již v kontextu consteval", + "Příkazy if consteval a if not consteval vyžadují příkazy uzavřené do složených závorek.", + "Příkazy if consteval a if not consteval nemají ve funkci, která není constexpr, žádný význam.", + "Převod řízení na příkaz if consteval nebo if not consteval se nepovoluje.", + "Konstantní vyhodnocování nemůže projít deklarací proměnné se statickou dobou trvání nebo uloženou po dobu existence vlákna.", + "Proměnlivý kvalifikátor se pro výraz lambda s explicitním parametrem this nepovoluje.", + "Členská funkce deklarovaná jako static nemůže mít explicitní parametr this.", + "Explicitní parametr this musí být první deklarovaný parametr.", + "Proměnná this se tady nepodporuje.", + "Porovnávací funkce s explicitním this nemůže být nastavena jako výchozí.", + "Funkce s explicitním this vyžaduje druhý operand.", + "Příkazy if consteval a if not consteval nejsou v tomto režimu standardní.", + "Vynechání () v deklarátoru výrazu lambda je v tomto režimu nestandardní.", + "Když se vynechá seznam parametrů výrazu lambda, nepodporuje se klauzule requires na konci.", + "Požádalo se o neplatný oddíl modulu %sq.", + "Požádalo se nedefinovaný oddíl modulu %sq1 (předpokládalo se, že je to %sq2).", + "Pro oddíl %sq2 se požádalo o pozici v souboru %d1 (relativní pozice %d2) v modulu %sq1, pozice je ale prázdná.", + "Pro oddíl %sq2 se požádalo o pozici v souboru %d1 (relativní pozice %d2) v modulu %sq1, pozice ale předchází začátek oddílu.", + "Pro oddíl %sq2 se požádalo o pozici v souboru %d1 (relativní pozice %d2) v modulu %sq1, pozice ale přetéká konec svého oddílu.", + "Pro oddíl %sq2 se požádalo o pozici v souboru %d1 (relativní pozice %d2) v modulu %sq1, pozice ale není zarovnaná s elementy oddílu.", + "Z podpole %sq", + "Z oddílu %sq, elementu %d1 (pozice v souboru %d2, relativní pozice %d3)", + "Atributy výrazu lambda tady nejsou standardní.", + "Identifikátor %sq by bylo možné zaměnit za vizuálně podobné %p.", + "Tento komentář obsahuje podezřelé řídicí znaky formátování Unicode.", + "Tento řetězec obsahuje řídicí znaky formátování Unicode. To může způsobit neočekávané chování modulu runtime.", + "Došlo k potlačení %d1 upozornění při zpracovávání modulu %sq1.", + "Došlo k potlačení %d1 upozornění při zpracovávání modulu %sq1.", + "Došlo k potlačení %d1 chyby při zpracovávání modulu %sq1.", + "Došlo k potlačení %d1 chyb při zpracovávání modulu %sq1.", + "včetně", + "potlačeno", + "Virtuální členská funkce nemůže mít explicitní parametr this.", + "Převzetí adresy funkce s explicitním this vyžaduje kvalifikovaný název.", + "Vytvoření adresy funkce s explicitním this vyžaduje operátor &.", + "řetězcový literál nelze použít k inicializaci člena flexibilního pole.", + "Reprezentace IFC definice funkce %sq je neplatná.", + "byla provedena oprava vedoucí k zahození implicitní parametru this.", + "graf UniLevel IFC se nepoužil k zadání parametrů.", + "V grafu definice parametrů IFC byl zadán tento počet parametrů: %d1, zatímco deklarace IFC určovala tento počet parametrů: %d2.", + "V grafu definice parametrů IFC byl zadán %d1 parametr, zatímco deklarace IFC určovala tento počet parametrů: %d2.", + "V grafu definice parametrů IFC byl zadán tento počet parametrů: %d1, zatímco deklarace IFC určovala %d2 parametr.", + "Chybí reprezentace IFC definice funkce %sq." ] \ No newline at end of file diff --git a/Extension/bin/messages/de/messages.json b/Extension/bin/messages/de/messages.json index 6ad81f1bcb..87ed558a17 100644 --- a/Extension/bin/messages/de/messages.json +++ b/Extension/bin/messages/de/messages.json @@ -838,7 +838,7 @@ "Ein Verweis auf die lokale Variable wird zurückgegeben.", "Die Auslassung des expliziten Typs entspricht nicht dem Standard (\"int\" wird angenommen).", "Mehr als eine teilweise Spezialisierung stimmt mit der Vorlagenargumentliste von \"%n\" überein.", - "%no", + "%nod", "In einer Deklaration einer primären Vorlage ist keine Vorlagenargumentliste zulässig.", "Teilweise Spezialisierungen dürfen keine Standardvorlagenargumente aufweisen.", "%n1 wird nicht in der Vorlagenargumentliste von \"%n2\" verwendet oder kann nicht daraus hergeleitet werden.", @@ -3402,5 +3402,48 @@ "Die Deklaration im Besitz des globalen Moduls steht in Konflikt mit %nd im Besitz eines benannten Moduls.", "Das erste Argument für ein malloc-Attribut muss eine Funktion sein.", "%nod kann nicht erfasst werden.", - "„this“ kann nicht erfasst werden." + "„this“ kann nicht erfasst werden.", + "bereits im consteval-Kontext", + "„wenn consteval“ und „wennn nicht consteval“ erfordern abhängige Anweisungen mit geschweiften Klammern", + "„wenn consteval“ und „wenn nicht consteval“ sind in einer Nicht-constexpr-Funktion bedeutungslos", + "die Übertragung der Steuerung in eine „wenn consteval“- oder „wenn nicht consteval“-Anweisung ist nicht zulässig", + "die Konstantenauswertung kann die Deklaration einer Variablen mit statischer oder Thread-Speicherdauer nicht durchlaufen", + "der änderbare Qualifizierer ist für einen Lambda-Ausdruck mit einem expliziten „dies“-Parameter nicht zulässig", + "eine mit „statisch“ deklarierte Memberfunktion darf keinen expliziten „dies“-Parameter aufweisen", + "ein expliziter „dies“-Parameter muss der erste deklarierte Parameter sein", + "„dies“ ist hier nicht zulässig", + "eine Vergleichsfunktion mit explizitem „dies“ kann nicht als Standard verwendet werden", + "eine explizite „dies-2-Funktion erfordert einen Selektoroperanden", + "„wenn consteval“ und „wenn nicht consteval“ sind in diesem Modus nicht Standard", + "das Weglassen von „()“ in einem Lambda-Deklarator ist in diesem Modus nicht der Standard", + "eine „trailing-requires“-Klausel ist nicht zulässig, wenn die Lambda-Parameterliste ausgelassen wird", + "Modul %sq ungültige Partition angefordert", + "Modul %sq1 undefinierte Partition (könnte %sq2 sein) wurde angefordert", + "Modul %sq1 Dateiposition %d1 (relative Position %d2) wurde für Partition %sq2 angefordert – die leer ist", + "Modul %sq1 Dateiposition %d1 (relative Position %d2) wurde für Partition %sq2 angefordert – was dem Start der Partition vorausgeht", + "Modul %sq1 Dateiposition %d1 (relative Position %d2) wurde für die Partition %sq2 angefordert – was das Ende ihrer Partition überschreitet", + "Modul %sq1 Dateiposition %d1 (relative Position %d2) wurde für die Partition %sq2 angefordert – welche mit ihren Partitionselementen falsch ausgerichtet ist", + "aus dem Subfeld %sq", + "von Partition %sq Element %d1 (Dateiposition %d2, relative Position %d3)", + "Lambda-Attribute entsprechen hier nicht dem Standard", + "der Bezeichner %sq könnte mit einem visuell ähnlichen Bezeichner verwechselt werden, der %p angezeigt wird", + "dieser Kommentar enthält verdächtige Unicode-Formatierungssteuerzeichen", + "diese Zeichenfolge enthält Unicode-Formatierungssteuerzeichen, die zu unerwartetem Laufzeitverhalten führen könnten", + "%d1 unterdrückte Warnung wurde bei der Verarbeitung des Moduls %sq1 festgestellt", + "%d1 unterdrückte Warnungen wurden bei der Verarbeitung des Moduls %sq1 festgestellt", + "%d1 unterdrückter Fehler wurde beim Verarbeiten des Moduls %sq1 festgestellt", + "%d1 unterdrückte Fehler wurden beim Verarbeiten des Moduls %sq1 festgestellt", + "einschließlich", + "Unterdrückt", + "eine virtuelle Memberfunktion darf keinen expliziten „dies“-Parameter aufweisen", + "das Übernehmen der Adresse einer expliziten „dies“-Funktion erfordert einen qualifizierten Namen.", + "das Formatieren der Adresse einer expliziten „dies“-Funktion erfordert den Operator „&“", + "Ein Zeichenfolgenliteral kann nicht zum Initialisieren eines flexiblen Arraymembers verwendet werden.", + "Die IFC-Darstellung der Definition der Funktion %sq ist ungültig.", + "Es wurde eine Korrektur vorgenommen, um den impliziten „this“-Parameter zu löschen.", + "Ein UniLevel-IFC-Chart wurde nicht zum Angeben von Parametern verwendet.", + "%d1 Parameter wurden im IFC-Parameterdefinitionschart angegeben, während %d2 Parameter in der IFC-Deklaration angegeben wurden.", + "%d1 Parameter wurde im IFC-Parameterdefinitionschart angegeben, während %d2 Parameter in der IFC-Deklaration angegeben wurden.", + "%d1 Parameter wurden im IFC-Parameterdefinitionschart angegeben, während %d2 Parameter in der IFC-Deklaration angegeben wurde.", + "Die IFC-Darstellung der Definition der Funktion %sq fehlt." ] \ No newline at end of file diff --git a/Extension/bin/messages/es/messages.json b/Extension/bin/messages/es/messages.json index eb03e4f0d0..e65bcea016 100644 --- a/Extension/bin/messages/es/messages.json +++ b/Extension/bin/messages/es/messages.json @@ -838,7 +838,7 @@ "devolviendo una referencia a una variable local", "la omisión de un tipo explícito no es estándar (se presupone 'int')", "más de una especialización parcial coincide con la lista de argumentos de plantilla de %n", - "%no", + "%nod", "no se permite una lista de argumentos de plantilla en una declaración de plantilla principal", "las especializaciones parciales no pueden tener argumentos de plantilla predeterminados", "%n1 no se usa en (o no se puede deducir de) la lista de argumentos de plantilla de %n2", @@ -3402,5 +3402,48 @@ "la declaración propiedad del módulo global entra en conflicto con %nd propiedad de un módulo con nombre", "el primer argumento de un atributo \"malloc\" debe ser una función", "no se puede capturar %nod", - "no se puede capturar \"this\"" + "no se puede capturar \"this\"", + "ya está en contexto de consteval", + "'if consteval' y 'if not consteval' requieren instrucciones dependientes limitadas", + "'if consteval' y 'if not consteval' no tienen sentido en una función que no es constexpr", + "no se permite la transferencia del control a una instrucción 'if consteval' o 'if not consteval'", + "constant-evaluation no puede pasar por la declaración de una variable con duración de almacenamiento estático o de subproceso", + "no se permite el calificador mutable en una expresión lambda con un parámetro \"this\" explícito", + "una función miembro declarada con 'static' no puede tener un parámetro 'this' explícito", + "un parámetro 'this' explícito debe ser el primer parámetro declarado", + "“this” no se permite aquí", + "no se puede establecer de forma predeterminada una función de comparación con 'this' explícita", + "una función explícita 'this' requiere un operando selector", + "'if consteval' y 'if not consteval' no son estándar en este modo", + "omitir '()' en un declarador lambda no es estándar en este modo", + "no se permite una cláusula trailing-requires-clause cuando se omite la lista de parámetros lambda", + "se solicitó una partición no válida del módulo %sq", + "módulo %sq1 partición no definida (se considera que es %sq2) solicitada", + "módulo %sq1, posición de archivo %d1 (posición relativa %d2) solicitada para la partición %sq2, que está vacía", + "módulo %sq1, posición de archivo %d1 (posición relativa %d2) solicitada para la partición %sq2, que es anterior al inicio de la partición", + "módulo %sq1, posición de archivo %d1 (posición relativa %d2) solicitada para la partición %sq2, que desborda el final de su partición", + "módulo %sq1 posición de archivo %d1 (posición relativa %d2) solicitada para la partición %sq2, que está mal alineada con sus elementos de particiones", + "del subcampo %sq", + "de la partición %sq elemento %d1 (posición de archivo %d2, posición relativa %d3)", + "los atributos lambda no son estándar aquí", + "el identificador %sq podría confundirse con uno visualmente similar que aparece %p", + "este comentario contiene caracteres de control de formato Unicode sospechosos", + "esta cadena contiene caracteres de control de formato Unicode que podrían dar lugar a un comportamiento inesperado en tiempo de ejecución", + "Se encontró %d1 advertencia suprimida al procesar el módulo %sq1", + "Se encontraron %d1 advertencias suprimidas al procesar el módulo %sq1", + "Se encontró un error suprimido %d1 al procesar el módulo %sq1", + "Se encontraron %d1 errores suprimidos al procesar el módulo %sq1", + "Incluido", + "Suprimido", + "una función miembro virtual no puede tener un parámetro 'this' explícito", + "tomar la dirección de una función explícita \"this\" requiere un nombre completo", + "la formación de la dirección de una función explícita 'this' requiere el operador '&'", + "no se puede usar un literal de cadena para inicializar un miembro de matriz flexible", + "La representación IFC de la definición de la función %sq no es válida", + "se realizó una corrección para quitar un parámetro \"this\" implícito", + "no se usó un gráfico IFC UniLevel para especificar parámetros", + "el gráfico de definición de parámetros IFC especificó %d1 parámetros, mientras que la declaración IFC especificó %d2 parámetros", + "el gráfico de definición de parámetros IFC especificó %d1 parámetro, mientras que la declaración IFC especificó %d2 parámetros", + "el gráfico de definición de parámetros IFC especificó %d1 parámetros, mientras que la declaración IFC especificó %d2 parámetro", + "Falta la representación IFC de la definición de la función %sq" ] \ No newline at end of file diff --git a/Extension/bin/messages/fr/messages.json b/Extension/bin/messages/fr/messages.json index 8fe4799769..029be6133e 100644 --- a/Extension/bin/messages/fr/messages.json +++ b/Extension/bin/messages/fr/messages.json @@ -838,7 +838,7 @@ "retourne la référence à une variable locale", "omission de type explicite non standard ('int' pris par défaut)", "plusieurs spécialisations partielles correspondent à la liste d'arguments template de %n", - "%no", + "%nod", "liste d'arguments template non autorisée dans une déclaration de modèle principal", "les spécialisations partielles ne peuvent pas avoir d'arguments template par défaut", "%n1 n'est pas utilisé dans la liste d'arguments template de %n2, ou ne peut pas en être déduit", @@ -3402,5 +3402,48 @@ "la déclaration appartenant au module global est en conflit avec %nd appartenant à un module nommé", "le premier argument d'un attribut 'malloc' doit être une fonction", "impossible de capturer %nod", - "impossible de capturer 'this'" + "impossible de capturer 'this'", + "déjà dans un contexte consteval", + "« if consteval » et « if not consteval » nécessitent des instructions dépendantes resserrés", + "« if consteval » et « if not consteval » ne sont pas valides dans une fonction non constexpr", + "le transfert de contrôle dans une instruction « if consteval » ou « if not consteval » n’est pas autorisé", + "l’évaluation constante ne peut pas passer par la déclaration d’une variable avec une durée de stockage statique ou de thread", + "le qualificateur mutable n’est pas autorisé sur une expression lambda avec un paramètre « this » explicite", + "une fonction membre déclarée avec « static » ne peut pas avoir de paramètre « this » explicite", + "un paramètre « this » explicite doit être le premier paramètre déclaré", + "« this » n’est pas autorisé ici", + "une fonction de comparaison avec « this » explicite ne peut pas être par défaut", + "une fonction « this » explicite nécessite un opérande de sélecteur", + "« if consteval » et « if not consteval » ne sont pas standard dans ce mode", + "l’omission de « () » dans un déclarateur lambda n’est pas standard dans ce mode", + "une clause requires de fin n’est pas autorisée lorsque la liste de paramètres lambda est omise", + "module %sq partition non valide demandée", + "module %sq1 partition non définie (on pense qu’il s’agirait de %sq2) demandée", + "module %sq1 position de fichier %d1 (position relative %d2) demandée pour la partition %sq2, qui est vide", + "module %sq1 position de fichier %d1 (position relative %d2) demandée pour la partition %sq2, qui précède le début de la partition", + "module %sq1 position de fichier %d1 (position relative %d2) demandée pour la partition %sq2, qui dépasse la fin de sa partition", + "module %sq1 position de fichier %d1 (position relative %d2) demandée pour la partition %sq2, qui est mal alignée avec ses éléments de partitions", + "à partir du sous-champ %sq", + "à partir de la partition %sq, élément %d1 (position de fichier %d2, position relative %d3)", + "les attributs lambda ne sont pas standard ici", + "l’identificateur %sq peut être confondu avec un identificateur visuellement similaire qui apparaît %p", + "ce commentaire contient des caractères de contrôle de mise en forme Unicode suspects", + "cette chaîne contient des caractères de contrôle de mise en forme Unicode qui peuvent entraîner un comportement d’exécution inattendu", + "%d1 avertissement supprimé rencontré lors du traitement du module %sq1", + "%d1 avertissements supprimés rencontrés lors du traitement du module %sq1", + "%d1 erreur supprimé rencontré lors du traitement du module %sq1", + "%d1 erreurs supprimées rencontrées lors du traitement du module %sq1", + "Y compris", + "Supprimé", + "une fonction membre virtuelle ne peut pas avoir un paramètre « this » explicite", + "la prise de l’adresse d’une fonction « this » explicite nécessite un nom qualifié", + "la création de l’adresse d’une fonction « this » explicite nécessite l’opérateur '&'", + "impossible d’utiliser un littéral de chaîne pour initialiser un membre de tableau flexible", + "La représentation IFC de la définition de la fonction %sq n’est pas valide.", + "une correction a été apportée pour supprimer « ce » paramètre implicite.", + "un graphique IFC UniLevel n’a pas été utilisé pour spécifier des paramètres.", + "%d1 paramètre a été spécifié par le graphique de définition de paramètres IFC alors que %d2 paramètres ont été spécifiés par la déclaration IFC.", + "%d1 paramètre a été spécifié par le graphique de définition de paramètres IFC alors que %d2 paramètres ont été spécifiés par la déclaration IFC.", + "%d1 paramètre a été spécifié par le graphique de définition de paramètres IFC alors que %d2 paramètres ont été spécifiés par la déclaration IFC.", + "La représentation IFC de la définition de la fonction %sq est manquante." ] \ No newline at end of file diff --git a/Extension/bin/messages/it/messages.json b/Extension/bin/messages/it/messages.json index d70788d13b..cd5caee90b 100644 --- a/Extension/bin/messages/it/messages.json +++ b/Extension/bin/messages/it/messages.json @@ -838,7 +838,7 @@ "verrà restituito il riferimento alla variabile locale", "omissione del tipo esplicito non conforme allo standard. Verrà utilizzato 'int'", "più specializzazioni parziali corrispondenti all'elenco degli argomenti di modello di %n", - "%no", + "%nod", "elenco degli argomenti di modello non consentito in una dichiarazione di un modello principale", "le specializzazioni parziali non possono includere argomenti di modello predefiniti", "%n1 non viene usato o non può essere dedotto dall'elenco degli argomenti di modello di %n2", @@ -3402,5 +3402,48 @@ "la dichiarazione di proprietà di un modulo globale è in conflitto con %nd di proprietà di un modulo denominato", "il primo argomento di un attributo 'malloc' deve essere una funzione", "non è possibile acquisire %nod", - "non è possibile acquisire 'this'" + "non è possibile acquisire 'this'", + "già nel contesto consteval", + "'if consteval' e 'if not consteval' richiedono istruzioni dipendenti con parentesi graffe", + "'if consteval' e 'if not consteval' non sono significativi in una funzione non constexpr", + "il trasferimento del controllo in un'istruzione 'if consteval' o 'if not consteval' non è consentito", + "la valutazione costante non può passare attraverso la dichiarazione di una variabile con durata di archiviazione statica o thread", + "qualificatore modificabile non consentito in un'espressione lambda con un parametro 'this' esplicito", + "una funzione membro dichiarata con 'static' non può avere un parametro 'this' esplicito", + "un parametro 'this' esplicito deve essere il primo parametro dichiarato", + "'this' non è consentito qui", + "una funzione di confronto con 'this' esplicito non può essere predefinita", + "una funzione 'this' esplicita richiede un operando selettore", + "'if consteval' e 'if not consteval' non sono standard in questa modalità", + "l'omissione di '()' in un dichiaratore lambda non è standard in questa modalità", + "una clausola requires finale non è consentita quando l'elenco di parametri lambda viene omesso", + "modulo %sq partizione non valida richiesta", + "richiesta partizione non definita del modulo %sq1 (che si ritiene sia %sq2)", + "modulo %sq1 posizione file %d1 (posizione relativa %d2) richiesta per la partizione %sq2, che è vuota", + "modulo %sq1 posizione del file %d1 (posizione relativa %d2) richiesta per la partizione %sq2, che precede l'inizio della partizione", + "modulo %sq1 posizione del file %d1 (posizione relativa %d2) richiesta per la partizione %sq2, che causa l'overflow della fine della partizione", + "modulo %sq1 posizione file %d1 (posizione relativa %d2) richiesta per la partizione %sq2, che non è allineata con i relativi elementi di partizioni", + "dal sottocampo %sq", + "dalla partizione %sq elemento %d1 (posizione file %d2, posizione relativa %d3)", + "attributi lambda non conformi allo standard", + "l'identificatore %sq potrebbe essere confuso con un identificatore visivamente simile visualizzato %p", + "questo commento contiene caratteri di controllo di formattazione Unicode sospetti", + "questa stringa contiene caratteri di controllo di formattazione Unicode che potrebbero causare un comportamento di runtime imprevisto", + "%d1 avviso eliminato durante l'elaborazione del modulo %sq1", + "%d1 avvisi eliminati rilevati durante l'elaborazione del modulo %sq1", + "Errore %d1 eliminato durante l'elaborazione del modulo %sq1", + "%d1 errori eliminati rilevati durante l'elaborazione del modulo %sq1", + "compreso", + "eliminato", + "una funzione membro virtuale non può avere un parametro 'this' esplicito", + "l'acquisizione dell'indirizzo di una funzione esplicita 'this' richiede un nome qualificato", + "per formare l'indirizzo di una funzione esplicita 'this' è necessario l'operatore '&'", + "impossibile utilizzare un valore letterale stringa per inizializzare un membro di matrice flessibile", + "La rappresentazione IFC della definizione della funzione %sq non è valida", + "è stata apportata una correzione per eliminare un parametro 'this' implicito", + "un grafico IFC UniLevel non è stato usato per specificare i parametri", + "%d1 parametri specificati dal grafico di definizione dei parametri IFC mentre %d2 parametri sono stati specificati dalla dichiarazione IFC", + "%d1 parametro è stato specificato dal grafico di definizione del parametro IFC mentre %d2 parametri sono stati specificati dalla dichiarazione IFC", + "%d1 parametri sono stati specificati dal grafico di definizione del parametro IFC mentre %d2 parametro è stato specificato dalla dichiarazione IFC", + "Manca la rappresentazione IFC della definizione della funzione %sq" ] \ No newline at end of file diff --git a/Extension/bin/messages/ja/messages.json b/Extension/bin/messages/ja/messages.json index f3373b5c54..c76b92ff34 100644 --- a/Extension/bin/messages/ja/messages.json +++ b/Extension/bin/messages/ja/messages.json @@ -838,7 +838,7 @@ "ローカル変数への参照を返しています", "明示的な型の省略は非標準です ('int' が想定されます)", "複数の部分的特殊化が %n のテンプレート引数リストと一致します", - "%no", + "%nod", "テンプレート引数リストはプライマリ テンプレートの宣言では使用できません", "部分的特殊化に既定のテンプレート引数があってはなりません", "%n1 は、%n2 のテンプレート引数リストで使用されていないか、またはリストから推測できません", @@ -3402,5 +3402,48 @@ "グローバル モジュールが所有する宣言が、名前付きモジュールが所有する %nd と競合しています", "'malloc' 属性の最初の引数は関数である必要があります", "%nod をキャプチャできません", - "'this' をキャプチャできません" + "'this' をキャプチャできません", + "既に consteval コンテキストにあります", + "'if consteval' および 'if not consteval' には、中かっこ依存ステートメントが必要です", + "constexpr 以外の関数では'if consteval' と 'if not consteval' は意味がありません", + "コントロールを 'if consteval' または 'if not consteval' ステートメントに転送することは許可されていません", + "定数評価は、静的またはスレッド ストレージ期間を持つ変数の宣言を経由できません", + "可変修飾子は、明示的な 'this' パラメーターを持つラムダでは許可されていません", + "'static' と宣言されたメンバー関数に明示的な 'this' パラメーターを指定することはできません", + "明示的な 'this' パラメーターは最初に宣言されたパラメーターでなければなりません", + "'this' はここでは許可されていません", + "明示的な 'this' を持つ比較関数は既定値にできません", + "明示的な 'this' 関数にはセレクター オペランドが必要です", + "このモードでは、'if consteval' と 'if not consteval' は標準ではありません", + "ラムダ宣言子での '()' の省略は、このモードでは非標準です", + "ラムダ パラメーター リストが省略されている場合、末尾の Requires 句は許可されません", + "モジュール %sq 無効なパーティションが要求されました", + "モジュール %sq1 個の未定義のパーティション (%sq2 と推定) が要求されました", + "モジュール %sq1 ファイル位置 %d1 (相対位置 %d2) がパーティション %sq2 に対して要求されました - これは空です", + "モジュール %sq1 ファイル位置 %d1 (相対位置 %d2) がパーティション %sq2 に対して要求されました - これはパーティションの始点より前です", + "モジュール %sq1 ファイル位置 %d1 (相対位置 %d2) がパーティション %sq2 に対して要求されました - これはそのパーティションの終点をオーバーフローしています", + "モジュール %sq1 ファイル位置 %d1 (相対位置 %d2) がパーティション %sq2 に対して要求されました - これはそのパーティション要素の整列誤りです", + "サブフィールド %sq の始点", + "パーティション元 %sq 要素 %d1 (ファイル位置 %d2、相対位置 %d3)", + "ラムダ属性はここでは非標準です", + "識別子 %sq は、%p に表示される視覚的に類似したものと混同される可能性があります", + "このコメントには、不審な Unicode 書式設定制御文字が含まれています", + "この文字列には、予期しない実行時の動作を引き起こす可能性のある Unicode 形式の制御文字が含まれています", + "%d1 個の抑制された警告が、モジュール %sq1 の処理中に発生しました", + "%d1 個の抑制された警告が、モジュール %sq1 の処理中に発生しました", + "%d1 個の抑制されたエラーが、モジュール %sq1 の処理中に発生しました", + "%d1 個の抑制されたエラーが、モジュール %sq1 の処理中に発生しました", + "含む", + "抑制", + "仮想メンバー関数は、明示的な 'this' パラメーターを持つことはできません", + "明示的な 'this' 関数のアドレスの取得には修飾名が必要です", + "明示的な 'this' 関数のアドレスの形成には '&' 演算子が必要です", + "文字列リテラルを柔軟な配列メンバーを初期化するのに使用することはできません", + "関数 %sq の定義の IFC 表現が無効です", + "暗黙的な `this` パラメーターを削除するように修正が行われました", + "パラメーターの指定に UniLevel IFC グラフが使用されませんでした", + "%d1 個のパラメーターが IFC パラメーター定義グラフで指定されましたが、IFC 宣言では %d2 個のパラメーターが指定されました", + "%d1 個のパラメーターが IFC パラメーター定義グラフで指定されましたが、IFC 宣言では %d2 個のパラメーターが指定されました", + "%d1 個のパラメーターが IFC パラメーター定義グラフで指定されましたが、IFC 宣言では %d2 個のパラメーターが指定されました", + "関数 %sq の定義の IFC 表現が見つかりません" ] \ No newline at end of file diff --git a/Extension/bin/messages/ko/messages.json b/Extension/bin/messages/ko/messages.json index 341c6a7d03..3252dfc06f 100644 --- a/Extension/bin/messages/ko/messages.json +++ b/Extension/bin/messages/ko/messages.json @@ -838,7 +838,7 @@ "지역 변수에 대한 참조를 반환합니다.", "명시적 형식의 생략은 표준이 아닙니다('int'로 간주됨).", "두 개 이상의 부분 특수화가 %n의 템플릿 인수 목록과 일치합니다.", - "%no", + "%nod", "기본 템플릿의 선언에서 템플릿 인수 목록을 사용할 수 없습니다.", "부분 특수화에 기본 템플릿 인수를 사용할 수 없습니다.", "%n1이(가) 사용되지 않았거나 %n2의 템플릿 인수 목록에서 추론할 수 없습니다.", @@ -3402,5 +3402,48 @@ "전역 모듈이 소유한 선언이 명명된 모듈이 소유한 %nd과(와) 충돌합니다.", "'malloc' 특성에 대한 첫 번째 인수는 함수여야 합니다.", "%nod을(를) 캡처할 수 없습니다.", - "'this'를 캡처할 수 없습니다." + "'this'를 캡처할 수 없습니다.", + "이미 consteval 컨텍스트에 있습니다.", + "'if consteval' 및 'if not consteval'에는 중괄호가 있는 종속 문이 필요합니다.", + "비 constexpr 함수에서는 'if consteval' 및 'if not consteval'이 의미가 없습니다.", + "컨트롤을 'if consteval' 또는 'if not consteval' 문으로 전송할 수 없습니다.", + "상수 평가는 정적 또는 스레드 스토리지 기간이 있는 변수 선언을 통과할 수 없습니다.", + "명시적 'this' 매개 변수가 있는 람다에서는 변경 가능한 한정자를 사용할 수 없습니다.", + "'static'으로 선언된 멤버 함수에는 명시적 'this' 매개 변수를 사용할 수 없습니다.", + "명시적 'this' 매개 변수는 첫 번째 선언된 매개 변수여야 합니다.", + "여기서는 'this'를 사용할 수 없습니다.", + "명시적 'this'를 사용하는 비교 함수는 기본값으로 사용할 수 없습니다.", + "명시적 'this' 함수에는 선택기 피연산자가 필요합니다.", + "'if consteval' 및 'if not consteval'은 이 모드에서 표준이 아닙니다.", + "람다 선언자에서 '()'를 생략하는 것은 이 모드에서 표준이 아닙니다.", + "람다 매개 변수 목록을 생략하면 후행-requires 절이 허용되지 않습니다.", + "모듈 %sq 잘못된 파티션이 요청됨", + "모듈 %sq1 정의되지 않은 파티션(%sq2로 추정됨) 요청됨", + "%sq1 모듈 파일 위치 %d1(상대 위치 %d2)이(가) %sq2 파티션에 대해 요청되었습니다. 이 위치는 비어 있습니다.", + "%sq1 모듈 파일 위치 %d1(상대 위치 %d2)이(가) 파티션 %sq2에 대해 요청되었습니다. 이는 파티션의 시작을 선행합니다.", + "모듈 %sq1 파일 위치 %d1(상대 위치 %d2)이(가) 파티션의 끝을 오버플로하는 파티션 %sq2에 대해 요청되었습니다.", + "모듈 %sq1 파일 위치 %d1(상대 위치 %d2)이(가) 파티션 요소가 잘못 정렬된 파티션 %sq2에 대해 요청되었습니다.", + "하위 필드 %sq에서", + "파티션 %sq 요소 %d1(파일 위치 %d2, 상대 위치 %d3)에서", + "여기서 람다 특성은 표준이 아닙니다.", + "식별자 %sq은(는) 시각적으로 유사한 식별자와 혼동될 수 있습니다. %p", + "이 주석에는 의심스러운 유니코드 서식 지정 제어 문자가 포함되어 있습니다.", + "이 문자열에는 예기치 않은 런타임 동작이 발생할 수 있는 유니코드 서식 지정 컨트롤 문자가 포함되어 있습니다.", + "%d1 모듈 %sq1을(를) 처리하는 동안 표시되지 않는 경고가 발생했습니다.", + "%d1 모듈 %sq1을(를) 처리하는 동안 표시되지 않는 경고가 발생했습니다.", + "%d1 모듈 %sq1을(를) 처리하는 동안 오류가 표시되지 않았습니다.", + "%d1 모듈 %sq1을(를) 처리하는 동안 오류가 표시되지 않았습니다.", + "포함", + "표시 안 함", + "가상 멤버 함수에는 명시적 'this' 매개 변수를 사용할 수 없습니다.", + "명시적 'this' 함수의 주소를 사용하려면 정규화된 이름이 필요합니다.", + "명시적 'this' 함수의 주소를 구성하려면 '&' 연산자가 필요합니다.", + "가변 배열 멤버를 초기화하는 데 문자열 리터럴을 사용할 수 없습니다.", + "함수 %sq의 정의에 대한 IFC 표현이 잘못되었습니다.", + "암시적 'this' 매개 변수를 삭제하도록 수정되었습니다.", + "매개 변수를 지정하는 데 UniLevel IFC 차트가 사용되지 않았습니다.", + "%d1 매개 변수는 IFC 매개 변수 정의 차트에 의해 지정되었지만 %d2 매개 변수는 IFC 선언에 의해 지정되었습니다.", + "%d1 매개 변수는 IFC 매개 변수 정의 차트에 의해 지정되었지만 %d2 매개 변수는 IFC 선언에 의해 지정되었습니다.", + "%d1 매개 변수는 IFC 매개 변수 정의 차트에 의해 지정되었지만 %d2 매개 변수는 IFC 선언에 의해 지정되었습니다.", + "%sq 함수 정의의 IFC 표현이 없습니다." ] \ No newline at end of file diff --git a/Extension/bin/messages/pl/messages.json b/Extension/bin/messages/pl/messages.json index 6231ef53b4..f109cc80a0 100644 --- a/Extension/bin/messages/pl/messages.json +++ b/Extension/bin/messages/pl/messages.json @@ -838,7 +838,7 @@ "zwracanie odwołania do zmiennej lokalnej", "pominięcie jawnego typu jest niestandardowe (przyjęto typ „int”)", "więcej niż jedna specjalizacja częściowa jest zgodna z listą argumentów szablonu %n", - "%no", + "%nod", "lista argumentów szablonu jest niedozwolona w deklaracji szablonu podstawowego", "częściowe specjalizacje nie mogą mieć domyślnych argumentów szablonu", "element %n1 nie jest używany lub nie można go określić na podstawie listy argumentów szablonu elementu %n2", @@ -3402,5 +3402,48 @@ "deklaracja należąca do modułu globalnego powoduje konflikt z elementem %nd należącymi do nazwanego modułu", "pierwszy argument atrybutu „malloc” musi być funkcją", "nie można przechwycić elementu %nod", - "nie można przechwycić „tego”" + "nie można przechwycić „tego”", + "już w kontekście consteval", + "Instrukcje „if consteval” i „if not consteval” wymagają zwartych instrukcji zależnych", + "Instrukcje „if consteval” i „if not consteval” są bez znaczenia w funkcji non-constexpr", + "przeniesienie kontrolki do instrukcji „if consteval” lub „if not consteval” jest niedozwolone", + "obliczanie stałej nie może przejść przez deklarację zmiennej ze statycznym lub wątkiem czasu przechowywania", + "modyfikowalny kwalifikator jest niedozwolony w wyrażeń lambda z jawnym parametrem „this”", + "funkcja składowa zadeklarowana za pomocą elementu „static” nie może mieć jawnego parametru „this”", + "jawny parametr „this” musi być pierwszym zadeklarowanym parametrem", + "Element „this” jest niedozwolony w tym miejscu", + "nie można domyślnie określić funkcji porównania z jawnym elementem „this”", + "jawna funkcja „this” wymaga operandu selektora", + "Instrukcje „if consteval” i „if not consteval” nie są standardowe w tym trybie", + "pominięcie elementu „()” w deklaratorze lambda jest niestandardowe w tym trybie", + "klauzula trailing-requires-clause jest niedozwolona, gdy lista parametrów lambda zostanie pominięta", + "zażądano nieprawidłowej partycji modułu %sq", + "zażądano niezdefiniowanej partycji modułu %sq1 (prawdopodobnie %sq2)", + "zażądano modułu %sq1 pozycji pliku %d1 (pozycja względna %d2) dla partycji %sq2 — która jest pusta", + "zażądano modułu %sq1 pozycji pliku %d1 (względna pozycja %d2) dla partycji %sq2, która poprzedza rozpoczęcie partycji", + "zażądano modułu %sq1 pozycji pliku %d1 (pozycja względna %d2) dla partycji %sq2, która powoduje przepełnienie końca partycji", + "zażądano modułu %sq1 pozycji pliku %d1 (pozycja względna %d2) dla partycji %sq2, która jest nieprawidłowo wyrównana do jej elementów partycji", + "z podpola %sq", + "z partycji %sq element %d1 (pozycja pliku %d2, względna pozycja %d3)", + "atrybuty lambda są niestandardowe w tym miejscu", + "identyfikator %sq można pomylić z widocznym wizualnie identyfikatorem %p", + "ten komentarz zawiera podejrzane znaki kontrolne formatowania Unicode", + "ten ciąg zawiera znaki kontrolne formatowania Unicode, które mogą spowodować nieoczekiwane zachowanie środowiska uruchomieniowego", + "Znaleziono pominięte ostrzeżenie %d1 podczas przetwarzania modułu %sq1", + "Znaleziono ostrzeżenia pominięte przez %d1 podczas przetwarzania modułu %sq1", + "Znaleziono pominięty błąd %d1 podczas przetwarzania modułu %sq1", + "Znaleziono %d1 pominiętych błędów podczas przetwarzania modułu %sq1", + "uwzględniając", + "Pominięte", + "wirtualna funkcja składowa nie może mieć jawnego parametru „this”", + "pobieranie adresu jawnej funkcji „this” wymaga kwalifikowanej nazwy", + "utworzenie adresu jawnej funkcji „this” wymaga operatora \"&\"", + "literału ciągu nie można użyć do zainicjowania elastycznej składowej tablicy", + "Reprezentacja IFC definicji funkcji %sq jest nieprawidłowa", + "korekta została wprowadzona w celu porzucenia niejawnego parametru „this”", + "wykres IFC UniLevel nie został użyty do określenia parametrów", + "Parametry (%d1) zostały określone przez wykres definicji parametru IFC, podczas gdy parametry (%d2) zostały określone przez deklarację IFC", + "Parametry (%d1) zostały określone przez wykres definicji parametru IFC, podczas gdy parametry (%d2) zostały określone przez deklarację IFC", + "Parametry (%d1) zostały określone przez wykres definicji parametru IFC, podczas gdy parametry (%d2) zostały określone przez deklarację IFC", + "Brak reprezentacji IFC definicji funkcji %sq" ] \ No newline at end of file diff --git a/Extension/bin/messages/pt-br/messages.json b/Extension/bin/messages/pt-br/messages.json index 3aebe335c1..13a1fdfcf9 100644 --- a/Extension/bin/messages/pt-br/messages.json +++ b/Extension/bin/messages/pt-br/messages.json @@ -838,7 +838,7 @@ "referência de retorno para variável local", "a omissão do tipo explícito não é padrão ('int' assumed)", "mais de uma especialização parcial corresponde à lista de argumentos do modelo de %n", - "%no", + "%nod", "uma lista de argumentos do modelo não é permitida em uma declaração de um modelo primário", "as especializações parciais podem não ter argumentos de modelo padrão", "%n1 não é usado ou não pode ser deduzido a partir da lista de argumentos do modelo de %n2", @@ -3384,14 +3384,14 @@ "a especificação 'throw()' não faz parte de C++ 20 e posteriores", "mais de uma entrada no mapa de unidades de cabeçalho corresponde a '%s'", "diagnóstico #pragma deve ter argumento 'push' ou 'pop'", - "nenhum 'diagnóstico push #pragma' foi encontrado para corresponder a esse 'pop de diagnóstico'", + "nenhum 'diagnóstico push #pragma' foi encontrado para corresponder a esae 'pop de diagnóstico'", "o %sq não pode ser uma macro quando for usado em uma diretiva de importação ou módulo", "essa diretiva só pode aparecer no escopo de namespace global", "uma declaração 'exportar' só pode aparecer no escopo global ou de namespace", "%sq é analisado como um identificador em vez de uma palavra-chave porque os tokens que o seguem não correspondem aos de uma diretiva de pré-processador", "parece que esse é o início de uma diretiva de pré-processador, mas a falta de um '; ' seguido imediatamente por uma nova linha evita que", "parece ser uma diretiva de pré-processamento de módulos, mas essas diretivas não podem aparecer dentro de uma expansão de macro", - "uma diretriz 'módulo' não pode aparecer dentro do escopo de inclusão condicional (por exemplo, #if, #else, #elseif, etc.)", + "uma diretriz 'módulo' não pode aparecer dentro do escopo de inclusão condicional (por exemplo, #se, #outro, #outrose, etc.)", "a importação de %sq foi ignorada", "tipo promise %t deve declarar get_return_object_on_allocation_failure como uma função membro estática que não requer argumentos", "um modelo de alias não pode ser explicitamente especializado", @@ -3402,5 +3402,48 @@ "a declaração de propriedade do módulo global está em conflito %nd pertencente a um módulo nomeado", "o primeiro argumento para um atributo 'malloc' deve ser uma função", "não é possível capturar %nod", - "não é possível capturar 'this'" + "não é possível capturar 'this'", + "já no contexto consteval", + "'if consteval' e 'if not consteval' exigem instruções dependentes entre chaves", + "'if consteval' e 'if not consteval' são sem sentido em uma função não constexpr", + "a transferência de controle para uma instrução 'if consteval' ou 'if not consteval' não é permitida", + "a avaliação constante não pode passar pela declaração de uma variável com duração estática ou de armazenamento de thread", + "o qualificador mutável não é permitido em um lambda com um parâmetro 'this' explícito", + "uma função membro declarada com 'static' não pode ter um parâmetro 'this' explícito", + "um parâmetro 'this' explícito deve ser o primeiro parâmetro declarado", + "'this' não é permitido aqui", + "uma função de comparação com 'this' explícito não pode ser padrão", + "uma função 'this' explícita requer um operando de seletor", + "'if consteval' e 'if not consteval' não são padrão neste modo", + "omitir '()' em um declarador lambda não é padrão neste modo", + "uma cláusula-requer à direita não é permitida quando a lista de parâmetros lambda é omitida", + "módulo %sq partição inválida solicitada", + "módulo %sq1 partição indefinida (acredita-se que seja %sq2) solicitada", + "módulo %sq1 posição de arquivo %d1 (posição relativa %d2) solicitada para a partição %sq2 - que está vazia", + "módulo %sq1 posição de arquivo %d1 (posição relativa %d2) solicitada para a partição %sq2 - que impede o início da partição", + "módulo %sq1 posição de arquivo %d1 (posição relativa %d2) solicitada para a partição %sq2 - que estoura o final de sua partição", + "módulo %sq1 posição de arquivo %d1 (posição relativa %d2) solicitada para a partição %sq2 - que está desalinhada com seus elementos de partições", + "do subcampo %sq", + "da partição %sq elemento %d1 (posição do arquivo %d2, posição relativa %d3)", + "os atributos lambda não são padrão aqui", + "O identificador %sq pode ser confundido com um visualmente semelhante ao que aparece %p", + "este comentário contém caracteres de controle de formatação Unicode suspeitos", + "essa cadeia de caracteres contém caracteres de controle de formatação Unicode que podem resultar em comportamento de runtime inesperado", + "%d1 aviso suprimido encontrado durante o processamento do módulo %sq1", + "%d1 avisos suprimidos foram encontrados durante o processamento do módulo %sq1", + "%d1 erro suprimido encontrado ao processar o módulo %sq1", + "%d1 erros suprimidos foram encontrados durante o processamento do módulo %sq1", + "incluindo", + "suprimida", + "uma função membro virtual não pode ter um parâmetro 'this' explícito", + "usar o endereço de uma função explícita 'this' requer um nome qualificado", + "formar o endereço de uma função 'this' explícita requer o operador '&'", + "um literal de cadeia de caracteres não pode ser usado para inicializar um membro de matriz flexível", + "A representação IFC da definição da função %sq é inválida", + "foi feita uma correção para descartar um parâmetro 'this' implícito", + "um gráfico UNILevel IFC não foi usado para especificar parâmetros", + "%d1 parâmetros foram especificados pelo gráfico de definição de parâmetro IFC, enquanto %d2 parâmetros foram especificados pela declaração IFC", + "O parâmetro %d1 foi especificado pelo gráfico de definição de parâmetro IFC, enquanto %d2 parâmetros foram especificados pela declaração IFC", + "%d1 parâmetros foram especificados pelo gráfico de definição de parâmetro IFC, enquanto o parâmetro %d2 foi especificado pela declaração IFC", + "A representação IFC da definição da função %sq está ausente" ] \ No newline at end of file diff --git a/Extension/bin/messages/ru/messages.json b/Extension/bin/messages/ru/messages.json index 4a2572a324..e20ec8a42e 100644 --- a/Extension/bin/messages/ru/messages.json +++ b/Extension/bin/messages/ru/messages.json @@ -838,7 +838,7 @@ "возвращение ссылки на локальную переменную", "нестандартное упущение явного типа (требуется \"int\")", "списку аргументов шаблона %n соответствует более одной частичной специализации", - "%no", + "%nod", "использование списка аргументов шаблона в объявлении основного шаблона не допускается", "частичные специализации не могут содержать аргументы шаблона по умолчанию", "%n1 не используется или не может быть выведено из списка аргументов шаблона %n2", @@ -3402,5 +3402,48 @@ "объявление, которым владеет глобальный модуль, конфликтует с %nd, которым владеет именованный модуль", "первый аргумент атрибута \"malloc\" должен быть функцией", "не удается захватить %nod", - "не удается захватить \"this\"" + "не удается захватить \"this\"", + "уже в контексте consteval", + "Для \"if consteval\" и \"if not consteval\" требуются зависимые операторы в фигурных скобках", + "\"if consteval\" и \"if not consteval\" не имеют смысла в функции, отличной от constexpr", + "передача управления оператору \"if consteval\" или \"if not consteval\" не допускается", + "вычисление константы не может проходить через объявление переменной со статической длительностью или длительностью хранилища потока", + "изменяемый квалификатор недопустим для лямбды с явным параметром \"this\"", + "функция-член, объявленная со значением \"static\", не может иметь явный параметр \"this\"", + "явный параметр \"this\" должен быть первым объявленным параметром", + "\"this\" здесь не разрешено", + "функция сравнения с явным параметром \"this\" не может быть задана по умолчанию", + "для явной функции \"this\" требуется операнд селектора", + "\"if consteval\" и \"if not consteval\" не являются стандартными в этом режиме", + "опущение \"()\" в лямбда-операторе объявления является нестандартным в этом режиме", + "конечное предложение requires не допускается, если список лямбда-параметров опущен", + "запрошен недопустимый раздел модуля %sq", + "запрошен неопределенный раздел модуля %sq1 (предполагается — %sq2)", + "модуль %sq1, позиция файла %d1 (относительная позиция %d2) запрошена для раздела %sq2, который пуст", + "модуль %sq1, позиция файла %d1 (относительная позиция %d2) запрошена для раздела %sq2, который находится перед началом раздела", + "модуль %sq1, позиция файла %d1 (относительная позиция %d2) для раздела %sq2, который переполняет окончание этого раздела", + "модуль %sq1, позиция файла %d1 (относительная позиция %d2) запрошена для раздела %sq2, который не выровнен по элементам разделов", + "из подполя %sq", + "из раздела %sq, элемент %d1 (позиция файла %d2, относительная позиция %d3)", + "здесь нестандартные лямбда-атрибуты", + "идентификатор %sq можно перепутать с визуально похожим %p", + "этот комментарий содержит подозрительные управляющие символы форматирования Юникода", + "эта строка содержит управляющие символы форматирования Юникода, которые могут привести к непредвиденной работе среды выполнения", + "обнаружено %d1 подавленное предупреждение при обработке модуля %sq1", + "обнаружено несколько (%d1) подавленных предупреждений при обработке модуля %sq1", + "Обнаружена %d1 подавленная ошибка при обработке модуля %sq1", + "Обнаружено несколько (%d1) подавленных ошибок при обработке модуля %sq1", + "включая", + "подавлено", + "виртуальная функция-член не может иметь явный параметр \"this\"", + "для получения адреса явной функции \"this\" требуется полное имя", + "для формирования адреса явной функции \"this\" требуется оператор \"&\"", + "строковый литерал нельзя использовать для инициализации элемента гибкого массива", + "Представление IFC определения функции %sq недопустимо", + "внесено исправление для удаления неявного параметра \"this\"", + "диаграмма IFC UniLevel не использовалось для указания параметров", + "несколько (%d1) параметров указаны в диаграмме определения параметров IFC, в то время как несколько (%d2) параметров указаны в объявлении IFC", + "%d1 параметр указан в диаграмме определения параметров IFC, в то время как несколько (%d2) параметров указаны в объявлении IFC", + "несколько (%d1) параметров указаны в диаграмме определения параметров IFC, в то время как %d2 параметр указан в объявлении IFC", + "Представление IFC определения функции %sq отсутствует" ] \ No newline at end of file diff --git a/Extension/bin/messages/tr/messages.json b/Extension/bin/messages/tr/messages.json index b709624296..a681facba5 100644 --- a/Extension/bin/messages/tr/messages.json +++ b/Extension/bin/messages/tr/messages.json @@ -838,7 +838,7 @@ "yerel değişkene başvuru döndürülüyor", "belirtik türün atlanması standart dışı ('int' varsayılıyor)", "birden fazla kısmi özelleşme, %n öğesinin şablon bağımsız değişken listesi ile eşleşiyor", - "%no", + "%nod", "bir birincil şablon bildiriminde, şablon bağımsız değişken listesine izin verilmiyor", "kısmi özelleşmeler varsayılan şablon bağımsız değişkenlerine sahip olamaz", "%n1, %n2 öğesinin şablon bağımsız değişken listesinde kullanılamaz veya bu listeden çıkarsanamaz", @@ -3402,5 +3402,48 @@ "genel modüle ait bildirim, adlandırılmış bir modülün sahip olduğu %nd ile çakışıyor", "'malloc' özniteliğine yönelik ilk bağımsız değişken bir işlev olmalıdır", "%nod yakalanamıyor", - "'this' yakalanamıyor" + "'this' yakalanamıyor", + "consteval bağlamında zaten var", + "'if consteval' ve 'if not consteval' ayraçlı bağımlı deyimler gerektiriyor", + "'if consteval' ve 'if not consteval' constexpr olmayan bir işlevde anlamsız durumda", + "denetimin 'if consteval' veya 'if not consteval' deyimine aktarılmasına izin verilmiyor", + "sabit değerlendirme, statik veya iş parçacığı depolama süresine sahip bir değişkenin bildiriminde bulunamıyor", + "açık 'this' parametresine sahip bir lambda üzerinde değiştirilebilir niteleyiciye izin verilmez", + "'static' ile bildirilen üye işlevi açık bir 'this' parametresine sahip olamaz", + "açık 'this' parametresi, bildirilen ilk parametre olmalıdır", + "burada 'this' kullanımına izin verilmiyor", + "açık 'this' içeren karşılaştırma işlevi varsayılan olarak ayarlanamaz", + "açık 'this' işlevi bir seçici işleneni gerektirir", + "'if consteval' ve 'if not consteval' bu modda standart değil", + "lambda bildirimcisinde '()' atlanması bu modda standart değil", + "lambda parametre listesi atlandığında trailing-requires-clause’a izin verilmez", + "%sq modülünün geçersiz bölümü istendi", + "%sq1 modülünün tanımsız bölümü (%sq2 olduğu düşünülüyor) istendi", + "%sq1 modülünün %d1 dosya konumu (%d2 göreli konumu) boş olan %sq2 bölümü için istekte bulundu", + "%sq1 modülünün %d1 dosya konumu (%d2 göreli konumu) bölümün başlangıcından önce gelen %sq2 bölümü için istekte bulundu", + "%sq1 modülünün %d1 dosya konumu (%d2 göreli konumu) bölümünün sonundan taşan %sq2 bölümü için istekte bulundu", + "%sq1 modülünün %d1 dosya konumu (%d2 göreli konumu) bölüm öğeleriyle yanlış hizalanan %sq2 bölümü için istekte bulundu", + "%sq alt alanından", + "%sq bölümündeki %d1 öğesinden (%d2 dosya konumu, %d3 göreli konumu)", + "lambda öznitelikleri burada standart dışı", + "%sq tanımlayıcısı görsel olarak %p gibi görünen tanımlayıcıyla karıştırılabilir", + "bu açıklama, şüpheli Unicode biçimlendirme denetim karakterleri içeriyor", + "bu dize beklenmeyen çalışma zamanı davranışına neden olabilecek Unicode biçimlendirme denetim karakterleri içeriyor", + "%d1 modülü işlenirken %sq1 gizlenen uyarıyla karşılaşıldı", + "%d1 modülü işlenirken %sq1 gizlenen uyarıyla karşılaşıldı", + "%d1 modülü işlenirken %sq1 gizlenen hatayla karşılaşıldı", + "%d1 modülü işlenirken %sq1 gizlenen hatayla karşılaşıldı", + "dahil", + "gizlendi", + "sanal üye işlevi açık bir 'this' parametresine sahip olamaz", + "açık 'this' işlevine ait adresin alınabilmesi için tam ad gerekir", + "açık 'this' işlevine ait adresin oluşturulabilmesi için '&' operatörü gerekir", + "sabit değerli dize, esnek bir dizi üyesini başlatmak için kullanılamaz", + "%sq işlevine ait tanımın IFC gösterimi geçersiz", + "örtük ‘this’ parametresini kaldırmak için bir düzeltme yapıldı", + "parametreleri belirtmek için UniLevel IFC grafiği kullanılmadı", + "%d1 parametre IFC parametre tanım grafiği tarafından belirtilirken %d2 parametre IFC bildirimi tarafından belirtildi", + "%d1 parametre IFC parametre tanım grafiği tarafından belirtilirken %d2 parametre IFC bildirimi tarafından belirtildi", + "%d1 parametre IFC parametre tanım grafiği tarafından belirtilirken %d2 parametre IFC bildirimi tarafından belirtildi", + "%sq işlevine ait tanımın IFC gösterimi eksik" ] \ No newline at end of file diff --git a/Extension/bin/messages/zh-cn/messages.json b/Extension/bin/messages/zh-cn/messages.json index 373151a94d..0ec52a22ca 100644 --- a/Extension/bin/messages/zh-cn/messages.json +++ b/Extension/bin/messages/zh-cn/messages.json @@ -838,7 +838,7 @@ "正在返回对局部变量的引用", "显式类型的省略是非标准的(假定“int”)", "有多个部分专用化与 %n 的模板参数列表匹配", - "%no", + "%nod", "主模板的声明中不允许使用模板参数列表", "部分专用化不能带有默认模板参数", "%n1 未在 %n2 的模板参数列表中使用或无法从中推导", @@ -3402,5 +3402,48 @@ "全局模块拥有的声明与命名模块拥有的 %nd 冲突", "“malloc”属性的第一个参数必须是函数", "无法捕获 %nod", - "无法捕获“this”" + "无法捕获“this”", + "已在 consteval 上下文中", + "'if consteval' 和 'if not consteval' 需要大括号从属语句", + "'if consteval' 和 'if not consteval' 在非 constexpr 函数中无意义", + "不允许将控制传输到 'if consteval' 或 'if not consteval' 语句", + "常数计算无法通过具有静态或线程存储持续时间的变量的声明", + "在具有显式 'this' 参数的 lambda 上,不允许使用可变限定符", + "使用 'static' 声明的成员函数不能具有显式 'this' 参数", + "显式 'this' 参数必须是第一个声明的参数", + "此处不允许使用 'this'", + "不能默认使用具有显式 'this' 的比较函数", + "显式 'this' 函数需要选择器操作数", + "在此模式下,'if consteval' 和 'if not consteval' 不标准", + "在此模式下,在 lambda 声明符中省略 '()' 为不标准操作", + "当省略 lambda 参数列表时,不允许使用尾随 Requires 子句", + "已请求模块 %sq 无效分区", + "已请求模块 %sq1 未定义分区(被认为是 %sq2)", + "已请求模块 %sq1 文件位置 %d1 (相对位置 %d2),针对分区 %sq2 请求 - 为空", + "已请求模块 %sq1 文件位置 %d1 (相对位置 %d2),针对分区 %sq2 请求 - 分区开始前", + "已请求模块 %sq1 文件位置 %d1 (相对位置 %d2),针对分区 %sq2 请求 - 溢出其分区的末尾", + "已请求模块 %sq1 文件位置 %d1 (相对位置 %d2),针对分区 %sq2 - 与其分区元素不一致", + "从子字段 %sq", + "从分区 %sq 元素 %d1 (文件位置 %d2,相对位置 %d3)", + "lambda 属性在此处为非标准属性", + "标识符 %sq 可能与显示 %p 的视觉上相似的标识符混淆", + "此注释包含可疑的 Unicode 格式控制字符", + "此字符串包含可能导致意外运行时行为的 Unicode 格式控制字符", + "遇到 %d1 条已抑制警告(处理模块 %sq1 时)", + "遇到 %d1 条已抑制警告(处理模块 %sq1 时)", + "遇到 %d1 条已抑制错误(处理模块 %sq1 时)", + "遇到 %d1 条已抑制错误(处理模块 %sq1 时)", + "包括", + "已抑制", + "虚拟成员函数不能具有显式 'this' 参数", + "获取显式 'this' 函数的地址需要限定名称", + "形成显式 'this' 函数的地址需要 '&' 运算符", + "字符串文本无法用于初始化灵活数组成员", + "函数 %sq 定义的 IFC 表示形式无效", + "已进行更正以删除隐式 “this” 参数", + "未将 UniLevel IFC 图表用于指定参数", + "%d1 参数由 IFC 参数定义图表指定,而 %d2 参数由 IFC 声明指定", + "%d1 参数由 IFC 参数定义图表指定,而 %d2 参数由 IFC 声明指定", + "%d1 参数由 IFC 参数定义图表指定,而 %d2 参数由 IFC 声明指定", + "缺少函数 %sq 定义的 IFC 表示形式" ] \ No newline at end of file diff --git a/Extension/bin/messages/zh-tw/messages.json b/Extension/bin/messages/zh-tw/messages.json index 8c145c551e..07a429f5d2 100644 --- a/Extension/bin/messages/zh-tw/messages.json +++ b/Extension/bin/messages/zh-tw/messages.json @@ -838,7 +838,7 @@ "傳回區域變數的參考", "省略明確類型並非標準做法 (假設為 'int')", "有一個以上的部分特製化符合 %n 的樣板引數清單", - "%no", + "%nod", "主要樣板的宣告不能有樣板引數清單", "部分特製化不可有預設的樣板引數", "%n1 未使用於或推算自 %n2 的引數清單", @@ -3402,5 +3402,48 @@ "由全域模組所擁有的宣告與已命名模組所擁有的 %nd 衝突", "'malloc' 屬性的第一個引數必須是函式", "無法擷取 %nod", - "無法擷取 'this'" + "無法擷取 'this'", + "已在 consteval 內容中", + "'if consteval' 和 'if not consteval' 需要大括弧相依陳述句", + "'if consteval' 和 'if not consteval' 在非 constexpr 函數中沒有意義", + "不允許將控制項傳送至 'if consteval' 或 'if not consteval' 陳述式", + "constant-evaluation 無法通過具有靜態或執行緒儲存持續時間之變數的宣告", + "在具有明確 'this' 參數的 Lambda 上不允許可變動的限定詞", + "以 'static' 宣告的成員函式不能有明確的 'this' 參數", + "明確 'this' 參數必須是第一個宣告的參數", + "這裡不允許 'this'", + "無法預設具有明確 'this' 的比較函數", + "明確 'this' 函數需要選取器運算元", + "在此模式中,'if consteval' 和 'if not consteval' 不是標準", + "在此模式中,在 Lambda 宣告子中省略 '()' 並非標準", + "省略 Lambda 參數清單時,不允許後置 Requires 子句", + "模組 %sq 要求的分割區無效", + "模組 %sq1 已要求未定義的分割區 (相信是 %sq)", + "模組 %sq1 檔案位置 %d1 (相對位置 %d2) 要求分割區 %sq2 - 是空的", + "模組 %sq1 檔案位置 %d1 (相對位置 %d2) 要求分割區 %sq2 - 在分割區開始之前", + "模組 %sq1 檔案位置 %d1 (相對位置 %d2) 要求分割區 %sq2 - 溢出其分割區的結尾", + "模組 %sq1 檔案位置 %d1 (相對位置 %d2) 要求分割區 %sq2 - 與其分割區元素對齊錯誤", + "從子欄位 %sq", + "從分割區 %sq 元素 %d1 (檔案位置 %d2,相對位置 %d3)", + "Lambda 屬性在此為非標準", + "識別碼 %sq 可能會與 %p 上視覺類似的識別碼混淆", + "此註解包含可疑的 Unicode 格式化控制字元", + "此字串包含 Unicode 格式化控制字元,可能會導致非預期的執行時間行為", + "%d1 抑制警告在處理模組 %sq1 時發生", + "%d1 抑制警告在處理模組 %sq1 時發生", + "%d1 抑制錯誤在處理模組 %sq1 時發生", + "%d1 抑制錯誤在處理模組 %sq1 時發生", + "包括", + "抑制", + "虛擬成員函式不能有明確的 'this' 參數", + "取得明確 'this' 函數的位址需要限定名稱", + "形成明確 'this' 函數的位址需要 '&' 運算子", + "字串常值不能用來初始化彈性陣列成員", + "函數 %sq 定義的 IFC 表示法無效", + "已進行更正以捨棄隱含的 'this' 參數", + "UniLevel IFC 圖表未用來指定參數", + "IFC 參數定義圖表指定了 %d1 個參數,而 IFC 宣告則指定了 %d2 個參數", + "IFC 參數定義圖表指定了 %d1 個參數,而 IFC 宣告則指定了 %d2 個參數", + "IFC 參數定義圖表指定了 %d1 個參數,而 IFC 宣告則指定了 %d2 個參數", + "遺漏函數 %sq 定義的 IFC 標記法" ] \ No newline at end of file diff --git a/Extension/c_cpp_properties.schema.json b/Extension/c_cpp_properties.schema.json index a1619a9c18..3497abf8c9 100644 --- a/Extension/c_cpp_properties.schema.json +++ b/Extension/c_cpp_properties.schema.json @@ -88,6 +88,10 @@ "type": "string", "pattern": "^\\d{2}\\.\\d{1}\\.\\d{5}\\.\\d{1}$|^8\\.1$" }, + "dotConfig": { + "description": "A path to a .config file created by Kconfig system. Kconfig system generates a file with all the defines to build a project. Examples of projects that use Kconfig system are the Linux Kernel and NuttX RTOS.", + "type": "string" + }, "defines": { "markdownDescription": "A list of preprocessor definitions for the IntelliSense engine to use while parsing files. Optionally, use `=` to set a value, e.g. `VERSION=1`.", "descriptionHint": "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered.", diff --git a/Extension/gulpfile.js b/Extension/gulpfile.js index 1ec9783d73..085705e6a5 100644 --- a/Extension/gulpfile.js +++ b/Extension/gulpfile.js @@ -26,7 +26,8 @@ const https = require('https'); // Patterns to find HTML files const htmlFilesPatterns = [ - "ui/**/*.html" + "ui/**/*.html", + "Reinstalling the Extension.md" ]; // HTML files for walkthroughs are handled differently, as localization support @@ -370,11 +371,6 @@ const generateLocalizedHtmlFiles = () => { contents: Buffer.from(newContent, 'utf8') })); }); - // Put the original in an 'en' directory. - this.queue(new vinyl({ - path: path.join("html/en", relativePath), - contents: file.contents - })); }); }; diff --git a/Extension/i18n/chs/Reinstalling the Extension.md.i18n.json b/Extension/i18n/chs/Reinstalling the Extension.md.i18n.json new file mode 100644 index 0000000000..21cf7b6fa2 --- /dev/null +++ b/Extension/i18n/chs/Reinstalling the Extension.md.i18n.json @@ -0,0 +1,21 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "incompatible.extension.heading": "C/C++ 扩展二进制文件不兼容或不匹配", + "incompat.extension.text1": "C/C++ 扩展包括本机二进制文件。", + "incompat.extension.text2": "通过 VS Code 中的市场 UI 安装时,应包含正确的本机二进制文件。如果检测到不兼容的二进制文件,并且已通过 VS Code 中的市场 UI 安装 C/C++ 扩展,则 {0}。", + "bug.report.link.title": "请报告问题", + "reinstalling.extension.heading": "正在重新安装 C/C++ 扩展", + "reinstall.extension.text1": "重新安装等效版本的扩展时,VS Code 可能重用现有的扩展目录。如果要在重新安装 C/C++ 扩展时放置发生这种情况,可能需要先删除现有的扩展目录。", + "reinstall.extension.text2": "可在用户目录下以下路径之一的下面找到已安装的扩展目录(Windows 上的 `%USERPROFILE%` 或 Linux 和 macOS 上的 `$HOME`)", + "reinstall.extension.text3": "在远程连接中:", + "reinstall.extension.text4": "已安装的 C/C++ 扩展目录的示例路径:", + "reinstall.extension.text5": "在 Windows 上:", + "reinstall.extension.text6": "在 Linux 上:", + "reinstall.extension.text7": "然后通过 VS Code 中的市场 UI 重新安装。", + "reinstall.extension.text8": "如果 VS Code 无法部署扩展的正确版本,则可以 {0} 并使用 VS Code 中市场 UI 内 “...” 菜单下的 `从 VSIX... 安装` 选项安装系统的正确 VSIX。", + "download.vsix.link.title": "已从 VS Code 市场网站下载" +} \ No newline at end of file diff --git a/Extension/i18n/chs/c_cpp_properties.schema.json.i18n.json b/Extension/i18n/chs/c_cpp_properties.schema.json.i18n.json index e3f5b597c4..3ba02257d4 100644 --- a/Extension/i18n/chs/c_cpp_properties.schema.json.i18n.json +++ b/Extension/i18n/chs/c_cpp_properties.schema.json.i18n.json @@ -13,6 +13,7 @@ "c_cpp_properties.schema.json.definitions.configurations.items.properties.includePath": "搜索包含的标头时,IntelliSense 引擎要使用的路径列表。在这些路径上进行搜索为非递归搜索。指定 `**` 以指示递归搜索。例如,`${workspaceFolder}/**` 将搜索所有子目录,而 `${workspaceFolder}` 则不会。通常,此操作不应包含系统包含项;请改为设置 `C_Cpp.default.compilerPath`。", "c_cpp_properties.schema.json.definitions.configurations.items.properties.macFrameworkPath": "Intellisense 引擎在 Mac 框架中搜索包含的标头时要使用的路径的列表。仅在 Mac 配置中受支持。", "c_cpp_properties.schema.json.definitions.configurations.items.properties.windowsSdkVersion": "要在 Windows 上使用的 Windows SDK 包含路径的版本,例如 `10.0.17134.0`。", + "c_cpp_properties.schema.json.definitions.configurations.items.properties.dotConfig": "Kconfig 系统创建的 .config 文件的路径。Kconfig 系统生成包含所有定义的文件以生成项目。使用 Kconfig 系统的项目示例包括 Linux 内核和 NuttX RTOS。", "c_cpp_properties.schema.json.definitions.configurations.items.properties.defines": "分析文件时要使用的 IntelliSense 引擎的预处理器定义列表。(可选)使用 `=` 设置值,例如 `VERSION=1`。", "c_cpp_properties.schema.json.definitions.configurations.items.properties.intelliSenseMode": "要使用的、映射到 MSVC、gcc 或 Clang 的平台和体系结构变体的 IntelliSense 模式。如果未设置或设置为`${default}`,则扩展将为该平台选择默认值。Windows 默认为 `windows-msvc-x64`,Linux 默认为`linux-gcc-x64`,macOS 默认为 `macos-clang-x64`。仅指定 `<编译器>-<体系结构>` 变体(例如 `gcc-x64`)的 IntelliSense 模式为旧模式,且会根据主机平台上的 `<平台>-<编译器>-<体系结构>` 变体进行自动转换。", "c_cpp_properties.schema.json.definitions.configurations.items.properties.forcedInclude": "应在翻译单元中包括在任何包含文件之前的文件的列表。", diff --git a/Extension/i18n/chs/package.i18n.json b/Extension/i18n/chs/package.i18n.json index 7617ac64e1..4f087cde84 100644 --- a/Extension/i18n/chs/package.i18n.json +++ b/Extension/i18n/chs/package.i18n.json @@ -16,7 +16,6 @@ "c_cpp.command.toggleDimInactiveRegions.title": "切换非活动区域着色", "c_cpp.command.resetDatabase.title": "重置 IntelliSense 数据库", "c_cpp.command.takeSurvey.title": "参加调查", - "c_cpp.command.buildAndDebugActiveFile.title": "生成和调试活动文件", "c_cpp.command.restartIntelliSenseForFile.title": "重启活动文件的 IntelliSense", "c_cpp.command.logDiagnostics.title": "日志诊断", "c_cpp.command.referencesViewGroupByType.title": "按引用类型分组", @@ -31,6 +30,8 @@ "c_cpp.command.RunCodeAnalysisOnOpenFiles.title": "在打开的文件上运行 Code Analysis", "c_cpp.command.RunCodeAnalysisOnAllFiles.title": "在所有文件上运行 Code Analysis", "c_cpp.command.ClearCodeAnalysisSquiggles.title": "清除 Code Analysis 波形曲线", + "c_cpp.command.BuildAndDebugFile.title": "调试 C/C++ 文件", + "c_cpp.command.BuildAndRunFile.title": "运行 C/C++ 文件", "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "用于语言服务处理的最大并发线程数。该值是一个提示,且不能始终使用。默认值 `null` (空)使用可用的逻辑处理器数。", "c_cpp.configuration.maxCachedProcesses.markdownDescription": "用于语言服务处理的最大缓存进程数。默认值 `null` (空)使用可用逻辑处理器数的两倍。", "c_cpp.configuration.maxMemory.markdownDescription": "可用于语言服务处理的最大内存(以 MB 为单位)。超过此内存使用量后,将缓存且并发运行较少的进程。默认值 `null` (空)使用系统的空闲内存。", @@ -200,6 +201,7 @@ "c_cpp.configuration.default.customConfigurationVariables.markdownDescription": "未设置 `customConfigurationVariables` 时要在配置中使用的值,或 `${default}` 在 `customConfigurationVariables` 中作为键存在时要插入的值。", "c_cpp.configuration.updateChannel.markdownDescription": "设置为 `Insiders` 以自动下载并安装扩展的最新预览体验版本,其中包含即将推出的功能和 bug 修复。", "c_cpp.configuration.updateChannel.deprecationMessage": "此设置已弃用。预发行版扩展现在可通过市场获得。", + "c_cpp.configuration.default.dotConfig.markdownDescription": "未指定 `dotConfig` 时要在配置中使用的值,或 `dotConfig` 中存在 `${default}` 时要插入的值。", "c_cpp.configuration.experimentalFeatures.description": "控制“实验性”功能是否可用。", "c_cpp.configuration.suggestSnippets.markdownDescription": "如果为 `true`,则由语言服务器提供片段。", "c_cpp.configuration.enhancedColorization.markdownDescription": "如果启用,则根据 IntelliSense 对代码进行着色。仅当 `#C_Cpp.intelliSenseEngine#` 设置为 `Default` 时,此设置才适用。", @@ -214,6 +216,7 @@ "c_cpp.configuration.debugger.useBacktickCommandSubstitution.markdownDescription": "如果为 `true`,则调试程序 shell 命令替换将使用过时的反引号 ``(`)``。", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: 其他引用结果。", "c_cpp.contributes.viewsWelcome.contents": "要了解有关 launch.json 的信息,请参阅 [配置 C/C++ 调试](https://code.visualstudio.com/docs/cpp/launch-json-reference)。", + "c_cpp.configuration.debugShortcut.description": "在 C++ 文件的编辑器标题栏中显示“运行和调试播放”按钮", "c_cpp.debuggers.pipeTransport.description": "如果存在,这会指示调试程序使用其他可执行文件作为管道来连接到远程计算机,此管道将在 VS Code 和已启用 MI 的调试程序后端可执行文件(如 gdb)之间中继标准输入/输入。", "c_cpp.debuggers.pipeTransport.default.pipeProgram": "输入管道程序名称的完全限定的路径,例如 '/usr/bin/ssh'。", "c_cpp.debuggers.pipeTransport.default.debuggerPath": "目标计算机上调试程序的完整路径,例如 /usr/bin/gdb。", diff --git a/Extension/i18n/chs/src/Debugger/configurationProvider.i18n.json b/Extension/i18n/chs/src/Debugger/configurationProvider.i18n.json index 6bfbebe670..ab1eb4ae2f 100644 --- a/Extension/i18n/chs/src/Debugger/configurationProvider.i18n.json +++ b/Extension/i18n/chs/src/Debugger/configurationProvider.i18n.json @@ -6,23 +6,26 @@ { "default.configuration.menuitem": "默认配置", "select.configuration": "选择配置", - "debug.configuration.selection.canceled": "已取消调试配置选择", - "cl.exe.not.available": "仅当从 VS 开发人员命令提示符处运行 VS Code 时,{0} 生成和调试才可用。", - "miDebuggerPath.not.available": "miDebuggerPath 不存在: {0}。是否安装了调试程序?", "debugger.deprecated.config": "密钥“{0}”已弃用。请改用“{1}”。", "debugger.not.available": "类型为“{0}”的调试程序仅在 Windows 上可用。在当前 OS 平台上使用类型“{1}”。", "lldb.framework.install.xcode": "详细信息", "lldb.framework.not.found": "找不到用于 lldb-mi 的 \"LLDB.framework\"。请安装 XCode 或 XCode 命令行工具。", "debugger.launchConfig": "启动配置:", + "pre.Launch.Task": "preLaunchTask: {0}", + "build.and.debug.active.file": "生成和调试活动文件", + "cl.exe.not.available": "仅当从 VS 开发人员命令提示符处运行 VS Code 时,{0} 生成和调试才可用。", "lldb.find.failed": "缺少 lldb-mi 可执行文件的依赖项“{0}”。", "lldb.search.paths": "搜索范围:", "lldb.install.help": "要解决此问题,请通过 Apple App Store 安装 XCode,或通过在终端窗口运行“{0}”来安装 XCode 命令行工具。", - "envfale.failed": "未能使用 {0}。原因: {1}", + "envfile.failed": "未能使用 {0}。原因: {1}", "replacing.sourcepath": "正在将 {0}“{1}”替换为“{2}”。", "replacing.targetpath": "正在将 {0}“{1}”替换为“{2}”。", "replacing.editorPath": "正在将 {0}“{1}”替换为“{2}”。", "resolving.variables.in.sourcefilemap": "正在解析 {0} 中的变量...", "open.envfile": "打开 {0}", + "cannot.build.non.cpp": "无法生成和调试,因为活动文件不是 C 或 C++ 源文件。", + "no.compiler.found": "未找到编译程序", + "select.debug.configuration": "选择调试配置", "unexpected.os": "意外的 OS 类型", "path.to.pipe.program": "管道程序的完整路径,如 {0}", "enable.pretty.printing": "为 {0} 启用整齐打印", diff --git a/Extension/i18n/chs/src/LanguageServer/extension.i18n.json b/Extension/i18n/chs/src/LanguageServer/extension.i18n.json index ef41c21abe..3b62625f6a 100644 --- a/Extension/i18n/chs/src/LanguageServer/extension.i18n.json +++ b/Extension/i18n/chs/src/LanguageServer/extension.i18n.json @@ -6,6 +6,10 @@ { "learn.how.to.install.a.library": "了解如何使用 vcpkg 为此标头安装库", "copy.vcpkg.command": "将用于安装“{0}”的 vcpkg 命令复制到剪贴板", + "more.info.button": "详细信息", + "ignore.button": "忽略", + "vsix.platform.incompatible": "已安装的 C/C++ 扩展与系统不匹配。", + "vsix.platform.mismatching": "已安装的 C/C++ 扩展与系统兼容,但与系统不匹配。", "client.not.found": "未找到客户端", "configuration.select.first": "首先打开一个文件夹以选择配置", "configuration.provider.select.first": "首先打开一个文件夹以选择配置提供程序", diff --git a/Extension/i18n/chs/src/nativeStrings.i18n.json b/Extension/i18n/chs/src/nativeStrings.i18n.json index 8105b200af..a45ed33126 100644 --- a/Extension/i18n/chs/src/nativeStrings.i18n.json +++ b/Extension/i18n/chs/src/nativeStrings.i18n.json @@ -81,7 +81,7 @@ "error_squiggles_enabled_if_all_headers_resolve": "如果已解决所有标头依赖项,则启用错误波形曲线。", "replaced_placeholder_file_record": "已替换占位符文件记录", "tag_parsing_file": "标记分析文件: {0}", - "tag_parsing_error": "标记分析遇到错误,但这可能不影响操作。如果在文件中找不到符号,请告诉我们: {0}", + "tag_parsing_error": "标记分析错误(除非找不到符号,否则可以忽略此错误):", "reset_timestamp_for": "重置 {0} 的时间戳", "remove_file_failed": "未能删除文件: {0}", "regex_parse_error": "Regex 分析错误 - vscode 模式: {0},regex: {1},错误消息: {2}", @@ -216,5 +216,8 @@ "inline_macro": "内联宏", "unable_to_access_browse_database": "无法访问浏览数据库。({0})", "default_compiler_path_modified_explicit_intellisense_mode": "IntelliSenseMode 已更改,因为它与检测到的编译器不匹配。请考虑改为设置 \"compilerPath\"。将 \"compilerPath\" 设为 \"\" 以禁用系统包含和定义的检测。", - "clear_code_analysis_squiggles": "清除代码分析波形曲线" + "clear_code_analysis_squiggles": "清除代码分析波形曲线", + "multiple_locations_note": "(多个位置)", + "folder_tag": "文件夹", + "file_tag": "文件" } \ No newline at end of file diff --git a/Extension/i18n/chs/ui/settings.html.i18n.json b/Extension/i18n/chs/ui/settings.html.i18n.json index 737773b3fe..66b0b18f9d 100644 --- a/Extension/i18n/chs/ui/settings.html.i18n.json +++ b/Extension/i18n/chs/ui/settings.html.i18n.json @@ -52,6 +52,8 @@ "forced.include": "强制包含", "forced.include.description": "在处理源文件中的任何其他字符之前应包含的文件的列表。按列出的顺序包含文件。", "one.file.per.line": "每行一个文件。", + "dot.config": "点配置", + "dot.config.description": "Kconfig 系统创建的 .config 文件的路径。Kconfig 系统生成包含所有定义的文件以生成项目。使用 Kconfig 系统的项目示例包括 Linux 内核和 NuttX RTOS。", "compile.commands": "编译命令", "compile.commands.description": "工作区的 {0} 文件的完整路径。将使用在此文件中所发现的包含路径和定义,而不是为 {1} 和 {2} 设置设定的值。如果编译命令数据库不包含与你在编辑器中打开的文件对应的翻译单元条目,则将显示一条警告消息,并且扩展将改用 {3} 和 {4} 设置。", "merge.configurations": "合并配置", diff --git a/Extension/i18n/cht/Reinstalling the Extension.md.i18n.json b/Extension/i18n/cht/Reinstalling the Extension.md.i18n.json new file mode 100644 index 0000000000..dc25f500a9 --- /dev/null +++ b/Extension/i18n/cht/Reinstalling the Extension.md.i18n.json @@ -0,0 +1,21 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "incompatible.extension.heading": "不相容或不相符的 C/C++ 延伸模組二進位檔", + "incompat.extension.text1": "C/C++ 延伸模組包含原生二進位檔。", + "incompat.extension.text2": "在 VS Code 中透過市集 UI 安裝時,應包含正確的原生二進位檔。如果偵測到不相容的二進位檔,並且 C/C++ 延伸模組已透過 VS Code 中的市集 UI 安裝,{0}。", + "bug.report.link.title": "請回報問題", + "reinstalling.extension.heading": "重新安裝 C/C++ 延伸模組", + "reinstall.extension.text1": "重新安裝延伸模組的對等版本時,VS Code 可能會重複使用現有延伸模組目錄。為防止在重新安裝 C/C++ 延伸模組時發生這種情況,可能需要先删除現有延伸模組目錄。", + "reinstall.extension.text2": "可在使用者目錄下的以下路徑之一 (Windows 上為 `%USERPROFILE%`,Linux 和 macOS 上為 `$HOME`) 下找到安裝的延伸模組目錄", + "reinstall.extension.text3": "在遠端連線上:", + "reinstall.extension.text4": "安裝的 C/C++ 延伸模組目錄的範例路徑:", + "reinstall.extension.text5": "在 Windows 上:", + "reinstall.extension.text6": "在 Linux 上:", + "reinstall.extension.text7": "然後藉由 VS Code 中的市集 UI 重新安裝。", + "reinstall.extension.text8": "如果 VS Code 未能部署正確版本的延伸模組,則您系統的正確 VSIX 可能是 {0},它是使用 VS Code 中市集 UI '...' 功能表下的 `從 VSIX 安裝...` 選項來進行安裝的。", + "download.vsix.link.title": "從 VS Code 市集網站下載" +} \ No newline at end of file diff --git a/Extension/i18n/cht/c_cpp_properties.schema.json.i18n.json b/Extension/i18n/cht/c_cpp_properties.schema.json.i18n.json index 459184ca0a..f7d1b3e300 100644 --- a/Extension/i18n/cht/c_cpp_properties.schema.json.i18n.json +++ b/Extension/i18n/cht/c_cpp_properties.schema.json.i18n.json @@ -13,6 +13,7 @@ "c_cpp_properties.schema.json.definitions.configurations.items.properties.includePath": "IntelliSense 引擎在搜尋包含的標頭時使用的路徑清單。在這些路徑上的搜尋不會遞迴。請指定 `**` 以表示遞迴搜尋。例如 `${workspaceFolder}/**` 會搜尋所有子目錄,而 `${workspaceFolder}` 不會。此路徑通常不應包含系統 include; 請改為設定 `C_Cpp.default.compilerPath`。", "c_cpp_properties.schema.json.definitions.configurations.items.properties.macFrameworkPath": "供 Intellisense 引擎在 Mac 架構中搜尋包含的標頭時使用的路徑清單。僅支援用於 Mac 組態。", "c_cpp_properties.schema.json.definitions.configurations.items.properties.windowsSdkVersion": "要在 Windows 上使用的 Windows SDK 包含路徑版本,例如 `10.0.17134.0`。", + "c_cpp_properties.schema.json.definitions.configurations.items.properties.dotConfig": "Kconfig 系統所建立之 .config 檔案的路徑。Kconfig 系統會產生具有建置專案之所有定義的檔案。使用 Kconfig 系統的專案範例為 Linux 核心與 NuttX RTOS。", "c_cpp_properties.schema.json.definitions.configurations.items.properties.defines": "剖析檔案時,IntelliSense 引擎要使用的前置處理器定義清單。您可使用 `=` 來設定值,例如 `VERSION=1`。", "c_cpp_properties.schema.json.definitions.configurations.items.properties.intelliSenseMode": "要使用的 IntelliSense 模式 (對應到 MSVC、gcc 或 Clang 的平台及架構變體)。如果未設定或設為 `${default}`,延伸模組會選擇該平台的預設。Windows 預設為 `windows-msvc-x64`、Linux 預設為 `linux-gcc-x64`、macOS 預設為 `macos-clang-x64`。僅指定 `<編譯器>-<結構>` 變體 (例如 `gcc-x64`) 的 IntelliSense 模式即為舊版模式,會依據主機平台自動轉換為 `<平台>-<編譯器>-<結構>` 變體。", "c_cpp_properties.schema.json.definitions.configurations.items.properties.forcedInclude": "應包含在編譯單位中任何 include 檔案之前的檔案清單。", diff --git a/Extension/i18n/cht/package.i18n.json b/Extension/i18n/cht/package.i18n.json index ecb3f48cf5..d54c35b221 100644 --- a/Extension/i18n/cht/package.i18n.json +++ b/Extension/i18n/cht/package.i18n.json @@ -16,7 +16,6 @@ "c_cpp.command.toggleDimInactiveRegions.title": "切換非使用中的區域著色", "c_cpp.command.resetDatabase.title": "重設 IntelliSense 資料庫", "c_cpp.command.takeSurvey.title": "填寫問卷", - "c_cpp.command.buildAndDebugActiveFile.title": "組建及偵錯使用中的檔案", "c_cpp.command.restartIntelliSenseForFile.title": "為使用中檔案重新啟動 IntelliSense", "c_cpp.command.logDiagnostics.title": "記錄診斷", "c_cpp.command.referencesViewGroupByType.title": "依參考型別分組", @@ -31,6 +30,8 @@ "c_cpp.command.RunCodeAnalysisOnOpenFiles.title": "在開啟檔案上執行程式碼分析", "c_cpp.command.RunCodeAnalysisOnAllFiles.title": "在所有檔案上執行程式碼分析", "c_cpp.command.ClearCodeAnalysisSquiggles.title": "清除程式碼分析曲線", + "c_cpp.command.BuildAndDebugFile.title": "偵錯 C/C++ 檔案", + "c_cpp.command.BuildAndRunFile.title": "執行 C/C++ 檔案", "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "用於語言服務處理的並行執行緒數目上限。該值是提示,且可能不會一律使用。預設的 `null` (空白) 會使用可用的邏輯處理器數目。", "c_cpp.configuration.maxCachedProcesses.markdownDescription": "用於語言服務處理的快取處理序數目上限。預設的 `null` (空白) 使用的邏輯處理器數目是可用邏輯處理器的兩倍。", "c_cpp.configuration.maxMemory.markdownDescription": "記憶體上限 (MB) 可供語言服務處理。超過此記憶體使用量之後,同時快取及執行的處理序將會減少。預設的 `null` (空白) 會使用系統的可用記憶體。", @@ -200,6 +201,7 @@ "c_cpp.configuration.default.customConfigurationVariables.markdownDescription": "當未設定 `customConfigurationVariables` 時要在組態中使用的值,或當 `${default}` 在 `customConfigurationVariables` 中顯示為索引鍵時要插入的值。", "c_cpp.configuration.updateChannel.markdownDescription": "設定為 `Insiders` 以自動下載並安裝最新的延伸模組測試人員組建,其中包括即將推出的功能和錯誤修正。", "c_cpp.configuration.updateChannel.deprecationMessage": "此設定已過時。發行前版本擴充功能現在可透過 Marketplace 取得。", + "c_cpp.configuration.default.dotConfig.markdownDescription": "當 `dotConfig` 未指定時,要在設定中使用的值,或 `dotConfig` 中有 `${default}` 時要插入的值。", "c_cpp.configuration.experimentalFeatures.description": "控制「實驗性」功能是否可用。", "c_cpp.configuration.suggestSnippets.markdownDescription": "若為 `true`,則由語言伺服器提供程式碼片段。", "c_cpp.configuration.enhancedColorization.markdownDescription": "若啟用,將會依據 IntelliSense 顯示彩色的程式碼。僅當 `#C_Cpp.intelliSenseEngine#` 設為 `Default` 時,才適用此設定。", @@ -214,6 +216,7 @@ "c_cpp.configuration.debugger.useBacktickCommandSubstitution.markdownDescription": "若為 `true`,偵錯工具殼層命令替代將會使用已淘汰的反引號 ``(`)``。", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: 其他參考結果。", "c_cpp.contributes.viewsWelcome.contents": "如需深入了解 launch.json,請參閱 [設定 C/C++ 偵錯](https://code.visualstudio.com/docs/cpp/launch-json-reference)。", + "c_cpp.configuration.debugShortcut.description": "在編輯器標題列中顯示 C++ 檔案的 [執行與偵錯] 進行按鈕", "c_cpp.debuggers.pipeTransport.description": "出現時,會指示偵錯工具使用另一個可執行檔來連線至遠端電腦,該管道會在 VS Code 與 MI 啟用偵錯工具後端可執行檔之間傳送標準輸入/輸出 (例如 gdb)。", "c_cpp.debuggers.pipeTransport.default.pipeProgram": "輸入管道程式名稱的完整路徑,例如 '/usr/bin/ssh'。", "c_cpp.debuggers.pipeTransport.default.debuggerPath": "目標機器的偵錯工具完整路徑,例如 /use/bin/gdb。", diff --git a/Extension/i18n/cht/src/Debugger/configurationProvider.i18n.json b/Extension/i18n/cht/src/Debugger/configurationProvider.i18n.json index cc179cba06..76d8d5da62 100644 --- a/Extension/i18n/cht/src/Debugger/configurationProvider.i18n.json +++ b/Extension/i18n/cht/src/Debugger/configurationProvider.i18n.json @@ -6,23 +6,26 @@ { "default.configuration.menuitem": "預設組態", "select.configuration": "選取組態", - "debug.configuration.selection.canceled": "已取消偵錯設定選取範圍", - "cl.exe.not.available": "只有從 VS 的開發人員命令提示字元執行 VS Code 時,才可使用 {0} 組建和偵錯。", - "miDebuggerPath.not.available": "miDebuggerPath 不存在: {0}。是否已安裝偵錯工具?", "debugger.deprecated.config": "金鑰 '{0}' 已淘汰。請改用 '{1}'。", "debugger.not.available": "只能在 Windows 上使用類型為 '{0}' 的偵錯工具。在目前的 OS 平台上使用類型 '{1}'。", "lldb.framework.install.xcode": "更多資訊", "lldb.framework.not.found": "找不到 lldb-mi 的 'LLDB.framework'。請安裝 XCode 或 XCode 命令列工具。", "debugger.launchConfig": "啟動設定:", + "pre.Launch.Task": "preLaunchTask: {0}", + "build.and.debug.active.file": "建置及偵錯使用中的檔案", + "cl.exe.not.available": "只有從 VS 的開發人員命令提示字元執行 VS Code 時,才可使用 {0} 組建和偵錯。", "lldb.find.failed": "缺少 lldb-mi 可執行檔的相依性 '{0}'。", "lldb.search.paths": "已在下列位置中搜尋:", "lldb.install.help": "若要解決此問題,請透過 Apple App Store 安裝 XCode,或在終端機視窗中執行 '{0}' 以安裝 XCode 命令列工具。", - "envfale.failed": "無法使用 {0}。原因: {1}", + "envfile.failed": "無法使用 {0}。原因: {1}", "replacing.sourcepath": "正在以 '{2}' 取代 {0} '{1}'。", "replacing.targetpath": "正在以 '{2}' 取代 {0} '{1}'。", "replacing.editorPath": "正在以 '{2}' 取代 {0} '{1}'。", "resolving.variables.in.sourcefilemap": "正在解析 {0} 中的變數...", "open.envfile": "開啟 {0}", + "cannot.build.non.cpp": "因為作用中的檔案不是 C 或 C++ 來源檔案,所以無法建立和偵錯。", + "no.compiler.found": "找不到任何編譯器", + "select.debug.configuration": "選取偵錯設定", "unexpected.os": "未預期的 OS 類型", "path.to.pipe.program": "管道程式的完整路徑,例如 {0}", "enable.pretty.printing": "啟用 {0} 的美化顯示", diff --git a/Extension/i18n/cht/src/LanguageServer/extension.i18n.json b/Extension/i18n/cht/src/LanguageServer/extension.i18n.json index d92673d607..3711a423fc 100644 --- a/Extension/i18n/cht/src/LanguageServer/extension.i18n.json +++ b/Extension/i18n/cht/src/LanguageServer/extension.i18n.json @@ -6,6 +6,10 @@ { "learn.how.to.install.a.library": "了解如何使用 vcpkg 安裝此標頭的程式庫", "copy.vcpkg.command": "將用於安裝 '{0}' 的 vcpkg 命令複製到剪貼簿", + "more.info.button": "更多資訊", + "ignore.button": "略過", + "vsix.platform.incompatible": "安裝的 C/C++ 延伸模組與您的系統不相符。", + "vsix.platform.mismatching": "安裝的 C/C++ 延伸模組與您的系統相容,但不相符。", "client.not.found": "找不到用戶端", "configuration.select.first": "先開啟資料夾以選取組態", "configuration.provider.select.first": "先開啟資料夾以選取組態提供者", diff --git a/Extension/i18n/cht/src/nativeStrings.i18n.json b/Extension/i18n/cht/src/nativeStrings.i18n.json index d89f3a5523..90f4efe9ab 100644 --- a/Extension/i18n/cht/src/nativeStrings.i18n.json +++ b/Extension/i18n/cht/src/nativeStrings.i18n.json @@ -81,7 +81,7 @@ "error_squiggles_enabled_if_all_headers_resolve": "如果所有標頭相依性皆已解決,就會啟用錯誤波浪線。", "replaced_placeholder_file_record": "已取代預留位置檔案記錄", "tag_parsing_file": "標籤剖析檔案: {0}", - "tag_parsing_error": "標籤剖析發生錯誤,但可能無關緊要。如果找不到檔案中的符號,請通知我們: {0}", + "tag_parsing_error": "標籤剖析錯誤 (除非找不到符號,否則可以忽略):", "reset_timestamp_for": "重設 {0} 的時間戳記", "remove_file_failed": "無法移除檔案: {0}", "regex_parse_error": "Regex 剖析錯誤 - vscode 模式: {0},RegEx: {1},錯誤訊息: {2}", @@ -216,5 +216,8 @@ "inline_macro": "內嵌巨集", "unable_to_access_browse_database": "無法存取瀏覽資料庫。({0})", "default_compiler_path_modified_explicit_intellisense_mode": "IntelliSenseMode 已變更,因為它不符合偵測到的編譯器。請考慮改為設定 \"compilerPath\"。 將 \"compilerPath\" 設定為 \"\" 以停用系統包含和定義的偵測。", - "clear_code_analysis_squiggles": "清除程式碼分析曲線" + "clear_code_analysis_squiggles": "清除程式碼分析曲線", + "multiple_locations_note": "(多個位置)", + "folder_tag": "資料夾", + "file_tag": "檔案" } \ No newline at end of file diff --git a/Extension/i18n/cht/ui/settings.html.i18n.json b/Extension/i18n/cht/ui/settings.html.i18n.json index 1027e3f47f..7065ac7940 100644 --- a/Extension/i18n/cht/ui/settings.html.i18n.json +++ b/Extension/i18n/cht/ui/settings.html.i18n.json @@ -52,6 +52,8 @@ "forced.include": "強制包含", "forced.include.description": "處理來源檔案中的任何其他字元前,應包含的檔案清單。檔案會包含在列出的清單中。", "one.file.per.line": "每行一個檔案。", + "dot.config": "點設定", + "dot.config.description": "Kconfig 系統所建立之 .config 檔案的路徑。Kconfig 系統會產生具有建置專案之所有定義的檔案。使用 Kconfig 系統的專案範例為 Linux 核心與 NuttX RTOS。", "compile.commands": "編譯命令", "compile.commands.description": "工作區 {0} 檔案的完整路徑。系統會使用在這個檔案中找到的 include 路徑和 define,而不是為 {1} 與 {2} 設定所指定的值。如果在編譯命令資料庫中,對應到您在編輯器中開啟之檔案的編譯單位,沒有任何項目,就會出現警告訊息,而延伸模組會改為使用 {3} 和 {4} 設定。", "merge.configurations": "合併設定", diff --git a/Extension/i18n/csy/Reinstalling the Extension.md.i18n.json b/Extension/i18n/csy/Reinstalling the Extension.md.i18n.json new file mode 100644 index 0000000000..7fc7569688 --- /dev/null +++ b/Extension/i18n/csy/Reinstalling the Extension.md.i18n.json @@ -0,0 +1,21 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "incompatible.extension.heading": "Nekompatibilní nebo neodpovídající binární soubory rozšíření C/C++", + "incompat.extension.text1": "Rozšíření C/C++ obsahuje nativní binární soubory.", + "incompat.extension.text2": "Při instalaci přes rozhraní tržiště ve VS Code by měly být zahrnuty správné nativní binární soubory. Pokud byly zjištěny nekompatibilní binární soubory a rozšíření C/C++ bylo nainstalováno prostřednictvím uživatelského rozhraní tržiště ve VS Code, {0}.", + "bug.report.link.title": "nahlaste prosím problém", + "reinstalling.extension.heading": "Přeinstaluje se rozšíření C/C++.", + "reinstall.extension.text1": "Při přeinstalování ekvivalentní verze rozšíření může VS Code znovu použít stávající adresář rozšíření. Aby k tomu při přeinstalování rozšíření C/C++ nedošlo, může být nutné stávající adresář rozšíření nejprve odstranit.", + "reinstall.extension.text2": "Nainstalované adresáře rozšíření najdete v jedné z následujících cest v uživatelském adresáři (`%USERPROFILE%` v systému Windows nebo `$HOME` v systémech Linux a macOS).", + "reinstall.extension.text3": "Ve vzdáleném připojení:", + "reinstall.extension.text4": "Ukázkové cesty k nainstalovaným adresářům rozšíření C/C++:", + "reinstall.extension.text5": "Ve Windows:", + "reinstall.extension.text6": "V Linuxu:", + "reinstall.extension.text7": "Pak ji znovu nainstalujte přes uživatelské rozhraní Marketplace ve VS Code.", + "reinstall.extension.text8": "Pokud VS Code nenasadí správnou verzi rozšíření, můžete správný soubor VSIX pro váš systém {0} a nainstalovat pomocí možnosti Instalovat z VSIX.... v uživatelském rozhraní Marketplace ve VS Code.", + "download.vsix.link.title": "staženo z webu VS Code Marketplace" +} \ No newline at end of file diff --git a/Extension/i18n/csy/c_cpp_properties.schema.json.i18n.json b/Extension/i18n/csy/c_cpp_properties.schema.json.i18n.json index 3912a5bd27..d8f978e659 100644 --- a/Extension/i18n/csy/c_cpp_properties.schema.json.i18n.json +++ b/Extension/i18n/csy/c_cpp_properties.schema.json.i18n.json @@ -13,6 +13,7 @@ "c_cpp_properties.schema.json.definitions.configurations.items.properties.includePath": "Seznam cest, které modul IntelliSense použije při hledání zahrnutých hlaviček. Hledání v těchto cestách není rekurzivní. Pokud chcete zapnout rekurzivní hledání, zadejte `**`. Například při zadání `${workspaceFolder}/**` se bude hledat ve všech podadresářích, zatímco při zadání `${workspaceFolder}` nebude. Obvykle by se neměly zahrnovat systémové vložené soubory. Místo toho nastavte `C_Cpp.default.compilerPath`.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.macFrameworkPath": "Seznam cest pro modul IntelliSense, který se použije při hledání zahrnutých hlaviček z architektur Mac. Podporuje se jen pro konfiguraci pro Mac.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.windowsSdkVersion": "Verze cesty pro vložené soubory sady Windows SDK, která se má použít ve Windows, např. `10.0.17134.0`.", + "c_cpp_properties.schema.json.definitions.configurations.items.properties.dotConfig": "Cesta k souboru .config vytvořenému systémem Kconfig. Systém Kconfig vygeneruje soubor se všemi definicemi pro sestavení projektu. Příkladem projektů, které používají systém Kconfig, jsou Linux Kernel a NuttX RTOS.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.defines": "Seznam definic preprocesoru, které modul IntelliSense použije při parsování souborů. Volitelně můžete pomocí `=` nastavit hodnotu, například `VERSION=1`.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.intelliSenseMode": "Režim IntelliSense, který se použije a mapuje na variantu platformy a architektury MSVC, gcc nebo Clang. Pokud se nenastaví nebo nastaví na `${default}`, rozšíření zvolí výchozí režim pro danou platformu. Výchozí možnost pro Windows je `windows-msvc-x64`, pro Linux `linux-gcc-x64` a pro macOS `macos-clang-x64`. Režimy IntelliSense, které specifikují pouze varianty `-` (např. `gcc-x64`), jsou starší režimy a automaticky se převádí na varianty `--` založené na hostitelské platformě.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.forcedInclude": "Seznam souborů, které by se měly zahrnout dříve než kterýkoli vložený soubor v jednotce překladu", diff --git a/Extension/i18n/csy/package.i18n.json b/Extension/i18n/csy/package.i18n.json index 3ba0e4ef6b..8993c1ec56 100644 --- a/Extension/i18n/csy/package.i18n.json +++ b/Extension/i18n/csy/package.i18n.json @@ -16,7 +16,6 @@ "c_cpp.command.toggleDimInactiveRegions.title": "Přepnout barvení neaktivních oblastí", "c_cpp.command.resetDatabase.title": "Resetovat databázi IntelliSense", "c_cpp.command.takeSurvey.title": "Vyplnit průzkum", - "c_cpp.command.buildAndDebugActiveFile.title": "Sestavit a ladit aktivní soubor", "c_cpp.command.restartIntelliSenseForFile.title": "Restartovat IntelliSense pro aktivní soubor", "c_cpp.command.logDiagnostics.title": "Protokolovat diagnostiku", "c_cpp.command.referencesViewGroupByType.title": "Seskupit podle typu odkazu", @@ -31,6 +30,8 @@ "c_cpp.command.RunCodeAnalysisOnOpenFiles.title": "Spustit Code Analysis při otevírání souborů", "c_cpp.command.RunCodeAnalysisOnAllFiles.title": "Spustit Code Analysis u všech souborů", "c_cpp.command.ClearCodeAnalysisSquiggles.title": "Vymazat podtržení vlnovkou Code Analysis", + "c_cpp.command.BuildAndDebugFile.title": "Ladit soubor C/C++", + "c_cpp.command.BuildAndRunFile.title": "Spustit soubor C/C++", "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "Maximální počet souběžných vláken, která se mají použít pro zpracování služby jazyka. Hodnota je nápověda a nemusí být vždy použita. Výchozí hodnota `null` (prázdná) používá počet dostupných logických procesorů.", "c_cpp.configuration.maxCachedProcesses.markdownDescription": "Maximální počet procesů uložených v mezipaměti, které se mají použít pro zpracování služby jazyka. Výchozí hodnota `null` (prázdná) používá dvojnásobek dostupného počtu logických procesorů.", "c_cpp.configuration.maxMemory.markdownDescription": "Maximální paměť (v MB), která je k dispozici pro zpracování služby jazyka. Po překročení tohoto využití paměti bude uloženo do mezipaměti méně procesů, které budou spuštěny souběžně. Výchozí hodnota `null` (prázdná) používá volnou paměť systému.", @@ -200,6 +201,7 @@ "c_cpp.configuration.default.customConfigurationVariables.markdownDescription": "Hodnota, která se použije v konfiguraci, pokud se nenastaví `customConfigurationVariables`, nebo hodnoty, které se mají vložit, pokud se v `customConfigurationVariables` jako klíč nachází `${default}`.", "c_cpp.configuration.updateChannel.markdownDescription": "Pokud chcete automaticky stahovat a instalovat nejnovější sestavení rozšíření v programu Insider, která zahrnují připravované funkce a opravy chyb, nastavte možnost `Insiders`.", "c_cpp.configuration.updateChannel.deprecationMessage": "Toto nastavení je zastaralé. Předběžné verze rozšíření jsou teď dostupné přes Marketplace.", + "c_cpp.configuration.default.dotConfig.markdownDescription": "Hodnota, která se použije v konfiguraci, pokud se nezadá `dotConfig`, nebo hodnota, která se má vložit, pokud se v `dotConfig` nachází `${default}`", "c_cpp.configuration.experimentalFeatures.description": "Určuje, jestli je možné použít experimentální funkce.", "c_cpp.configuration.suggestSnippets.markdownDescription": "Pokud se nastaví na `true`, jazykový server poskytne fragmenty kódu.", "c_cpp.configuration.enhancedColorization.markdownDescription": "Když se tato možnost povolí, kód se bude obarvovat podle IntelliSense. Toto nastavení se použije jen v případě, že možnost `#C_Cpp.intelliSenseEngine#` je nastavená na `Default`.", @@ -211,9 +213,10 @@ "c_cpp.configuration.filesExclude.markdownDescription": "Nakonfigurujte vzory glob pro vyloučení složek (a souborů, pokud se změní `#C_Cpp.exclusionPolicy#`). Ty jsou specifické pro rozšíření C/C++ a doplňují `#files.exclude#`, ale na rozdíl od `#files.exclude#` platí také pro cesty mimo aktuální složku pracovního prostoru a neodebírají se ze zobrazení Průzkumníka. Další informace o vzorech glob najdete [tady](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", "c_cpp.configuration.filesExcludeBoolean.markdownDescription": "Vzor glob pro hledání shod s cestami k souborům. Pokud chcete vzor povolit, nastavte hodnotu `true`, pokud ho chcete zakázat, nastavte hodnotu `false`.", "c_cpp.configuration.filesExcludeWhen.markdownDescription": "Další kontrola položek na stejné úrovni u odpovídajícího souboru. Jako proměnnou názvu odpovídajícího souboru použijte `$(basename)`.", - "c_cpp.configuration.debugger.useBacktickCommandSubstitution.markdownDescription": "Když se nastaví na `true`, nahrazování příkazů shellu ladicího programu bude používat starou verzi obrácené čárky (`).", + "c_cpp.configuration.debugger.useBacktickCommandSubstitution.markdownDescription": "Když se nastaví na `true`, nahrazování příkazů shellu ladicího programu bude používat starou verzi obrácené čárky ``(`)``.", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: výsledky jiných odkazů.", "c_cpp.contributes.viewsWelcome.contents": "Další informace o launch.json najdete tady: [konfigurace C/C++ ladění](https://code.visualstudio.com/docs/cpp/launch-json-reference).", + "c_cpp.configuration.debugShortcut.description": "Zobrazit tlačítko Spustit a ladit přehrávání v záhlaví editoru pro soubory C++", "c_cpp.debuggers.pipeTransport.description": "Pokud je k dispozici, předá ladicímu programu informaci, aby se připojil ke vzdálenému počítači pomocí dalšího spustitelného souboru jako kanál, který bude přenášet standardní vstup a výstup mezi nástrojem VS Code a spustitelným souborem back-endu ladicího programu s podporou MI (třeba gdb).", "c_cpp.debuggers.pipeTransport.default.pipeProgram": "zadejte absolutní cestu k názvu programu kanálu, například /usr/bin/ssh.", "c_cpp.debuggers.pipeTransport.default.debuggerPath": "Úplná cesta k ladicímu programu na cílovém počítači, například /usr/bin/gdb", diff --git a/Extension/i18n/csy/src/Debugger/configurationProvider.i18n.json b/Extension/i18n/csy/src/Debugger/configurationProvider.i18n.json index ab455da219..c52948b771 100644 --- a/Extension/i18n/csy/src/Debugger/configurationProvider.i18n.json +++ b/Extension/i18n/csy/src/Debugger/configurationProvider.i18n.json @@ -6,23 +6,26 @@ { "default.configuration.menuitem": "Výchozí konfigurace", "select.configuration": "Vybrat konfiguraci", - "debug.configuration.selection.canceled": "Výběr konfigurace ladění byl zrušen.", - "cl.exe.not.available": "Sestavení a ladění {0} je k dispozici jen v případě, že se nástroj VS Code spustil z nástroje Developer Command Prompt pro VS.", - "miDebuggerPath.not.available": "miDebuggerPath neexistuje: {0}. Byl nainstalován ladicí program?", "debugger.deprecated.config": "Klíč {0} je zastaralý. Použijte prosím místo něj {1}.", "debugger.not.available": "Ladicí program typu {0} je k dispozici jen ve Windows. Na aktuální platformě operačního systému použijte typ {1}.", "lldb.framework.install.xcode": "Další informace", "lldb.framework.not.found": "Nepovedlo se najít LLDB.framework pro lldb-mi. Nainstalujte prosím XCode nebo jeho nástroje příkazového řádku.", "debugger.launchConfig": "Spustit konfiguraci:", + "pre.Launch.Task": "preLaunchTask: {0}", + "build.and.debug.active.file": "sestavit a ladit aktivní soubor", + "cl.exe.not.available": "Sestavení a ladění {0} je k dispozici jen v případě, že se nástroj VS Code spustil z nástroje Developer Command Prompt pro VS.", "lldb.find.failed": "Chybí závislosti {0} pro spustitelný soubor lldb-mi.", "lldb.search.paths": "Prohledáno:", "lldb.install.help": "Pokud chcete tento problém vyřešit, buď nainstalujte XCode přes obchod Apple App Store, nebo v okně terminálu spusťte {0}, aby se nainstalovaly nástroje příkazového řádku XCode.", - "envfale.failed": "Nepovedlo se použít {0}. Příčina: {1}", + "envfile.failed": "Nepovedlo se použít {0}. Příčina: {1}", "replacing.sourcepath": "{1} v {0} se nahrazuje za {2}.", "replacing.targetpath": "{1} v {0} se nahrazuje za {2}.", "replacing.editorPath": "Nahrazuje se {0} {1} za {2}.", "resolving.variables.in.sourcefilemap": "Překládají se proměnné v {0}...", "open.envfile": "Otevřít {0}", + "cannot.build.non.cpp": "Sestavení a ladění není možné, protože aktivní soubor není zdrojový soubor jazyka C ani C++.", + "no.compiler.found": "Nenašel se žádný kompilátor.", + "select.debug.configuration": "Vyberte konfiguraci ladění", "unexpected.os": "Neočekávaný typ operačního systému", "path.to.pipe.program": "úplná cesta k programu kanálu, třeba {0}", "enable.pretty.printing": "Povolit přehledný výpis pro {0}", diff --git a/Extension/i18n/csy/src/LanguageServer/extension.i18n.json b/Extension/i18n/csy/src/LanguageServer/extension.i18n.json index f8fdd9e928..da1f0d9cd7 100644 --- a/Extension/i18n/csy/src/LanguageServer/extension.i18n.json +++ b/Extension/i18n/csy/src/LanguageServer/extension.i18n.json @@ -6,6 +6,10 @@ { "learn.how.to.install.a.library": "Jak nainstalovat knihovnu pro tuto hlavičku pomocí vcpkg", "copy.vcpkg.command": "Zkopírovat příkaz vcpkg pro instalaci {0} do schránky", + "more.info.button": "Další informace", + "ignore.button": "Ignorovat", + "vsix.platform.incompatible": "Nainstalované rozšíření C/C++ neodpovídá vašemu systému.", + "vsix.platform.mismatching": "Nainstalované rozšíření C/C++ je kompatibilní s vaším systémem, ale neodpovídá mu.", "client.not.found": "klient se nenašel", "configuration.select.first": "Pokud chcete vybrat konfiguraci, otevřete nejdříve složku.", "configuration.provider.select.first": "Pokud chcete vybrat poskytovatele konfigurace, otevřete nejdříve složku.", diff --git a/Extension/i18n/csy/src/nativeStrings.i18n.json b/Extension/i18n/csy/src/nativeStrings.i18n.json index a60b11f8b4..076001af82 100644 --- a/Extension/i18n/csy/src/nativeStrings.i18n.json +++ b/Extension/i18n/csy/src/nativeStrings.i18n.json @@ -81,7 +81,7 @@ "error_squiggles_enabled_if_all_headers_resolve": "Podtrhávání chyb vlnovkou se povolí, když se přeloží všechny závislosti hlaviček.", "replaced_placeholder_file_record": "Nahradil se záznam souboru zástupného symbolu.", "tag_parsing_file": "analyzují se značky v souboru: {0}", - "tag_parsing_error": "Při analýze značek došlo k chybě, ale je možné, že nebude významná. Dejte nám vědět, pokud se v souboru nepovede najít nějaké symboly: {0}", + "tag_parsing_error": "chyba analýzy značka (toto lze ignorovat, pokud se nedají najít symboly):", "reset_timestamp_for": "Resetovat časové razítko pro {0}", "remove_file_failed": "Nepovedlo se odebrat soubor: {0}", "regex_parse_error": "Chyba parsování regulárního výrazu – vzor VS Code: {0}, regulární výraz: {1}, chybová zpráva: {2}", @@ -216,5 +216,8 @@ "inline_macro": "Vložit makro", "unable_to_access_browse_database": "Nedá se získat přístup k procházení databáze. ({0})", "default_compiler_path_modified_explicit_intellisense_mode": "Režim IntelliSenseMode se změnil, protože neodpovídá zjištěnému kompilátoru. Zvažte místo toho nastavení \"compilerPath\". Nastavte \"compilerPath\" na \"\", aby byla zakázána detekce systémových parametrů include a define.", - "clear_code_analysis_squiggles": "Vymazat podtržení analýzy kódu vlnovkou" + "clear_code_analysis_squiggles": "Vymazat podtržení analýzy kódu vlnovkou", + "multiple_locations_note": "Víc umístění", + "folder_tag": "Složka", + "file_tag": "Soubor" } \ No newline at end of file diff --git a/Extension/i18n/csy/ui/settings.html.i18n.json b/Extension/i18n/csy/ui/settings.html.i18n.json index c5c405cc68..d68334172d 100644 --- a/Extension/i18n/csy/ui/settings.html.i18n.json +++ b/Extension/i18n/csy/ui/settings.html.i18n.json @@ -52,6 +52,8 @@ "forced.include": "Vynucené zahrnutí", "forced.include.description": "Seznam souborů, které by se měly zahrnout dříve, než se zpracují jakékoli jiné znaky ve zdrojovém souboru. Soubory se zahrnují v uvedeném pořadí.", "one.file.per.line": "Na každý řádek jeden soubor", + "dot.config": "Konfigurace tečky", + "dot.config.description": "Cesta k souboru .config vytvořenému systémem Kconfig. Systém Kconfig vygeneruje soubor se všemi definicemi pro sestavení projektu. Příkladem projektů, které používají systém Kconfig, jsou Linux Kernel a NuttX RTOS.", "compile.commands": "Příkazy kompilace", "compile.commands.description": "Úplná cesta k souboru {0} pro pracovní prostor. Cesty pro vložené soubory a direktivy define v tomto souboru se použijí namísto hodnot nastavených pro nastavení {1} a {2}. Pokud databáze příkazů pro kompilaci neobsahuje položku pro jednotku překladu, která odpovídá souboru otevřenému v editoru, zobrazí se zpráva upozornění a rozšíření místo toho použije nastavení {3} a {4}.", "merge.configurations": "Sloučit konfigurace", diff --git a/Extension/i18n/deu/Reinstalling the Extension.md.i18n.json b/Extension/i18n/deu/Reinstalling the Extension.md.i18n.json new file mode 100644 index 0000000000..3674404698 --- /dev/null +++ b/Extension/i18n/deu/Reinstalling the Extension.md.i18n.json @@ -0,0 +1,21 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "incompatible.extension.heading": "Inkompatible oder nicht übereinstimmende Binärdateien der C/C++-Erweiterung", + "incompat.extension.text1": "Die C/C++-Erweiterung enthält native Binärdateien.", + "incompat.extension.text2": "Bei der Installation über die Marketplace-Benutzeroberfläche in VS Code sollten die richtigen nativen Binärdateien enthalten sein. Wenn inkompatible Binärdateien erkannt wurden und die C/C++-Erweiterung über die Marketplace-Benutzeroberfläche in VS Code installiert wurde, {0}.", + "bug.report.link.title": "Melden Sie das Problem", + "reinstalling.extension.heading": "C/C++-Erweiterung wird neu installiert", + "reinstall.extension.text1": "Bei der Neuinstallation einer entsprechenden Version einer Erweiterung kann VS Code das vorhandene Erweiterungsverzeichnis wiederverwenden. Um zu verhindern, dass dies bei der Neuinstallation der C/C++-Erweiterung auftritt, ist es möglicherweise erforderlich, zuerst das vorhandene Erweiterungsverzeichnis zu löschen.", + "reinstall.extension.text2": "Installierte Erweiterungsverzeichnisse finden Sie unter einem der folgenden Pfade unter Ihrem Benutzerverzeichnis („%USERPROFILE%“ unter Windows oder „$HOME“ unter Linux und macOS).", + "reinstall.extension.text3": "In einer Remoteverbindung:", + "reinstall.extension.text4": "Beispielpfade zu installierten C/C++-Erweiterungsverzeichnissen:", + "reinstall.extension.text5": "Unter Windows:", + "reinstall.extension.text6": "Unter Linux:", + "reinstall.extension.text7": "Installieren Sie dann über die Marketplace-Benutzeroberfläche in VS Code neu.", + "reinstall.extension.text8": "Wenn die richtige Version der Erweiterung nicht von VS Code bereitgestellt werden kann, kann das richtige VSIX für Ihr System {0} und mithilfe der Option „Von VSIX installieren...“ unter dem Menü „...“ in der Marketplace-Benutzeroberfläche in VS Code installiert werden.", + "download.vsix.link.title": "von der Website „VS Code Marketplace“ heruntergeladen" +} \ No newline at end of file diff --git a/Extension/i18n/deu/c_cpp_properties.schema.json.i18n.json b/Extension/i18n/deu/c_cpp_properties.schema.json.i18n.json index c337dafa20..de2fc05f00 100644 --- a/Extension/i18n/deu/c_cpp_properties.schema.json.i18n.json +++ b/Extension/i18n/deu/c_cpp_properties.schema.json.i18n.json @@ -13,6 +13,7 @@ "c_cpp_properties.schema.json.definitions.configurations.items.properties.includePath": "Eine Liste mit Pfaden, die das IntelliSense-Modul bei der Suche nach eingeschlossenen Headern verwenden soll. Die Suche in diesen Pfaden ist nicht rekursiv. Geben Sie `**` an, um eine rekursive Suche durchzuführen. Beispiel: `${workspaceFolder}/**` durchsucht alle Unterverzeichnisse, `${workspaceFolder}` hingegen nicht. In der Regel sollte dies keine System-Includes enthalten; legen Sie stattdessen `C_Cpp.default.compilerPath` fest.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.macFrameworkPath": "Eine Liste der Pfade für die IntelliSense-Engine, die beim Suchen nach eingeschlossenen Headern aus Mac-Frameworks verwendet werden sollen. Wird nur in der Mac-Konfiguration unterstützt.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.windowsSdkVersion": "Die Version des Windows SDK-Includepfads für die Verwendung unter Windows, z. B. `10.0.17134.0`.", + "c_cpp_properties.schema.json.definitions.configurations.items.properties.dotConfig": "Ein Pfad zu einer „.config“-Datei, die vom „Kconfig“-System erstellt wurde. Das „Kconfig“-System generiert eine Datei mit allen Definitionen zum Erstellen eines Projekts. Beispiele für Projekte, die das „Kconfig“-System verwenden, sind Linux-Kernel und NuttX-RTOS.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.defines": "Eine Liste mit Präprozessordefinitionen, die das IntelliSense-Modul, beim Analysieren von Dateien verwenden sollen. Verwenden Sie optional `=`, um einen Wert festzulegen, z. B.: `VERSION=1`.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.intelliSenseMode": "Der zu verwendende IntelliSense-Modus, der einer Plattform- und Architekturvariante von MSVC, GCC oder Clang zugeordnet wird. Wenn er nicht oder auf `${default}` festgelegt wird, wählt die Erweiterung den Standardwert für diese Plattform aus. Windows verwendet standardmäßig `windows-msvc-x64`, Linux standardmäßig `linux-gcc-x64` und macOS standardmäßig `macos-clang-x64`. IntelliSense-Modi, die nur Varianten vom Typ `-` angeben (z. B. `gcc-x64`), sind Legacy-Modi und werden basierend auf der Hostplattform automatisch in die Varianten `--` konvertiert.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.forcedInclude": "Eine Liste der Dateien, die vor einer Includedatei in einer Übersetzungseinheit enthalten sein sollen.", diff --git a/Extension/i18n/deu/package.i18n.json b/Extension/i18n/deu/package.i18n.json index 34848301ca..63bbe1239e 100644 --- a/Extension/i18n/deu/package.i18n.json +++ b/Extension/i18n/deu/package.i18n.json @@ -16,7 +16,6 @@ "c_cpp.command.toggleDimInactiveRegions.title": "Farbgebung für inaktive Regionen umschalten", "c_cpp.command.resetDatabase.title": "IntelliSense-Datenbank zurücksetzen", "c_cpp.command.takeSurvey.title": "An Umfrage teilnehmen", - "c_cpp.command.buildAndDebugActiveFile.title": "Aktive Datei erstellen und debuggen", "c_cpp.command.restartIntelliSenseForFile.title": "IntelliSense für Active File neu starten", "c_cpp.command.logDiagnostics.title": "Diagnose protokollieren", "c_cpp.command.referencesViewGroupByType.title": "Nach Verweistyp gruppieren", @@ -31,6 +30,8 @@ "c_cpp.command.RunCodeAnalysisOnOpenFiles.title": "Code Analysis auf \"Dateien öffnen\" ausführen", "c_cpp.command.RunCodeAnalysisOnAllFiles.title": "Code Analysis auf \"Alle Dateien\" ausführen", "c_cpp.command.ClearCodeAnalysisSquiggles.title": "Code Analysis-Wellenlinien löschen", + "c_cpp.command.BuildAndDebugFile.title": "C/C++-Datei debuggen", + "c_cpp.command.BuildAndRunFile.title": "C/C++-Datei ausführen", "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "Die maximale Anzahl gleichzeitiger Threads, die für die Sprachdienstverarbeitung verwendet werden sollen. Der Wert ist ein Hinweis und kann unter Umständen nicht immer verwendet werden. Mit dem Standardwert `null` (leer) werden doppelt so viele logische Prozessoren wie verfügbar verwendet.", "c_cpp.configuration.maxCachedProcesses.markdownDescription": "Die maximale Anzahl zwischengespeicherter Prozesse, die für die Sprachdienstverarbeitung verwendet werden sollen. Mit dem Standardwert `null` (leer) werden doppelt so viele logische Prozessoren wie verfügbar verwendet.", "c_cpp.configuration.maxMemory.markdownDescription": "Der maximale Arbeitsspeicher (in MB), der für die Sprachdienstverarbeitung verfügbar ist. Weniger Prozesse werden zwischengespeichert und gleichzeitig ausgeführt, nachdem diese Speicherauslastung überschritten wurde. Beim Standardwert `null` (leer) wird der freie Arbeitsspeicher des Systems verwendet.", @@ -200,8 +201,9 @@ "c_cpp.configuration.default.customConfigurationVariables.markdownDescription": "Der Wert, der in einer Konfiguration verwendet werden soll, wenn `customConfigurationVariables` nicht festgelegt ist, oder die Werte, die eingefügt werden sollen, wenn `${default}` als Schlüssel in `customConfigurationVariables` vorhanden ist.", "c_cpp.configuration.updateChannel.markdownDescription": "Legen Sie den Wert auf `Insiders` fest, um die neuesten Insiders-Builds der Erweiterung (die neue Features und Bugfixes enthalten) automatisch herunterzuladen und zu installieren.", "c_cpp.configuration.updateChannel.deprecationMessage": "Diese Einstellung ist veraltet. Erweiterungen der Vorabversionen sind jetzt über den Marketplace verfügbar.", + "c_cpp.configuration.default.dotConfig.markdownDescription": "Der Wert, der in einer Konfiguration verwendet werden soll, wenn „dotConfig“ nicht angegeben ist, oder der einzufügende Wert, wenn „${default}“ in „dotConfig“ vorhanden ist.", "c_cpp.configuration.experimentalFeatures.description": "Hiermit wird gesteuert, ob experimentelle Features verwendet werden können.", - "c_cpp.configuration.suggestSnippets.markdownDescription": "Wenn `true` festgelegt ist, werden Codeausschnitte vom Sprachserver bereitgestellt.", + "c_cpp.configuration.suggestSnippets.markdownDescription": "Wenn `true` festgelegt ist, werden Codeschnipsel vom Sprachserver bereitgestellt.", "c_cpp.configuration.enhancedColorization.markdownDescription": "Wenn diese Option aktiviert ist, wird der Code basierend auf IntelliSense eingefärbt. Diese Einstellung gilt nur, wenn `#C_Cpp.intelliSenseEngine#` auf `Default` festgelegt ist.", "c_cpp.configuration.codeFolding.description": "Wenn diese Option aktiviert ist, werden Codefaltbereiche vom Sprachserver bereitgestellt.", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "Hiermit aktivieren Sie Integrationsdienste für den [vcpkg-Abhängigkeitsmanager](https://aka.ms/vcpkg/).", @@ -214,6 +216,7 @@ "c_cpp.configuration.debugger.useBacktickCommandSubstitution.markdownDescription": "Wenn `true` festgelegt ist, verwendet die Befehlsersetzung der Debugger-Shell veraltete Backtick-Zeichen ``(`)``.", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: Andere Verweisergebnisse.", "c_cpp.contributes.viewsWelcome.contents": "Weitere Informationen zu launch.json finden Sie unter [Konfigurieren des C/C++-Debuggings](https://code.visualstudio.com/docs/cpp/launch-json-reference).", + "c_cpp.configuration.debugShortcut.description": "Schaltfläche \"Wiedergabe ausführen und debuggen\" in der Titelleiste des Editors für C++-Dateien anzeigen", "c_cpp.debuggers.pipeTransport.description": "Falls angegeben, weist diese Option den Debugger an, eine Verbindung mit einem Remotecomputer mithilfe einer anderen ausführbaren Datei als Pipe herzustellen, die Standardeingaben/-ausgaben zwischen VS Code und der ausführbaren Back-End-Datei für den MI-fähigen Debugger weiterleitet (z. B. gdb).", "c_cpp.debuggers.pipeTransport.default.pipeProgram": "Geben Sie den vollqualifizierten Pfad für den Pipeprogrammnamen ein, z. B. `/usr/bin/ssh`.", "c_cpp.debuggers.pipeTransport.default.debuggerPath": "Der vollständige Pfad zum Debugger auf dem Zielcomputer, z. B. \"/usr/bin/gdb\".", diff --git a/Extension/i18n/deu/src/Debugger/configurationProvider.i18n.json b/Extension/i18n/deu/src/Debugger/configurationProvider.i18n.json index 9a02f8ccc5..33888b137f 100644 --- a/Extension/i18n/deu/src/Debugger/configurationProvider.i18n.json +++ b/Extension/i18n/deu/src/Debugger/configurationProvider.i18n.json @@ -6,23 +6,26 @@ { "default.configuration.menuitem": "Standardkonfiguration", "select.configuration": "Konfiguration auswählen", - "debug.configuration.selection.canceled": "Auswahl der Debugkonfiguration abgebrochen", - "cl.exe.not.available": "{0}-Build und -Debuggen können nur verwendet werden, wenn VS Code von der Developer-Eingabeaufforderung für VS ausgeführt wird.", - "miDebuggerPath.not.available": "\"miDebuggerPath\" ist nicht vorhanden: {0}. Wurde ein Debugger installiert?", "debugger.deprecated.config": "Der Schlüssel \"{0}\" ist veraltet. Verwenden Sie stattdessen \"{1}\".", "debugger.not.available": "Der Debugger vom Typ \"{0}\" ist nur unter Windows verfügbar. Verwenden Sie auf der aktuellen Betriebssystemplattform den Typ \"{1}\".", "lldb.framework.install.xcode": "Details", "lldb.framework.not.found": "\"LLDB.framework\" wurde für LLDB-Mi nicht gefunden. Installieren Sie XCode oder die XCode-Befehlszeilentools.", "debugger.launchConfig": "Startkonfiguration:", + "pre.Launch.Task": "preLaunchTask: {0}", + "build.and.debug.active.file": "Aktive Datei erstellen und debuggen", + "cl.exe.not.available": "{0}-Build und -Debuggen können nur verwendet werden, wenn VS Code von der Developer-Eingabeaufforderung für VS ausgeführt wird.", "lldb.find.failed": "Fehlende Abhängigkeit \"{0}\" für ausführbare LLDB-MI-Datei.", "lldb.search.paths": "Gesucht in:", "lldb.install.help": "Um dieses Problem zu beheben, installieren Sie entweder XCode über den Apple App Store, oder installieren Sie die XCode-Befehlszeilentools, indem Sie \"{0}\" in einem Terminalfenster ausführen.", - "envfale.failed": "Fehler beim Verwenden von \"{0}\". Grund: {1}", + "envfile.failed": "Fehler beim Verwenden von “{0}”. Grund: {1}", "replacing.sourcepath": "{0} \"{1}\" wird durch \"{2}\" ersetzt.", "replacing.targetpath": "{0} \"{1}\" wird durch \"{2}\" ersetzt.", "replacing.editorPath": "{0} \"{1}\" wird durch \"{2}\" ersetzt.", "resolving.variables.in.sourcefilemap": "Variablen in \"{0}\" werden aufgelöst...", "open.envfile": "{0} öffnen", + "cannot.build.non.cpp": "Erstellen und Debuggen nicht möglich, da die aktive Datei keine C- oder C++-Quelldatei ist.", + "no.compiler.found": "Kein Compiler gefunden.", + "select.debug.configuration": "Debugkonfiguration auswählen", "unexpected.os": "Unerwarteter Betriebssystemtyp", "path.to.pipe.program": "Vollständiger Pfad zum Pipeprogramm wie z. B. \"{0}\"", "enable.pretty.printing": "Automatische Strukturierung und Einrückung für \"{0}\" aktivieren", diff --git a/Extension/i18n/deu/src/LanguageServer/extension.i18n.json b/Extension/i18n/deu/src/LanguageServer/extension.i18n.json index bd5350d8c8..975187139f 100644 --- a/Extension/i18n/deu/src/LanguageServer/extension.i18n.json +++ b/Extension/i18n/deu/src/LanguageServer/extension.i18n.json @@ -6,6 +6,10 @@ { "learn.how.to.install.a.library": "Erfahren Sie, wie Sie mit vcpkg eine Bibliothek für diesen Header installieren.", "copy.vcpkg.command": "vcpkg-Befehl zum Installieren von \"{0}\" in die Zwischenablage kopieren", + "more.info.button": "Weitere Informationen", + "ignore.button": "Ignorieren", + "vsix.platform.incompatible": "Die installierte C/C++-Erweiterung stimmt nicht mit Ihrem System überein.", + "vsix.platform.mismatching": "Die installierte C/C++-Erweiterung ist mit Ihrem System kompatibel, stimmt jedoch nicht mit diesem überein.", "client.not.found": "Client nicht gefunden.", "configuration.select.first": "Zum Auswählen einer Konfiguration zuerst einen Ordner öffnen", "configuration.provider.select.first": "Zum Auswählen eines Konfigurationsanbieters zuerst einen Ordner öffnen", diff --git a/Extension/i18n/deu/src/nativeStrings.i18n.json b/Extension/i18n/deu/src/nativeStrings.i18n.json index 31cefdecbe..94e5dd464e 100644 --- a/Extension/i18n/deu/src/nativeStrings.i18n.json +++ b/Extension/i18n/deu/src/nativeStrings.i18n.json @@ -81,7 +81,7 @@ "error_squiggles_enabled_if_all_headers_resolve": "Fehlerwellenlinien sind aktiviert, wenn alle Headerabhängigkeiten aufgelöst werden.", "replaced_placeholder_file_record": "Datensatz für Platzhalterdatei ersetzt", "tag_parsing_file": "Taganalysedatei: {0}", - "tag_parsing_error": "Fehler bei der Taganalyse, der jedoch möglicherweise nicht relevant ist. Informieren Sie uns, wenn Symbole in der Datei nicht gefunden werden: {0}", + "tag_parsing_error": "Taganalysefehler (dies kann ignoriert werden, es sei denn, Symbole können nicht gefunden werden):", "reset_timestamp_for": "Zeitstempel für \"{0}\" zurücksetzen", "remove_file_failed": "Fehler beim Entfernen der Datei: {0}", "regex_parse_error": "RegEx-Analysefehler – vscode-Muster: {0}, RegEx: {1}, Fehlermeldung: {2}", @@ -216,5 +216,8 @@ "inline_macro": "Inlinemakro", "unable_to_access_browse_database": "Auf die Suchdatenbank kann nicht zugegriffen werden. ({0})", "default_compiler_path_modified_explicit_intellisense_mode": "IntelliSenseMode wurde geändert, weil es nicht mit dem erkannten Compiler übereinstimmte. Erwägen Sie stattdessen, \"compilerPath\" festzulegen. Legen Sie \"compilerPath\" auf \"\" fest, um die Erkennung von System-Includes und -Definitionen zu deaktivieren.", - "clear_code_analysis_squiggles": "Code Analysis-Wellenlinien löschen" + "clear_code_analysis_squiggles": "Code Analysis-Wellenlinien löschen", + "multiple_locations_note": "(Mehrere Standorte)", + "folder_tag": "Ordner", + "file_tag": "Datei" } \ No newline at end of file diff --git a/Extension/i18n/deu/ui/settings.html.i18n.json b/Extension/i18n/deu/ui/settings.html.i18n.json index 061c3fe2d5..029ffa1194 100644 --- a/Extension/i18n/deu/ui/settings.html.i18n.json +++ b/Extension/i18n/deu/ui/settings.html.i18n.json @@ -52,6 +52,8 @@ "forced.include": "Erzwungene Include-Anweisung", "forced.include.description": "Eine Liste der Dateien, die eingefügt werden sollen, bevor andere Zeichen in der Quelldatei verarbeitet werden. Die Dateien sind in der aufgelisteten Reihenfolge enthalten.", "one.file.per.line": "Eine Datei pro Zeile.", + "dot.config": "„dotConfig“", + "dot.config.description": "Ein Pfad zu einer „.config“-Datei, die vom „Kconfig“-System erstellt wurde. Das „Kconfig“-System generiert eine Datei mit allen Definitionen zum Erstellen eines Projekts. Beispiele für Projekte, die das „Kconfig“-System verwenden, sind Linux-Kernel und NuttX-RTOS.", "compile.commands": "Kompilierungsbefehle", "compile.commands.description": "Der vollständige Pfad zur {0}-Datei für den Arbeitsbereich. Die in dieser Datei ermittelten Includepfade und Define-Anweisungen werden anstelle der für die Einstellungen \"{1}\" und \"{2}\" festgelegten Werte verwendet. Wenn die Datenbank für Kompilierungsbefehle keinen Eintrag für die Übersetzungseinheit enthält, die der im Editor geöffneten Datei entspricht, wird eine Warnmeldung angezeigt, und die Erweiterung verwendet stattdessen die Einstellungen \"{3}\" und \"{4}\".", "merge.configurations": "Konfigurationen zusammenführen", diff --git a/Extension/i18n/esn/Reinstalling the Extension.md.i18n.json b/Extension/i18n/esn/Reinstalling the Extension.md.i18n.json new file mode 100644 index 0000000000..9a4a28f2ab --- /dev/null +++ b/Extension/i18n/esn/Reinstalling the Extension.md.i18n.json @@ -0,0 +1,21 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "incompatible.extension.heading": "Archivos binarios de extensión C/C++ incompatibles o no coincidentes", + "incompat.extension.text1": "La extensión C/C++ incluye archivos binarios nativos.", + "incompat.extension.text2": "Cuando se instala a través de la interfaz de usuario de Marketplace en VS Code, se deben incluir los archivos binarios nativos correctos. Si se detectaron archivos binarios incompatibles y se instaló la extensión C/C++ a través de la interfaz de usuario de Marketplace en VS Code, {0}.", + "bug.report.link.title": "notifique el problema", + "reinstalling.extension.heading": "Reinstalando la extensión C/C++", + "reinstall.extension.text1": "Al reinstalar una versión equivalente de una extensión, VS Code puede reutilizar el directorio de extensión existente. Para evitar que esto ocurra al reinstalar la extensión C/C++, puede ser necesario eliminar primero el directorio de extensión existente.", + "reinstall.extension.text2": "Los directorios de extensión instalados se pueden encontrar en una de las siguientes rutas de acceso en el directorio de usuario ('%USERPROFILE%' en Windows o '$HOME' en Linux y macOS)", + "reinstall.extension.text3": "En una conexión remota:", + "reinstall.extension.text4": "Rutas de acceso de ejemplo para los directorios de extensiones C/C++ instalados:", + "reinstall.extension.text5": "En Windows:", + "reinstall.extension.text6": "En Linux:", + "reinstall.extension.text7": "A continuación, reinstale mediante la interfaz de usuario de Marketplace en VS Code.", + "reinstall.extension.text8": "Si VS Code no puede implementar la versión correcta de la extensión, el VSIX correcto para el sistema se puede {0} e instalar mediante la opción \\\"Instalar desde VSIX...\\\", en el menú \\\"...\\\" en la interfaz de usuario de Marketplace en VS Code.", + "download.vsix.link.title": "descargado del sitio web del Marketplace VS Code" +} \ No newline at end of file diff --git a/Extension/i18n/esn/c_cpp_properties.schema.json.i18n.json b/Extension/i18n/esn/c_cpp_properties.schema.json.i18n.json index cdd582a449..d105077a47 100644 --- a/Extension/i18n/esn/c_cpp_properties.schema.json.i18n.json +++ b/Extension/i18n/esn/c_cpp_properties.schema.json.i18n.json @@ -13,6 +13,7 @@ "c_cpp_properties.schema.json.definitions.configurations.items.properties.includePath": "Lista de rutas de acceso que el motor de IntelliSense debe usar al buscar los encabezados incluidos. La búsqueda en estas rutas de acceso no es recursiva. Especifique `**` para indicar una búsqueda recursiva. Por ejemplo, `${workspaceFolder}/**` buscará en todos los subdirectorios, mientras que `${workspaceFolder}` no lo hará. Normalmente, esto no debería incluir las inclusiones del sistema. Si desea que lo haga, establezca `C_Cpp.default.compilerPath`.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.macFrameworkPath": "Lista de rutas de acceso que el motor de IntelliSense necesita usar para buscar los encabezados incluidos de las plataformas Mac. Solo se admite en configuraciones para Mac.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.windowsSdkVersion": "Versión de la ruta de acceso de inclusión de Windows SDK que debe usarse en Windows; por ejemplo, `10.0.17134.0`.", + "c_cpp_properties.schema.json.definitions.configurations.items.properties.dotConfig": "Ruta de acceso a un archivo .config creado por el sistema Kconfig. El sistema Kconfig genera un archivo con todas las definiciones para compilar un proyecto. Algunos ejemplos de proyectos que usan el sistema Kconfig son Kernel Linux y NuttX RTOS.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.defines": "Lista de definiciones del preprocesador que usará el motor de IntelliSense al analizar los archivos. También se puede usar `=` para establecer un valor (por ejemplo, `VERSION=1`).", "c_cpp_properties.schema.json.definitions.configurations.items.properties.intelliSenseMode": "El modo IntelliSense que se usará y que se asigna a una variante de plataforma y arquitectura de MSVC, gcc o Clang. Si se establece en `${default}` o no se establece, la extensión usará el valor predeterminado para esa plataforma. De forma predeterminada, Windows usa `windows-msvc-x64`, Linux usa `linux-gcc-x64` y macOS usa `macos-clang-x64`. Los modos IntelliSense que solo especifican variantes de `-` (por ejemplo, `gcc-x64`) son modos heredados y se convierten automáticamente a las variantes de `--` en función de la plataforma del host.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.forcedInclude": "Lista de archivos que tienen que incluirse antes que cualquier archivo de inclusión en una unidad de traducción.", diff --git a/Extension/i18n/esn/package.i18n.json b/Extension/i18n/esn/package.i18n.json index 3e34949de6..1e065bfb66 100644 --- a/Extension/i18n/esn/package.i18n.json +++ b/Extension/i18n/esn/package.i18n.json @@ -16,7 +16,6 @@ "c_cpp.command.toggleDimInactiveRegions.title": "Alternar el coloreado de las regiones inactivas", "c_cpp.command.resetDatabase.title": "Restablecer la base de datos de IntelliSense", "c_cpp.command.takeSurvey.title": "Realizar encuesta", - "c_cpp.command.buildAndDebugActiveFile.title": "Compilar y depurar el archivo activo", "c_cpp.command.restartIntelliSenseForFile.title": "Reiniciar IntelliSense para el archivo activo", "c_cpp.command.logDiagnostics.title": "Registrar diagnósticos", "c_cpp.command.referencesViewGroupByType.title": "Agrupar por tipo de referencia", @@ -31,6 +30,8 @@ "c_cpp.command.RunCodeAnalysisOnOpenFiles.title": "Ejecutar análisis de código en archivos abiertos", "c_cpp.command.RunCodeAnalysisOnAllFiles.title": "Ejecutar análisis de código en todos los archivos", "c_cpp.command.ClearCodeAnalysisSquiggles.title": "Borrar el subrayado ondulado de Code Analysis", + "c_cpp.command.BuildAndDebugFile.title": "Depurar archivo C/C++", + "c_cpp.command.BuildAndRunFile.title": "Ejecutar archivo C/C++", "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "Número máximo de subprocesos simultáneos que se usarán para el procesamiento del servicio de lenguaje. El valor es una sugerencia y no se puede usar siempre. El valor predeterminado de `null` (vacío) usa el número de procesadores lógicos disponibles.", "c_cpp.configuration.maxCachedProcesses.markdownDescription": "Número máximo de procesos almacenados en caché que se usarán para el procesamiento del servicio de lenguaje. El valor predeterminado de `null` (vacío) usa el doble de procesadores lógicos disponibles.", "c_cpp.configuration.maxMemory.markdownDescription": "Memoria máxima (en MB) disponible para el procesamiento del servicio de lenguaje. Menos procesos se almacenarán en caché y se ejecutarán simultáneamente después de que se supere el uso de memoria. El valor predeterminado de `null` (vacío) usa la memoria libre del sistema.", @@ -200,6 +201,7 @@ "c_cpp.configuration.default.customConfigurationVariables.markdownDescription": "Valor que debe usarse en una configuración si no se establece `customConfigurationVariables`, o bien los valores que se deben insertar si se especifica `${default}` como clave en `customConfigurationVariables`.", "c_cpp.configuration.updateChannel.markdownDescription": "Establezca esta opción en `Insiders` para descargar e instalar automáticamente las compilaciones más recientes de Insiders para la extensión, que incluyen nuevas características y correcciones de errores.", "c_cpp.configuration.updateChannel.deprecationMessage": "Esta configuración está en desuso. Las extensiones de versión preliminar ya están disponibles a través de Marketplace.", + "c_cpp.configuration.default.dotConfig.markdownDescription": "Valor que debe usarse en una configuración si no se especifica `dotConfig`, o bien los valores que se deben insertar si se especifica `${default}` en `dotConfig`.", "c_cpp.configuration.experimentalFeatures.description": "Controla si se pueden usar las características \"experimentales\".", "c_cpp.configuration.suggestSnippets.markdownDescription": "Si se establece en `true`, el servidor de lenguaje proporciona los fragmentos de código.", "c_cpp.configuration.enhancedColorization.markdownDescription": "Si se habilita esta opción, el código se colorea de acuerdo con IntelliSense. Esta configuración solo se aplica si `#C_Cpp.intelliSenseEngine#` se establece en `Default`.", @@ -214,6 +216,7 @@ "c_cpp.configuration.debugger.useBacktickCommandSubstitution.markdownDescription": "Si es `true`, la sustitución de comandos del shell del depurador usará un acento grave obsoleto ``(`)``.", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: resultados de otras referencias.", "c_cpp.contributes.viewsWelcome.contents": "Para obtener más información sobre launch.json, vea [Configuración de depuración de C/C++](https://code.visualstudio.com/docs/cpp/launch-json-reference).", + "c_cpp.configuration.debugShortcut.description": "Mostrar el botón Ejecutar y Depurar en la barra de título del editor para archivos C++", "c_cpp.debuggers.pipeTransport.description": "Cuando se especifica, indica al depurador que se conecte a un equipo remoto usando otro archivo ejecutable como canalización que retransmitirá la entrada o la salida estándar entre VS Code y el archivo ejecutable del back-end del depurador habilitado para MI (por ejemplo, gdb).", "c_cpp.debuggers.pipeTransport.default.pipeProgram": "escriba la ruta de acceso absoluta para el nombre del programa de canalización; por ejemplo, \"/usr/bin/ssh\".", "c_cpp.debuggers.pipeTransport.default.debuggerPath": "Ruta de acceso completa al depurador en la máquina de destino. Por ejemplo, /usr/bin/gdb.", diff --git a/Extension/i18n/esn/src/Debugger/configurationProvider.i18n.json b/Extension/i18n/esn/src/Debugger/configurationProvider.i18n.json index 9551eafb35..4c2c4ff637 100644 --- a/Extension/i18n/esn/src/Debugger/configurationProvider.i18n.json +++ b/Extension/i18n/esn/src/Debugger/configurationProvider.i18n.json @@ -6,23 +6,26 @@ { "default.configuration.menuitem": "Configuración predeterminada", "select.configuration": "Seleccionar una configuración", - "debug.configuration.selection.canceled": "Se canceló la selección de configuración de depuración", - "cl.exe.not.available": "La compilación y depuración de {0} solo se puede usar cuando VS Code se ejecuta desde el Símbolo del sistema para desarrolladores de Visual Studio.", - "miDebuggerPath.not.available": "El valor miDebuggerPath no existe: {0}. ¿Se ha instalado algún depurador?", "debugger.deprecated.config": "La clave \"{0}\" está en desuso. En su lugar, use \"{1}\".", "debugger.not.available": "El depurador de tipo \"{0}\" solo está disponible en Windows. Use el tipo \"{1}\" en la plataforma de sistema operativo actual.", "lldb.framework.install.xcode": "Más información", "lldb.framework.not.found": "No se encuentra \"LLDB.framework\" para lldb-mi. Instale XCode o las herramientas de línea de comandos de XCode.", "debugger.launchConfig": "Configuración de inicio:", + "pre.Launch.Task": "preLaunchTask: {0}", + "build.and.debug.active.file": "Compilar y depurar el archivo activo", + "cl.exe.not.available": "La compilación y depuración de {0} solo se puede usar cuando VS Code se ejecuta desde el Símbolo del sistema para desarrolladores de Visual Studio.", "lldb.find.failed": "Falta la dependencia \"{0}\" para el ejecutable lldb-mi.", "lldb.search.paths": "Buscado en:", "lldb.install.help": "Para resolver este problema, instale XCode mediante App Store de Apple o instale las herramientas de línea de comandos de XCode ejecutando \"{0}\" en una ventana de terminal.", - "envfale.failed": "No se pudo usar {0}. Motivo: {1}", + "envfile.failed": "No se pudo usar {0}. Motivo: {1}", "replacing.sourcepath": "Reemplazando {0} \"{1}\" por \"{2}\".", "replacing.targetpath": "Reemplazando {0} \"{1}\" por \"{2}\".", "replacing.editorPath": "Reemplazando el {0} \"{1}\" por \"{2}\".", "resolving.variables.in.sourcefilemap": "Resolviendo las variables de {0}...", "open.envfile": "Abrir {0}", + "cannot.build.non.cpp": "No se puede compilar y depurar código porque el archivo activo no es un archivo de código fuente de C o C++.", + "no.compiler.found": "No se encontró ningún compilador", + "select.debug.configuration": "Seleccione una configuración de depuración", "unexpected.os": "Tipo de sistema operativo no esperado", "path.to.pipe.program": "Ruta de acceso completa al programa de canalización, como {0}.", "enable.pretty.printing": "Habilitar la impresión con sangría para {0}", diff --git a/Extension/i18n/esn/src/LanguageServer/extension.i18n.json b/Extension/i18n/esn/src/LanguageServer/extension.i18n.json index c777d495f1..06d51108af 100644 --- a/Extension/i18n/esn/src/LanguageServer/extension.i18n.json +++ b/Extension/i18n/esn/src/LanguageServer/extension.i18n.json @@ -6,6 +6,10 @@ { "learn.how.to.install.a.library": "Más información sobre el modo de instalar una biblioteca para este encabezado con vcpkg", "copy.vcpkg.command": "Copie el comando vcpkg para instalar \"{0}\" en el Portapapeles", + "more.info.button": "Más información", + "ignore.button": "Omitir", + "vsix.platform.incompatible": "La extensión C/C++ instalada no coincide con el sistema.", + "vsix.platform.mismatching": "La extensión C/C++ instalada es compatible con el sistema, pero no coincide con el sistema.", "client.not.found": "No se encuentra el cliente", "configuration.select.first": "Abra una carpeta primero para seleccionar una configuración", "configuration.provider.select.first": "Abra una carpeta primero para seleccionar un proveedor de configuración", diff --git a/Extension/i18n/esn/src/nativeStrings.i18n.json b/Extension/i18n/esn/src/nativeStrings.i18n.json index ca35135f8f..c4283d605a 100644 --- a/Extension/i18n/esn/src/nativeStrings.i18n.json +++ b/Extension/i18n/esn/src/nativeStrings.i18n.json @@ -81,7 +81,7 @@ "error_squiggles_enabled_if_all_headers_resolve": "El subrayado ondulado de errores se habilita si se resuelven todas las dependencias de encabezado.", "replaced_placeholder_file_record": "Se ha reemplazado el registro del archivo de marcadores de posición", "tag_parsing_file": "Archivo de análisis de etiquetas: {0}", - "tag_parsing_error": "El análisis de etiquetas encontró un error, pero puede que no tenga importancia. Díganos si no se encuentran los símbolos en el archivo: {0}", + "tag_parsing_error": "error de análisis de etiquetas (se puede omitir a menos que no se encuentren símbolos):", "reset_timestamp_for": "Restablecer la marca de tiempo para {0}", "remove_file_failed": "No se pudo quitar el archivo {0}", "regex_parse_error": "Error de análisis de Regex: patrón de vscode: {0}, regex: {1}, mensaje de error: {2}", @@ -216,5 +216,8 @@ "inline_macro": "Insertar macro", "unable_to_access_browse_database": "No se puede acceder a la base de datos de exploración. ({0})", "default_compiler_path_modified_explicit_intellisense_mode": "Se ha cambiado IntelliSenseMode porque no coincidía con el compilador detectado. Considere la posibilidad de establecer \"compilerPath\" en su lugar. Establezca \"compilerPath\" en \"\" para deshabilitar la detección de las inclusión y definiciones del sistema.", - "clear_code_analysis_squiggles": "Borrar el subrayado ondulado del análisis de código" + "clear_code_analysis_squiggles": "Borrar el subrayado ondulado del análisis de código", + "multiple_locations_note": "(Varias ubicaciones)", + "folder_tag": "Carpeta", + "file_tag": "Archivo" } \ No newline at end of file diff --git a/Extension/i18n/esn/ui/settings.html.i18n.json b/Extension/i18n/esn/ui/settings.html.i18n.json index d38bbc8a94..ca8515df2a 100644 --- a/Extension/i18n/esn/ui/settings.html.i18n.json +++ b/Extension/i18n/esn/ui/settings.html.i18n.json @@ -52,6 +52,8 @@ "forced.include": "Inclusión forzada", "forced.include.description": "Lista de los archivos que deben incluirse antes de que se procesen más caracteres en el archivo de código fuente. Los archivos se incluyen en el orden indicado.", "one.file.per.line": "Un archivo por línea.", + "dot.config": "Dot Config", + "dot.config.description": "Ruta de acceso a un archivo .config creado por el sistema Kconfig. El sistema Kconfig genera un archivo con todas las definiciones para compilar un proyecto. Algunos ejemplos de proyectos que usan el sistema Kconfig son Kernel Linux y NuttX RTOS.", "compile.commands": "Comandos de compilación", "compile.commands.description": "Ruta de acceso completa al archivo {0} del área de trabajo. Se usarán las definiciones y rutas de acceso de inclusión detectadas en el archivo, en lugar de los valores establecidos para las opciones {1} y {2}. Si la base de datos de comandos de compilación no contiene una entrada para la unidad de traducción que se corresponda con el archivo que ha abierto en el editor, se mostrará un mensaje de advertencia y la extensión usará las opciones {3} y {4} en su lugar.", "merge.configurations": "Combinar configuraciones", diff --git a/Extension/i18n/fra/Reinstalling the Extension.md.i18n.json b/Extension/i18n/fra/Reinstalling the Extension.md.i18n.json new file mode 100644 index 0000000000..092768dd84 --- /dev/null +++ b/Extension/i18n/fra/Reinstalling the Extension.md.i18n.json @@ -0,0 +1,21 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "incompatible.extension.heading": "Fichiers binaires d’extension C/C++ incompatibles ou mal assortis", + "incompat.extension.text1": "L’extension C/C++ inclut des fichiers binaires natifs.", + "incompat.extension.text2": "Lorsqu’ils sont installés via l’interface utilisateur de la Place de marché dans VS Code, les fichiers binaires natifs appropriés doivent être inclus. Si des fichiers binaires incompatibles ont été détectés et que l’extension C/C++ a été installée via l’interface utilisateur marketplace dans VS Code, {0}.", + "bug.report.link.title": "signalez le problème", + "reinstalling.extension.heading": "Réinstallation de l’extension C/C++", + "reinstall.extension.text1": "Lors de la réinstallation d’une version équivalente d’une extension, VS Code pouvez réutiliser le répertoire d’extension existant. Pour éviter que cela ne se produise lors de la réinstallation de l’extension C/C++, il peut être nécessaire de supprimer d’abord le répertoire d’extension existant.", + "reinstall.extension.text2": "Les répertoires d’extension installés se trouvent sous l’un des chemins d’accès suivants sous votre répertoire utilisateur ('%USERPROFILE%' sur Windows, ou '$HOME' sur Linux et macOS)", + "reinstall.extension.text3": "Dans une connexion à distance :", + "reinstall.extension.text4": "Exemples de chemins d’accès aux répertoires d’extension C/C++ installés :", + "reinstall.extension.text5": "Sur Windows :", + "reinstall.extension.text6": "Sur Linux :", + "reinstall.extension.text7": "Réinstallez ensuite via l’interface utilisateur de la Place de marché dans VS Code.", + "reinstall.extension.text8": "Si la version correcte de l’extension ne peut pas être déployée par VS Code, le VSIX approprié pour votre système peut être {0} et installé à l’aide de l’option « Installer à partir de VSIX... » sous le menu « ... » de l’interface utilisateur de la Place de marché dans VS Code.", + "download.vsix.link.title": "téléchargé à partir du site web de la place de marché VS Code" +} \ No newline at end of file diff --git a/Extension/i18n/fra/c_cpp_properties.schema.json.i18n.json b/Extension/i18n/fra/c_cpp_properties.schema.json.i18n.json index 58bb2bba1f..f2ba1e27ad 100644 --- a/Extension/i18n/fra/c_cpp_properties.schema.json.i18n.json +++ b/Extension/i18n/fra/c_cpp_properties.schema.json.i18n.json @@ -13,6 +13,7 @@ "c_cpp_properties.schema.json.definitions.configurations.items.properties.includePath": "Liste des chemins d’accès à utiliser par le moteur IntelliSense lors de la recherche d’en-têtes inclus. La recherche sur ces chemins d’accès n’est pas récursive. Spécifiez `**` pour indiquer une recherche récursive. Par exemple, `${workspaceFolder}/**` effectue une recherche dans tous les sous-répertoires, contrairement à `${workspaceFolder}`. En règle générale, cela ne doit pas inclure les éléments système ; au lieu de cela, définissez `C_Cpp.default.compilerPath`.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.macFrameworkPath": "Liste de chemins que le moteur IntelliSense doit utiliser pour la recherche des en-têtes inclus dans les frameworks Mac. Prise en charge uniquement sur la configuration Mac.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.windowsSdkVersion": "Version du chemin d'inclusion du SDK Windows à utiliser sur Windows, par ex., `10.0.17134.0`.", + "c_cpp_properties.schema.json.definitions.configurations.items.properties.dotConfig": "Chemin d’accès à un fichier .config créé par le système Kconfig. Le système Kconfig génère un fichier avec toutes les définitions pour générer un projet. Les exemples de projets qui utilisent le système Kconfig sont le noyau Linux et NuttX RTOS.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.defines": "Liste des définitions de préprocesseur que le moteur IntelliSense doit utiliser pendant l'analyse des fichiers. Vous pouvez aussi utiliser `=` pour définir une valeur, par ex., `VERSION=1`.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.intelliSenseMode": "Mode IntelliSense à utiliser, qui est mappé à une variante de plateforme et d'architecture de MSVC, gcc ou Clang. En l'absence de valeur définie, ou si la valeur est `${default}`, l'extension choisit la valeur par défaut pour cette plateforme. Pour Windows, la valeur par défaut est `windows-msvc-x64`. Pour Linux, la valeur par défaut est `linux-gcc-x64`. Pour macOS, la valeur par défaut est `macos-clang-x64`. Les modes IntelliSense qui spécifient uniquement les variantes `-` (par exemple `gcc-x64`) sont des modes hérités. Ils sont convertis automatiquement en variantes `--` en fonction de la plateforme hôte.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.forcedInclude": "Liste des fichiers qui doivent être inclus avant tout fichier d'inclusion dans une unité de traduction.", diff --git a/Extension/i18n/fra/package.i18n.json b/Extension/i18n/fra/package.i18n.json index 3a52efed65..ccb862f608 100644 --- a/Extension/i18n/fra/package.i18n.json +++ b/Extension/i18n/fra/package.i18n.json @@ -16,7 +16,6 @@ "c_cpp.command.toggleDimInactiveRegions.title": "Activer/désactiver la colorisation des régions inactives", "c_cpp.command.resetDatabase.title": "Réinitialiser la base de données IntelliSense", "c_cpp.command.takeSurvey.title": "Répondre à l'enquête", - "c_cpp.command.buildAndDebugActiveFile.title": "Générer et déboguer le fichier actif", "c_cpp.command.restartIntelliSenseForFile.title": "Redémarrer IntelliSense pour le fichier actif", "c_cpp.command.logDiagnostics.title": "Journaliser les diagnostics", "c_cpp.command.referencesViewGroupByType.title": "Regrouper par type référence", @@ -31,6 +30,8 @@ "c_cpp.command.RunCodeAnalysisOnOpenFiles.title": "Exécuter une analyse de code sur Ouvrir les fichiers", "c_cpp.command.RunCodeAnalysisOnAllFiles.title": "Exécuter une analyse de code sur Tous les fichiers", "c_cpp.command.ClearCodeAnalysisSquiggles.title": "Effacer les tildes Code Analysis", + "c_cpp.command.BuildAndDebugFile.title": "Déboguer le fichier C/C++", + "c_cpp.command.BuildAndRunFile.title": "Exécuter le fichier C/C++", "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "Nombre maximal de threads simultanés à utiliser pour le traitement du service de langage. La valeur est un indicateur et ne peut pas toujours être utilisée. La valeur par défaut de `null` (vide) utilise le nombre de processeurs logiques disponibles.", "c_cpp.configuration.maxCachedProcesses.markdownDescription": "Nombre maximal de processus mis en cache à utiliser pour le traitement du service de langage. La valeur par défaut de `null` (vide) utilise deux fois plus de processeurs logiques disponibles.", "c_cpp.configuration.maxMemory.markdownDescription": "Mémoire maximale (en Mo) disponible pour le traitement du service de langage. Moins de processus seront mis en cache et exécutés simultanément après le dépassement de cette utilisation de la mémoire. La valeur par défaut de `null` (vide) utilise la mémoire libre du système.", @@ -200,6 +201,7 @@ "c_cpp.configuration.default.customConfigurationVariables.markdownDescription": "Valeur à utiliser dans une configuration si `customConfigurationVariables` n'est pas défini, ou valeurs à insérer si `${default}` est présent dans `customConfigurationVariables`.", "c_cpp.configuration.updateChannel.markdownDescription": "Définissez la valeur `Insiders` pour télécharger et installer automatiquement les dernières builds Insider de l’extension, qui incluent les fonctionnalités à venir et les correctifs de bogues.", "c_cpp.configuration.updateChannel.deprecationMessage": "Ce paramètre est déconseillé. Les extensions en version préliminaire sont désormais disponibles via marketplace.", + "c_cpp.configuration.default.dotConfig.markdownDescription": "La valeur à utiliser dans une configuration si `dotConfig` n'est pas spécifié, ou la valeur à insérer si `${default}` est présent dans `dotConfig`.", "c_cpp.configuration.experimentalFeatures.description": "Contrôle si les fonctionnalités \"expérimentales\" sont utilisables.", "c_cpp.configuration.suggestSnippets.markdownDescription": "Si la valeur est `true`, les extraits de code sont fournis par le serveur de langage.", "c_cpp.configuration.enhancedColorization.markdownDescription": "Si cette option est activée, le code est colorisé en fonction d'IntelliSense. Ce paramètre s'applique uniquement si `#C_Cpp.intelliSenseEngine#` est défini sur `Default`.", @@ -214,6 +216,7 @@ "c_cpp.configuration.debugger.useBacktickCommandSubstitution.markdownDescription": "Si la valeur est `true`, le remplacement de la commande d'interpréteur de commandes du débogueur utilise un accent grave ``(`)`` obsolète.", "c_cpp.contributes.views.cppReferencesView.title": "C/C++ : d’autres référencent les résultats.", "c_cpp.contributes.viewsWelcome.contents": "Pour en savoir plus sur launch.json, consultez [Configuration du débogage C/C++](https://code.visualstudio.com/docs/cpp/launch-json-reference).", + "c_cpp.configuration.debugShortcut.description": "Afficher le bouton Exécuter et déboguer dans la barre de titre de l’éditeur pour les fichiers C++", "c_cpp.debuggers.pipeTransport.description": "Quand ce paramètre est présent, indique au débogueur de se connecter à un ordinateur distant en se servant d'un autre exécutable comme canal de relais d'entrée/de sortie standard entre VS Code et l'exécutable du back-end du débogueur MI (par exemple, gdb).", "c_cpp.debuggers.pipeTransport.default.pipeProgram": "entrez le chemin d’accès complet pour le nom du programme de canal, par exemple « /usr/bin/ssh ».", "c_cpp.debuggers.pipeTransport.default.debuggerPath": "Chemin complet du débogueur sur la machine cible, par exemple /usr/bin/gdb.", diff --git a/Extension/i18n/fra/src/Debugger/configurationProvider.i18n.json b/Extension/i18n/fra/src/Debugger/configurationProvider.i18n.json index 0491fa4ff2..281475b3b9 100644 --- a/Extension/i18n/fra/src/Debugger/configurationProvider.i18n.json +++ b/Extension/i18n/fra/src/Debugger/configurationProvider.i18n.json @@ -6,23 +6,26 @@ { "default.configuration.menuitem": "Configuration par défaut", "select.configuration": "Sélectionner une configuration", - "debug.configuration.selection.canceled": "Sélection de la configuration de débogage annulée", - "cl.exe.not.available": "La génération et le débogage de {0} peuvent être utilisés uniquement quand VS Code est exécuté à partir de l'invite de commandes développeur pour VS.", - "miDebuggerPath.not.available": "miDebuggerPath n'existe pas : {0}. Un débogueur a-t-il été installé ?", "debugger.deprecated.config": "La clé '{0}' est dépréciée. Utilisez '{1}' à la place.", "debugger.not.available": "Le débogueur de type '{0}' est disponible seulement sur Windows. Utilisez le type '{1}' sur la plateforme OS actuelle.", "lldb.framework.install.xcode": "En savoir plus", "lldb.framework.not.found": "Impossible de localiser 'LLDB.framework' pour lldb-mi. Installez XCode ou les outils en ligne de commande XCode.", "debugger.launchConfig": "Lancer la configuration :", + "pre.Launch.Task": "tâche de prélancement : {0}", + "build.and.debug.active.file": "Générer et déboguer le fichier actif", + "cl.exe.not.available": "La génération et le débogage de {0} peuvent être utilisés uniquement quand VS Code est exécuté à partir de l'invite de commandes développeur pour VS.", "lldb.find.failed": "La dépendance '{0}' est manquante pour l'exécutable lldb-mi.", "lldb.search.paths": "Recherche effectuée dans :", "lldb.install.help": "Pour résoudre ce problème, installez XCode via l'Apple App Store ou installez les outils en ligne de commande XCode en exécutant '{0}' dans une fenêtre de terminal.", - "envfale.failed": "L'utilisation de {0} a échoué. Motif : {1}", + "envfile.failed": "L'utilisation de {0} a échoué. Motif : {1}", "replacing.sourcepath": "Remplacement de {0} '{1}' par '{2}'.", "replacing.targetpath": "Remplacement de {0} '{1}' par '{2}'.", "replacing.editorPath": "Remplacement de {0} '{1}' par '{2}'.", "resolving.variables.in.sourcefilemap": "Résolution des variables dans {0}...", "open.envfile": "Ouvrir {0}", + "cannot.build.non.cpp": "Génération et débogage impossibles, car le fichier actif n'est pas un fichier source C ou C++.", + "no.compiler.found": "Aucun compilateur", + "select.debug.configuration": "Sélectionnez une configuration de débogage", "unexpected.os": "Type de système d'exploitation inattendu", "path.to.pipe.program": "chemin complet du programme de canal, par exemple {0}", "enable.pretty.printing": "Activer l'impression en mode Pretty pour {0}", diff --git a/Extension/i18n/fra/src/LanguageServer/extension.i18n.json b/Extension/i18n/fra/src/LanguageServer/extension.i18n.json index b6cdf360d5..4f6813deef 100644 --- a/Extension/i18n/fra/src/LanguageServer/extension.i18n.json +++ b/Extension/i18n/fra/src/LanguageServer/extension.i18n.json @@ -6,6 +6,10 @@ { "learn.how.to.install.a.library": "Découvrir comment installer une bibliothèque pour cet en-tête avec vcpkg", "copy.vcpkg.command": "Copier la commande vcpkg pour installer '{0}' dans le Presse-papiers", + "more.info.button": "En savoir plus", + "ignore.button": "Ignorer", + "vsix.platform.incompatible": "L’extension C/C++ installée ne correspond pas à votre système.", + "vsix.platform.mismatching": "L’extension C/C++ installée est compatible avec mais ne correspond pas à votre système.", "client.not.found": "client introuvable", "configuration.select.first": "Commencer par ouvrir un dossier pour sélectionner une configuration", "configuration.provider.select.first": "Commencer par ouvrir un dossier pour sélectionner un fournisseur de configuration", diff --git a/Extension/i18n/fra/src/LanguageServer/settings.i18n.json b/Extension/i18n/fra/src/LanguageServer/settings.i18n.json index 6d18f9a7ed..7a26034584 100644 --- a/Extension/i18n/fra/src/LanguageServer/settings.i18n.json +++ b/Extension/i18n/fra/src/LanguageServer/settings.i18n.json @@ -4,5 +4,5 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "editorconfig.default.behavior": "Le formatage du code utilise les paramètres de .editorconfig au lieu de .clang-format. Pour plus d'informations, consultez la documentation relative à la valeur 'Default' du paramètre 'C_Cpp.formatting'." + "editorconfig.default.behavior": "Le formatage du code utilise les paramètres de .editorconfig au lieu de .clang-format. Pour plus d'informations, consultez la documentation pour la valeur 'Default' du paramètre 'C_Cpp.formatting'." } \ No newline at end of file diff --git a/Extension/i18n/fra/src/nativeStrings.i18n.json b/Extension/i18n/fra/src/nativeStrings.i18n.json index cbf8dbcf1a..a32a40de13 100644 --- a/Extension/i18n/fra/src/nativeStrings.i18n.json +++ b/Extension/i18n/fra/src/nativeStrings.i18n.json @@ -81,7 +81,7 @@ "error_squiggles_enabled_if_all_headers_resolve": "Les tildes d'erreur sont activés si toutes les dépendances d'en-tête sont résolues.", "replaced_placeholder_file_record": "Enregistrement du fichier d'espace réservé remplacé", "tag_parsing_file": "fichier d'analyse de balises : {0}", - "tag_parsing_error": "L'analyse d'étiquettes a rencontré une erreur, mais elle n'a peut-être pas d'incidence. Indiquez-nous si les symboles du fichier sont introuvables : {0}", + "tag_parsing_error": "erreur d’analyse des balises (elle peut être ignorée, sauf si les symboles sont introuvables) :", "reset_timestamp_for": "Réinitialiser l'horodatage pour {0}", "remove_file_failed": "La suppression du fichier a échoué : {0}", "regex_parse_error": "Erreur d'analyse de regex - Modèle vscode : {0}, regex : {1}, message d'erreur : {2}", @@ -216,5 +216,8 @@ "inline_macro": "Inline macro", "unable_to_access_browse_database": "Impossible d’accéder à la base de données Browse. ({0})", "default_compiler_path_modified_explicit_intellisense_mode": "IntelliSenseMode a été modifié car il ne correspondait pas au compilateur détecté. Envisagez de définir \"compilerPath\" à la place. Définissez \"compilerPath\" à \"\" pour désactiver la détection des includes et defines du système.", - "clear_code_analysis_squiggles": "Effacer les tildes d’analyse du code" + "clear_code_analysis_squiggles": "Effacer les tildes d’analyse du code", + "multiple_locations_note": "(Plusieurs emplacements)", + "folder_tag": "Dossier", + "file_tag": "Fichier" } \ No newline at end of file diff --git a/Extension/i18n/fra/ui/settings.html.i18n.json b/Extension/i18n/fra/ui/settings.html.i18n.json index 72e4eb1d88..57b1e11d3f 100644 --- a/Extension/i18n/fra/ui/settings.html.i18n.json +++ b/Extension/i18n/fra/ui/settings.html.i18n.json @@ -52,6 +52,8 @@ "forced.include": "Inclusion forcée", "forced.include.description": "Liste des fichiers qui doivent être inclus avant le traitement de tous les autres caractères du fichier source. Les fichiers sont inclus dans l'ordre indiqué.", "one.file.per.line": "Un fichier par ligne.", + "dot.config": "Dot Config", + "dot.config.description": "Chemin d’accès à un fichier .config créé par le système Kconfig. Le système Kconfig génère un fichier avec toutes les définitions pour générer un projet. Les exemples de projets qui utilisent le système Kconfig sont le noyau Linux et NuttX RTOS.", "compile.commands": "Commandes de compilation", "compile.commands.description": "Chemin complet du fichier {0} pour l'espace de travail. Les chemins d'inclusion et les définitions découverts dans ce fichier sont utilisés à la place des valeurs définies pour les paramètres {1} et {2}. Si la base de données des commandes de compilation n'a pas d'entrée pour l'unité de traduction qui correspond au fichier que vous avez ouvert dans l'éditeur, un message d'avertissement s'affiche et l'extension utilise les paramètres {3} et {4} à la place.", "merge.configurations": "Fusionner les configurations", diff --git a/Extension/i18n/ita/Reinstalling the Extension.md.i18n.json b/Extension/i18n/ita/Reinstalling the Extension.md.i18n.json new file mode 100644 index 0000000000..35e98be26d --- /dev/null +++ b/Extension/i18n/ita/Reinstalling the Extension.md.i18n.json @@ -0,0 +1,21 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "incompatible.extension.heading": "file binari dell'estensione C/C++ incompatibili o non corrispondenti", + "incompat.extension.text1": "L'estensione C/C++ include file binari nativi.", + "incompat.extension.text2": "Se installato tramite l'interfaccia utente del marketplace in VS Code, è necessario includere i file binari nativi corretti. Se sono stati rilevati file binari incompatibili e l'estensione C/C++ è stata installata tramite l'interfaccia utente del Marketplace in VS Code, {0}.", + "bug.report.link.title": "segnalare il problema", + "reinstalling.extension.heading": "Reinstallazione dell'estensione C/C++", + "reinstall.extension.text1": "Quando si reinstalla una versione equivalente di un'estensione, VS Code può riutilizzare la directory dell'estensione esistente. Per evitare che ciò si verifichi durante la reinstallazione dell'estensione C/C++, potrebbe essere necessario eliminare prima la directory dell'estensione esistente.", + "reinstall.extension.text2": "Le directory delle estensioni installate si trovano in uno dei percorsi seguenti nella directory utente ('%USERPROFILE%' in Windows o '$HOME' in Linux e macOS)", + "reinstall.extension.text3": "In una connessione remota:", + "reinstall.extension.text4": "Percorsi di esempio per le directory dell'estensione C/C++ installate:", + "reinstall.extension.text5": "In Windows:", + "reinstall.extension.text6": "In Linux:", + "reinstall.extension.text7": "Reinstallare quindi tramite l'interfaccia utente del marketplace in VS Code.", + "reinstall.extension.text8": "Se la versione corretta dell'estensione non viene distribuita da VS Code, è possibile {0} e installare il file VSIX corretto per il sistema usando l'opzione 'Installa da VSIX...' nel menu '...' nell'interfaccia utente del marketplace in VS Code.", + "download.vsix.link.title": "scaricato dal sito Web del marketplace VS Code" +} \ No newline at end of file diff --git a/Extension/i18n/ita/c_cpp_properties.schema.json.i18n.json b/Extension/i18n/ita/c_cpp_properties.schema.json.i18n.json index 49542f8f67..5c26ca0db1 100644 --- a/Extension/i18n/ita/c_cpp_properties.schema.json.i18n.json +++ b/Extension/i18n/ita/c_cpp_properties.schema.json.i18n.json @@ -13,6 +13,7 @@ "c_cpp_properties.schema.json.definitions.configurations.items.properties.includePath": "Elenco di percorsi che il motore IntelliSense usa durante la ricerca delle intestazioni incluse. La ricerca in questi percorsi non è ricorsiva. Specificare `**` per indicare la ricerca ricorsiva. Ad esempio: con `${workspaceFolder}/**` la ricerca verrà estesa a tutte le sottodirectory, mentre con `${workspaceFolder}` sarà limitata a quella corrente. In genere, ciò non deve includere le inclusioni di sistema, pertanto impostare `#C_Cpp.default.compilerPath#`.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.macFrameworkPath": "Elenco di percorsi che il motore IntelliSense userà durante la ricerca delle intestazioni incluse da framework Mac. Supportato solo nella configurazione Mac.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.windowsSdkVersion": "Versione del percorso di inclusione di Windows SDK da usare in Windows, ad esempio `10.0.17134.0`.", + "c_cpp_properties.schema.json.definitions.configurations.items.properties.dotConfig": "Il percorso a un file .config creato dal sistema Kconfig. Il sistema Kconfig genera un file con tutte le define per compilare un progetto. Esempi di progetti che usano il sistema Kconfig sono Kernel Linux e NuttX RTOS.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.defines": "Elenco di definizioni del preprocessore che il motore IntelliSense usa durante l'analisi dei file. In modo facoltativo, usare `=` per impostare un valore, ad esempio VERSION=1.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.intelliSenseMode": "Modalità IntelliSense da usare per eseguire il mapping a una variante della piattaforma e dell'architettura di MSVC, gcc o Clang. Se non è impostata o se è impostata su `${default}`, sarà l'estensione a scegliere il valore predefinito per tale piattaforma. L'impostazione predefinita di Windows è `windows-msvc-x64`, quella di Linux è `linux-gcc-x64` e quella di macOS è `macos-clang-x64`. Le modalità IntelliSense che specificano solo varianti `-` (ad esempio `gcc-x64`) sono modalità legacy e vengono convertite automaticamente nelle varianti `--` in base alla piattaforma host.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.forcedInclude": "Elenco di file che devono essere inclusi prima di qualsiasi file include in un'unità di conversione.", diff --git a/Extension/i18n/ita/package.i18n.json b/Extension/i18n/ita/package.i18n.json index dc44a3db79..202643bf7a 100644 --- a/Extension/i18n/ita/package.i18n.json +++ b/Extension/i18n/ita/package.i18n.json @@ -16,7 +16,6 @@ "c_cpp.command.toggleDimInactiveRegions.title": "Attiva/Disattiva colorazione delle aree inattive", "c_cpp.command.resetDatabase.title": "Reimposta database IntelliSense", "c_cpp.command.takeSurvey.title": "Partecipa al sondaggio", - "c_cpp.command.buildAndDebugActiveFile.title": "Compila ed esegui il debug del file attivo", "c_cpp.command.restartIntelliSenseForFile.title": "Riavvia IntelliSense per il file attivo", "c_cpp.command.logDiagnostics.title": "Registra diagnostica", "c_cpp.command.referencesViewGroupByType.title": "Raggruppa per tipo riferimento", @@ -31,6 +30,8 @@ "c_cpp.command.RunCodeAnalysisOnOpenFiles.title": "Esegui analisi del codice su Apri file", "c_cpp.command.RunCodeAnalysisOnAllFiles.title": "Esegui analisi del codice su Tutti i file", "c_cpp.command.ClearCodeAnalysisSquiggles.title": "Cancella Segni di revisione di Analisi del codice", + "c_cpp.command.BuildAndDebugFile.title": "Debug file C/C++", + "c_cpp.command.BuildAndRunFile.title": "Esegui file C/C++", "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "Numero massimo di thread simultanei da utilizzare per l'elaborazione del servizio di linguaggio. Il valore è un suggerimento e non può essere sempre utilizzato. Il valore predefinito di `null` (vuoto) utilizza il numero di processori logici disponibili.", "c_cpp.configuration.maxCachedProcesses.markdownDescription": "Numero massimo di processi memorizzati nella cache da utilizzare per l'elaborazione del servizio di linguaggio. Il valore predefinito di `null` (vuoto) utilizza il doppio del numero di processori logici disponibili.", "c_cpp.configuration.maxMemory.markdownDescription": "Memoria massima (in MB) disponibile per l'elaborazione del servizio di linguaggio. Un numero minore di processi verrà memorizzato nella cache ed eseguito contemporaneamente dopo il superamento dell'utilizzo della memoria. Il valore predefinito di `null` (vuoto) utilizza la memoria disponibile del sistema.", @@ -200,6 +201,7 @@ "c_cpp.configuration.default.customConfigurationVariables.markdownDescription": "Valore da usare in una configurazione se `customConfigurationVariables` non è impostato oppure valori da inserire se `${default}` è presente come chiave in `customConfigurationVariables`.", "c_cpp.configuration.updateChannel.markdownDescription": "Impostare su `Insiders` per scaricare e installare automaticamente le build Insider più recenti dell'estensione, che includono funzionalità in arrivo e correzioni di bug.", "c_cpp.configuration.updateChannel.deprecationMessage": "Questa impostazione è deprecata. Le versioni preliminari delle estensioni ora sono disponibili tramite il Marketplace.", + "c_cpp.configuration.default.dotConfig.markdownDescription": "Il valore da usare in una configurazione se `dotConfig` non è specificato oppure il valore da inserire se `${default}` è presente in `dotConfig`.", "c_cpp.configuration.experimentalFeatures.description": "Controlla se le funzionalità \"sperimentali\" sono utilizzabili.", "c_cpp.configuration.suggestSnippets.markdownDescription": "Se è `true`, i frammenti vengono forniti dal server di linguaggio.", "c_cpp.configuration.enhancedColorization.markdownDescription": "Se questa opzione è abilitata, il codice viene colorato in base a IntelliSense. Questa impostazione si applica solo se `#C_Cpp.intelliSenseEngine#` è impostato su `Default`.", @@ -214,6 +216,7 @@ "c_cpp.configuration.debugger.useBacktickCommandSubstitution.markdownDescription": "Se è `true`, per la sostituzione del comando della shell del debugger verrà usato il carattere backtick obsoleto ``(`)``.", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: risultati di altri riferimenti.", "c_cpp.contributes.viewsWelcome.contents": "Per altre informazioni su launch.json, vedere [Configurazione del debug C/C++](https://code.visualstudio.com/docs/cpp/launch-json-reference).", + "c_cpp.configuration.debugShortcut.description": "Mostrare il pulsante Esegui ed esegui debug nella barra del titolo dell'editor per i file C++", "c_cpp.debuggers.pipeTransport.description": "Se presente, indica al debugger di connettersi a un computer remoto usando come pipe un altro eseguibile che inoltra l'input/output standard tra VS Code e l'eseguibile back-end del debugger abilitato per MI, ad esempio gdb.", "c_cpp.debuggers.pipeTransport.default.pipeProgram": "immettere il percorso assoluto per il nome del programma pipe, ad esempio '/usr/bin/ssh'.", "c_cpp.debuggers.pipeTransport.default.debuggerPath": "Percorso completo del debugger nel computer di destinazione, ad esempio /usr/bin/gdb.", diff --git a/Extension/i18n/ita/src/Debugger/configurationProvider.i18n.json b/Extension/i18n/ita/src/Debugger/configurationProvider.i18n.json index b57879ae0f..5ef8aee50c 100644 --- a/Extension/i18n/ita/src/Debugger/configurationProvider.i18n.json +++ b/Extension/i18n/ita/src/Debugger/configurationProvider.i18n.json @@ -6,23 +6,26 @@ { "default.configuration.menuitem": "Configurazione predefinita", "select.configuration": "Seleziona una configurazione", - "debug.configuration.selection.canceled": "Selezione configurazione debug annullata", - "cl.exe.not.available": "La compilazione e il debug di {0} sono utilizzabili solo quando VS Code viene eseguito da Prompt dei comandi per gli sviluppatori per Visual Studio.", - "miDebuggerPath.not.available": "miDebuggerPath non esiste: {0}. È stato installato un debugger?", "debugger.deprecated.config": "La chiave '{0}' è deprecata. In alternativa, usare '{1}'.", "debugger.not.available": "Il debugger di tipo '{0}' è disponibile solo in Windows. Usare il tipo '{1}' nella piattaforma corrente del sistema operativo.", "lldb.framework.install.xcode": "Ulteriori informazioni", "lldb.framework.not.found": "Non è possibile trovare 'LLDB.framework' per lldb-mi. Installare Xcode o gli strumenti da riga di comando Xcode.", "debugger.launchConfig": "Configurazione di avvio:", + "pre.Launch.Task": "preLaunchTask: {0}", + "build.and.debug.active.file": "compilare ed eseguire il debug del file attivo", + "cl.exe.not.available": "La compilazione e il debug di {0} sono utilizzabili solo quando VS Code viene eseguito da Prompt dei comandi per gli sviluppatori per Visual Studio.", "lldb.find.failed": "Manca la dipendenza '{0}' per l'eseguibile lldb-mi.", "lldb.search.paths": "Ricerca effettuata in:", "lldb.install.help": "Per risolvere questo problema, installare Xcode tramite Apple App Store oppure installare gli strumenti da riga di comando di Xcode eseguendo '{0}' in una finestra di terminale.", - "envfale.failed": "Non è stato possibile usare {0}. Motivo: {1}", + "envfile.failed": "Non è stato possibile usare {0}. Motivo: {1}", "replacing.sourcepath": "Sostituzione di {0} '{1}' con '{2}'.", "replacing.targetpath": "Sostituzione di {0} '{1}' con '{2}'.", "replacing.editorPath": "Sostituzione di {0} '{1}' con '{2}'.", "resolving.variables.in.sourcefilemap": "Risoluzione delle variabili in {0}...", "open.envfile": "Apri {0}", + "cannot.build.non.cpp": "Non è possibile compilare ed eseguire il debug perché il file attivo non è un file di origine C o C++.", + "no.compiler.found": "Non è stato trovato alcun compilatore", + "select.debug.configuration": "Selezionare una configurazione di debug", "unexpected.os": "Tipo di sistema operativo imprevisto", "path.to.pipe.program": "percorso completo del programma pipe, ad esempio {0}", "enable.pretty.printing": "Abilita la riformattazione per {0}", diff --git a/Extension/i18n/ita/src/LanguageServer/extension.i18n.json b/Extension/i18n/ita/src/LanguageServer/extension.i18n.json index d7eb406894..3d4356d8a9 100644 --- a/Extension/i18n/ita/src/LanguageServer/extension.i18n.json +++ b/Extension/i18n/ita/src/LanguageServer/extension.i18n.json @@ -6,6 +6,10 @@ { "learn.how.to.install.a.library": "Informazioni su come installare una libreria per questa intestazione con vcpkg", "copy.vcpkg.command": "Copiare il comando vcpkg per installare '{0}' negli Appunti", + "more.info.button": "Altre informazioni", + "ignore.button": "Ignora", + "vsix.platform.incompatible": "L'estensione C/C++ installata non corrisponde al sistema.", + "vsix.platform.mismatching": "L'estensione C/C++ installata è compatibile con il sistema, ma non corrisponde allo stesso.", "client.not.found": "client non trovato", "configuration.select.first": "Aprire prima una cartella per selezionare una configurazione", "configuration.provider.select.first": "Aprire prima una cartella per selezionare un provider di configurazione", diff --git a/Extension/i18n/ita/src/nativeStrings.i18n.json b/Extension/i18n/ita/src/nativeStrings.i18n.json index 1cc1f47faa..1671c966ce 100644 --- a/Extension/i18n/ita/src/nativeStrings.i18n.json +++ b/Extension/i18n/ita/src/nativeStrings.i18n.json @@ -81,7 +81,7 @@ "error_squiggles_enabled_if_all_headers_resolve": "I segni di revisione per gli errori sono abilitati se vengono risolte tutte le dipendenze dell'intestazione.", "replaced_placeholder_file_record": "Record del file segnaposto sostituito", "tag_parsing_file": "analisi dei tag del file: {0}", - "tag_parsing_error": "Si è verificato un errore durante l'analisi dei tag, ma potrebbe non essere rilevante. Specificare se non è stato possibile trovare i simboli nel file: {0}", + "tag_parsing_error": "errore di analisi dei tag (questa operazione può essere ignorata a meno che non vengano trovati simboli):", "reset_timestamp_for": "Reimposta il timestamp per {0}", "remove_file_failed": "Non è stato possibile rimuovere il file {0}", "regex_parse_error": "Errore di analisi regex. Criterio vscode: {0}. Regex: {1}. Messaggio di errore: {2}", @@ -216,5 +216,8 @@ "inline_macro": "Macro inline", "unable_to_access_browse_database": "Impossibile accedere al database di esplorazione. ({0})", "default_compiler_path_modified_explicit_intellisense_mode": "IntelliSenseMode è stato modificato perché non corrisponde al compilatore rilevato. Provare a impostare \"compilerPath\". Impostare \"compilerPath\" su \"\" per disabilitare il rilevamento delle inclusioni e delle definizioni del sistema.", - "clear_code_analysis_squiggles": "Cancella segni di revisione di analisi del codice" + "clear_code_analysis_squiggles": "Cancella segni di revisione di analisi del codice", + "multiple_locations_note": "(Più località)", + "folder_tag": "Cartella", + "file_tag": "File" } \ No newline at end of file diff --git a/Extension/i18n/ita/ui/settings.html.i18n.json b/Extension/i18n/ita/ui/settings.html.i18n.json index cdfb65cf75..e88571a3ee 100644 --- a/Extension/i18n/ita/ui/settings.html.i18n.json +++ b/Extension/i18n/ita/ui/settings.html.i18n.json @@ -52,6 +52,8 @@ "forced.include": "Inclusione forzata", "forced.include.description": "Elenco di file che devono essere inclusi prima dell'elaborazione di altri caratteri nel file di origine. I file vengono inclusi nell'ordine elencato.", "one.file.per.line": "Un file per riga.", + "dot.config": "Dot Config", + "dot.config.description": "Il percorso a un file .config creato dal sistema Kconfig. Il sistema Kconfig genera un file con tutte le define per compilare un progetto. Esempi di progetti che usano il sistema Kconfig sono Kernel Linux e NuttX RTOS.", "compile.commands": "Comandi di compilazione", "compile.commands.description": "Percorso completo del file {0} per l'area di lavoro. Verranno usati i percorsi di inclusione e le direttive define individuati in questo file invece dei valori specificati per le impostazioni {1} e {2}. Se il database dei comandi di compilazione non contiene una voce per l'unità di conversione corrispondente al file aperto nell'editor, verrà visualizzato un messaggio di avviso e l'estensione userà le impostazioni {3} e {4}.", "merge.configurations": "Unire configurazioni", diff --git a/Extension/i18n/jpn/Reinstalling the Extension.md.i18n.json b/Extension/i18n/jpn/Reinstalling the Extension.md.i18n.json new file mode 100644 index 0000000000..e2fa2360f6 --- /dev/null +++ b/Extension/i18n/jpn/Reinstalling the Extension.md.i18n.json @@ -0,0 +1,21 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "incompatible.extension.heading": "互換性がない、または一致しない C/C++ 拡張バイナリ", + "incompat.extension.text1": "C/C++ 拡張機能には、ネイティブ バイナリが含まれています。", + "incompat.extension.text2": "VS Codeのマーケットプレース UI を介してインストールする場合は、正しいネイティブ バイナリを含める必要があります。 互換性のないバイナリが検出され、VS Codeのマーケットプレース UI を介して C/C++ 拡張機能がインストールされている場合は、{0}。", + "bug.report.link.title": "問題を報告してください", + "reinstalling.extension.heading": "C/C++ 拡張機能の再インストール", + "reinstall.extension.text1": "同等のバージョンの拡張機能を再インストールする場合、VS Code は既存の拡張機能ディレクトリを再利用できます。C/C++ 拡張機能を再インストールするときにこの問題が発生しないようにするには、最初に既存の拡張ディレクトリを削除する必要がある場合があります。", + "reinstall.extension.text2": "インストールされている拡張ディレクトリは、ユーザー ディレクトリ (Windows の場合は '%USERPROFILE%'、Linux および macOS では '$HOME') の下にある次のいずれかのパスにあります", + "reinstall.extension.text3": "リモート接続の場合:", + "reinstall.extension.text4": "インストールされている C/C++ 拡張ディレクトリへのパスの例:", + "reinstall.extension.text5": "Windows の場合:", + "reinstall.extension.text6": "Linux の場合:", + "reinstall.extension.text7": "次に、VS Code のマーケットプレース UI を使用して再インストールします。", + "reinstall.extension.text8": "拡張機能の正しいバージョンを VS Code で展開できない場合は、。VS Codeのマーケットプレース UI のメニューにある '...' の下の [VSIX からインストールする...] オプションを使用して、システムの正しい VSIX を {0} し、インストールできます。", + "download.vsix.link.title": "VS Code マーケットプレイス Web サイトからダウンロードされました" +} \ No newline at end of file diff --git a/Extension/i18n/jpn/c_cpp_properties.schema.json.i18n.json b/Extension/i18n/jpn/c_cpp_properties.schema.json.i18n.json index e46c9e2c98..83856d027b 100644 --- a/Extension/i18n/jpn/c_cpp_properties.schema.json.i18n.json +++ b/Extension/i18n/jpn/c_cpp_properties.schema.json.i18n.json @@ -13,6 +13,7 @@ "c_cpp_properties.schema.json.definitions.configurations.items.properties.includePath": "インクルードされたヘッダーを検索する際に IntelliSense エンジンによって使用されるパスの一覧です。これらのパスでの検索は再帰的ではありません。再帰的な検索を示すには、`**` を指定します。たとえば、`${workspaceFolder}/**` を指定するとすべてのサブディレクトリが検索されますが、`${workspaceFolder}` はそうではありません。通常、これにはシステム インクルードを含めるべきではありません。 代わりに、`C_Cpp.default.compilerPath` を設定します。", "c_cpp_properties.schema.json.definitions.configurations.items.properties.macFrameworkPath": "Mac フレームワークからインクルードされたヘッダーを検索する際に Intellisense エンジンが使用するパスの一覧です。Mac 構成でのみサポートされます。", "c_cpp_properties.schema.json.definitions.configurations.items.properties.windowsSdkVersion": "Windows で使用する Windows SDK インクルード パスのバージョン (例: `10.0.17134.0`)。", + "c_cpp_properties.schema.json.definitions.configurations.items.properties.dotConfig": "Kconfig システムによって作成された.config ファイルへのパス。Kconfig システムは、プロジェクトをビルドするためのすべての定義を含むファイルを生成します。Kconfig システムを使用するプロジェクトの例としては、Linux Kernel と NuttX RTOS があります。", "c_cpp_properties.schema.json.definitions.configurations.items.properties.defines": "ファイルを解析する際に IntelliSense エンジンが使用するプリプロセッサ定義の一覧です。必要に応じて、`=` を使用して値を設定します (例: `VERSION=1`)。", "c_cpp_properties.schema.json.definitions.configurations.items.properties.intelliSenseMode": "プラットフォームおよびアーキテクチャのバリアント (MSVC、gcc、Clang) へのマップに使用する IntelliSense モードです。値が設定されていない、または `${default}` に設定されている場合、拡張機能ではそのプラットフォームの既定値が選択されます。Windows の既定値は `windows-msvc-x64`、Linux の既定値は `linux-gcc-x64`、macOS の既定値は `macos-clang-x64` です。`<コンパイラ>-<アーキテクチャ>` バリエント (例: `gcc-x64`) のみを指定する IntelliSense モードはレガシ モードであり、ホスト プラットフォームに基づいて `<プラットフォーム>-<コンパイラ>-<アーキテクチャ>` に自動的に変換されます。", "c_cpp_properties.schema.json.definitions.configurations.items.properties.forcedInclude": "翻訳単位のインクルード ファイルの前に含める必要があるファイルの一覧。", diff --git a/Extension/i18n/jpn/package.i18n.json b/Extension/i18n/jpn/package.i18n.json index 15e0a882c1..28a2c79c12 100644 --- a/Extension/i18n/jpn/package.i18n.json +++ b/Extension/i18n/jpn/package.i18n.json @@ -16,7 +16,6 @@ "c_cpp.command.toggleDimInactiveRegions.title": "非アクティブな領域の色づけの切り替え", "c_cpp.command.resetDatabase.title": "IntelliSense データベースのリセット", "c_cpp.command.takeSurvey.title": "アンケートに答える", - "c_cpp.command.buildAndDebugActiveFile.title": "アクティブ ファイルのビルドとデバッグ", "c_cpp.command.restartIntelliSenseForFile.title": "アクティブ ファイルに対して IntelliSense を再起動する", "c_cpp.command.logDiagnostics.title": "診断のログ記録", "c_cpp.command.referencesViewGroupByType.title": "参照渡し型でグループ化", @@ -31,6 +30,8 @@ "c_cpp.command.RunCodeAnalysisOnOpenFiles.title": "開いているファイルで Code Analysis を実行する", "c_cpp.command.RunCodeAnalysisOnAllFiles.title": "すべてのファイルで Code Analysis を実行する", "c_cpp.command.ClearCodeAnalysisSquiggles.title": "コード分析の波線のクリア", + "c_cpp.command.BuildAndDebugFile.title": "C/C++ ファイルのデバッグ", + "c_cpp.command.BuildAndRunFile.title": "C/C++ ファイルの実行", "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "言語サービスの処理に使用する同時実行スレッドの最大数。値はヒントであり、常に使用されるとは限りません。既定値の `null` (空) では、使用可能な論理プロセッサの数が使用されます。", "c_cpp.configuration.maxCachedProcesses.markdownDescription": "言語サービスの処理に使用するキャッシュされたプロセスの最大数。既定値の `null` (空) では、使用可能な論理プロセッサの数の 2 倍が使用されます。", "c_cpp.configuration.maxMemory.markdownDescription": "言語サービスの処理に使用できる最大メモリ (MB 単位)。このメモリ使用量を超えると、キャッシュされ、同時に実行されるプロセスの数が少なくなります。既定値の `null` (空) では、システムの空きメモリが使用されます。", @@ -200,6 +201,7 @@ "c_cpp.configuration.default.customConfigurationVariables.markdownDescription": "`customConfigurationVariables` が設定されていない場合に構成で使用される値、または `customConfigurationVariables` 内に `${default}` がキーとして存在する場合に挿入される値。", "c_cpp.configuration.updateChannel.markdownDescription": "`Insider` に設定すると、拡張機能の最新の Insider ビルドが自動的にダウンロードされてインストールされます。これには、次期バージョンの機能とバグ修正が含まれています。", "c_cpp.configuration.updateChannel.deprecationMessage": "この設定は非推奨です。プレリリース版の拡張機能は、Marketplace で利用できるようになりました。", + "c_cpp.configuration.default.dotConfig.markdownDescription": "`dotConfig` が指定されていない場合に構成で使用される値、または `dotConfig` 内に `${default}` が存在する場合に挿入される値。", "c_cpp.configuration.experimentalFeatures.description": "\"experimental\" の機能を使用できるかどうかを制御します。", "c_cpp.configuration.suggestSnippets.markdownDescription": "`true` の場合、スニペットは言語サーバーによって提供されます。", "c_cpp.configuration.enhancedColorization.markdownDescription": "有効にすると、IntelliSense に基づいてコードが色分けされます。この設定は、 `#C_Cpp.intelliSenseEngine#` が `Default` に設定されている場合にのみ適用されます。", @@ -214,6 +216,7 @@ "c_cpp.configuration.debugger.useBacktickCommandSubstitution.markdownDescription": "`true` の場合、デバッガー シェルのコマンド置換では古いバックティック ``(`)`` が使用されます。", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: その他の参照結果。", "c_cpp.contributes.viewsWelcome.contents": "launch.json に関する詳細については、[C/C++ デバッグを構成する](https://code.visualstudio.com/docs/cpp/launch-json-reference) を参照してください。", + "c_cpp.configuration.debugShortcut.description": "C++ ファイルのエディター タイトル バーに [実行とデバッグの再生] ボタンを表示する", "c_cpp.debuggers.pipeTransport.description": "これを指定すると、デバッガーにより、別の実行可能ファイルをパイプとして使用してリモート コンピューターに接続され、VS Code と MI 対応のデバッガー バックエンド実行可能ファイル (gdb など) との間で標準入出力が中継されます。", "c_cpp.debuggers.pipeTransport.default.pipeProgram": "パイプ プログラム名の完全修飾パスを入力してください (例: '/usr/bin/ssh')。", "c_cpp.debuggers.pipeTransport.default.debuggerPath": "対象マシン上のデバッガーへの完全なパス。例: /usr/bin/gdb。", diff --git a/Extension/i18n/jpn/src/Debugger/configurationProvider.i18n.json b/Extension/i18n/jpn/src/Debugger/configurationProvider.i18n.json index d271103c75..06305dfcf6 100644 --- a/Extension/i18n/jpn/src/Debugger/configurationProvider.i18n.json +++ b/Extension/i18n/jpn/src/Debugger/configurationProvider.i18n.json @@ -6,23 +6,26 @@ { "default.configuration.menuitem": "既定の構成", "select.configuration": "構成の選択", - "debug.configuration.selection.canceled": "デバッグ構成の選択が取り消されました", - "cl.exe.not.available": "{0} のビルドとデバッグを使用できるのは、VS 用開発者コマンド プロンプトから VS Code を実行する場合のみです。", - "miDebuggerPath.not.available": "miDebuggerPath が存在しません: {0}。デバッガーはインストールされていますか?", "debugger.deprecated.config": "キー '{0}' は非推奨です。代わりに '{1}' をお使いください。", "debugger.not.available": "タイプ '{0}' のデバッガーは、Windows でのみ使用できます。現在の OS プラットフォームでは、タイプ '{1}' を使用してください。", "lldb.framework.install.xcode": "詳細", "lldb.framework.not.found": "lldb-mi の 'LLDB.framework' が見つかりません。XCode または XCode コマンド ライン ツールをインストールしてください。", "debugger.launchConfig": "起動の構成:", + "pre.Launch.Task": "preLaunchTask: {0}", + "build.and.debug.active.file": "アクティブ ファイルのビルドとデバッグ", + "cl.exe.not.available": "{0} のビルドとデバッグを使用できるのは、VS 用開発者コマンド プロンプトから VS Code を実行する場合のみです。", "lldb.find.failed": "lldb-mi 実行可能ファイルの依存関係 '{0}' が見つかりません。", "lldb.search.paths": "検索対象:", "lldb.install.help": "この問題を解決するには、Apple App Store から XCode をインストールするか、またはターミナル ウィンドウで '{0}' を実行して XCode コマンド ライン ツールをインストールしてください。", - "envfale.failed": "{0} を使用できませんでした。理由: {1}", + "envfile.failed": "{0} を使用できませんでした。理由: {1}", "replacing.sourcepath": "{0} '{1}' を '{2}' と置き換えています。", "replacing.targetpath": "{0} '{1}' を '{2}' と置き換えています。", "replacing.editorPath": "{0} の '{1}' を '{2}' と置き換えています。", "resolving.variables.in.sourcefilemap": "{0} の変数を解決しています...", "open.envfile": "{0} を開く", + "cannot.build.non.cpp": "アクティブ ファイルが C または C++ ソース ファイルではないため、ビルドおよびデバッグできません。", + "no.compiler.found": "コンパイラが見つかりませんでした", + "select.debug.configuration": "デバッグ構成を選択する", "unexpected.os": "予期しない OS の種類", "path.to.pipe.program": "{0} などのパイプ プログラムへの完全なパス", "enable.pretty.printing": "{0} の再フォーマットを有効にする", diff --git a/Extension/i18n/jpn/src/LanguageServer/extension.i18n.json b/Extension/i18n/jpn/src/LanguageServer/extension.i18n.json index 6b2123862e..ce1c6a9ab3 100644 --- a/Extension/i18n/jpn/src/LanguageServer/extension.i18n.json +++ b/Extension/i18n/jpn/src/LanguageServer/extension.i18n.json @@ -6,6 +6,10 @@ { "learn.how.to.install.a.library": "このヘッダーのライブラリを vcpkg でインストールする方法の詳細", "copy.vcpkg.command": "'{0}' をインストールするための vcpkg コマンドをクリップボードにコピーする", + "more.info.button": "詳細", + "ignore.button": "無視", + "vsix.platform.incompatible": "インストールされている C/C++ 拡張機能がシステムと一致しません。", + "vsix.platform.mismatching": "インストールされている C/C++ 拡張機能は、システムと互換性がありますが、一致しません。", "client.not.found": "クライアントが見つかりませんでした", "configuration.select.first": "構成を選択するには、まずフォルダーを開いてください", "configuration.provider.select.first": "構成プロバイダーを選択するには、まずフォルダーを開いてください", diff --git a/Extension/i18n/jpn/src/nativeStrings.i18n.json b/Extension/i18n/jpn/src/nativeStrings.i18n.json index 7531cccd05..1da60c595b 100644 --- a/Extension/i18n/jpn/src/nativeStrings.i18n.json +++ b/Extension/i18n/jpn/src/nativeStrings.i18n.json @@ -81,7 +81,7 @@ "error_squiggles_enabled_if_all_headers_resolve": "すべてのヘッダーの依存関係が解決されると、エラーの波線が有効になります。", "replaced_placeholder_file_record": "プレースホルダー ファイル レコードを置換しました", "tag_parsing_file": "ファイルのタグを解析中: {0}", - "tag_parsing_error": "タグの解析でエラーが見つかりましたが、問題ない可能性があります。ファイル内のシンボルが見つからない場合は、お問い合わせください。{0}", + "tag_parsing_error": "tag parsing error (this can be ignored unless symbols can't be found):", "reset_timestamp_for": "{0} のタイムスタンプのリセット", "remove_file_failed": "ファイルを削除できませんでした: {0}", "regex_parse_error": "RegEx 解析エラー - vscode パターン: {0}、RegEx: {1}、エラー メッセージ: {2}", @@ -216,5 +216,8 @@ "inline_macro": "Inline マクロ", "unable_to_access_browse_database": "参照データベースにアクセスできません。({0})", "default_compiler_path_modified_explicit_intellisense_mode": "IntelliSenseMode は、検出されたコンパイラと一致しなかったため、変更されました。 代わりに \"compilerPath\" を設定することを検討してください。 システム インクルードと定義の検出を無効にするには、\"compilerPath\" を \"\" に設定します。", - "clear_code_analysis_squiggles": "コード分析波線をクリアする" + "clear_code_analysis_squiggles": "コード分析波線をクリアする", + "multiple_locations_note": "(複数の場所)", + "folder_tag": "フォルダー", + "file_tag": "ファイル" } \ No newline at end of file diff --git a/Extension/i18n/jpn/ui/settings.html.i18n.json b/Extension/i18n/jpn/ui/settings.html.i18n.json index e869a56fd2..673aadaaeb 100644 --- a/Extension/i18n/jpn/ui/settings.html.i18n.json +++ b/Extension/i18n/jpn/ui/settings.html.i18n.json @@ -52,6 +52,8 @@ "forced.include": "強制インクルード", "forced.include.description": "ソース ファイルの他の文字が処理される前に含める必要があるファイルの一覧です。ファイルは、リストされている順序で含められます。", "one.file.per.line": "1 行につき 1 つのファイルです。", + "dot.config": "Dot Config", + "dot.config.description": "Kconfig システムによって作成された.config ファイルへのパス。Kconfig システムは、プロジェクトをビルドするためのすべての定義を含むファイルを生成します。Kconfig システムを使用するプロジェクトの例としては、Linux Kernel と NuttX RTOS があります。", "compile.commands": "コンパイル コマンド", "compile.commands.description": "ワークスペースの {0} ファイルへの完全なパスです。このファイルで検出されたインクルード パスおよび定義は、{1} および {2} の設定に設定されている値の代わりに使用されます。コンパイル コマンド データベースに、エディターで開いたファイルに対応する翻訳単位のエントリが含まれていない場合は、警告メッセージが表示され、代わりに拡張機能では {3} および {4} の設定が使用されます。", "merge.configurations": "構成のマージ", diff --git a/Extension/i18n/kor/Reinstalling the Extension.md.i18n.json b/Extension/i18n/kor/Reinstalling the Extension.md.i18n.json new file mode 100644 index 0000000000..a6bbb5edce --- /dev/null +++ b/Extension/i18n/kor/Reinstalling the Extension.md.i18n.json @@ -0,0 +1,21 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "incompatible.extension.heading": "호환되지 않거나 일치하지 않는 C/C++ 확장 이진 파일", + "incompat.extension.text1": "C/C++ 확장에는 기본 이진 파일이 포함되어 있습니다.", + "incompat.extension.text2": "VS Code의 마켓플레이스 UI를 통해 설치하는 경우 올바른 기본 이진 파일이 포함되어야 합니다. 호환되지 않는 이진 파일이 감지되고 C/C++ 확장이 VS Code의 마켓플레이스 UI를 통해 설치된 경우 {0}.", + "bug.report.link.title": "문제를 보고하세요", + "reinstalling.extension.heading": "C/C++ 확장 다시 설치", + "reinstall.extension.text1": "동등한 버전의 확장을 다시 설치할 때 VS Code는 기존 확장 디렉터리를 재사용할 수 있습니다. C/C++ 확장을 다시 설치할 때 이러한 문제가 발생하지 않도록 하려면 먼저 기존 확장 디렉터리를 삭제해야 할 수 있습니다.", + "reinstall.extension.text2": "설치된 확장 디렉터리는 사용자 디렉터리 아래의 다음 경로 중 하나에서 찾을 수 있습니다(Windows의 경우 `%USERPROFILE%`, Linux 및 macOS의 경우 `$HOME`).", + "reinstall.extension.text3": "원격 연결에서:", + "reinstall.extension.text4": "설치된 C/C++ 확장 디렉터리의 경로 예:", + "reinstall.extension.text5": "Windows에서:", + "reinstall.extension.text6": "Linux에서:", + "reinstall.extension.text7": "그런 다음 VS Code의 마켓플레이스 UI를 통해 다시 설치합니다.", + "reinstall.extension.text8": "확장 프로그램의 올바른 버전이 VS Code에 의해 배포되지 않으면 시스템에 올바른 VSIX가 {0}일 수 있고 VS Code의 마켓플레이스 UI의 '...' 메뉴 아래 'VSIX에서 설치...' 옵션을 사용하여 설치할 수 있습니다.", + "download.vsix.link.title": "VS Code 마켓플레이스 웹 사이트에서 다운로드" +} \ No newline at end of file diff --git a/Extension/i18n/kor/c_cpp_properties.schema.json.i18n.json b/Extension/i18n/kor/c_cpp_properties.schema.json.i18n.json index 5c7549070a..3f8afcfd92 100644 --- a/Extension/i18n/kor/c_cpp_properties.schema.json.i18n.json +++ b/Extension/i18n/kor/c_cpp_properties.schema.json.i18n.json @@ -13,6 +13,7 @@ "c_cpp_properties.schema.json.definitions.configurations.items.properties.includePath": "포함된 헤더를 검색하는 동안 사용할 IntelliSense 엔진의 경로 목록입니다. 이러한 경로 검색은 비재귀적입니다. 재귀적 검색을 나타내려면 `**`를 지정합니다. 예를 들어 `${workspaceFolder}/**`는 모든 하위 디렉터리를 검색하지만 `${workspaceFolder}`는 하위 디렉터리를 검색하지 않습니다. 일반적으로 시스템 포함은 포함되지 않아야 하고 `C_Cpp.default.compilerPath`가 설정되어야 합니다.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.macFrameworkPath": "Mac 프레임워크에서 포함된 헤더를 검색하는 동안 사용할 IntelliSense 엔진의 경로 목록입니다. Mac 구성에서만 지원됩니다.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.windowsSdkVersion": "Windows에서 사용할 Windows SDK 포함 경로의 버전입니다(예: `10.0.17134.0`).", + "c_cpp_properties.schema.json.definitions.configurations.items.properties.dotConfig": "Kconfig 시스템에서 만든 .config 파일의 경로입니다. Kconfig 시스템은 프로젝트를 빌드하기 위한 모든 정의가 포함된 파일을 생성합니다. Kconfig 시스템을 사용하는 프로젝트의 예로는 Linux 커널 및 ExpresstX RTOS가 있습니다.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.defines": "파일을 구문 분석하는 동안 사용할 IntelliSense 엔진의 전처리기 정의 목록입니다. 선택적으로 `=`를 사용하여 값을 설정합니다(예: `VERSION=1`).", "c_cpp_properties.schema.json.definitions.configurations.items.properties.intelliSenseMode": "MSVC, gcc 또는 Clang의 플랫폼 및 아키텍처 변형에 매핑되는 사용할 IntelliSense 모드입니다. 설정되지 않거나 `${default}`로 설정된 경우 확장에서 해당 플랫폼의 기본값을 선택합니다. Windows의 경우 기본값인 `windows-msvc-x64`로 설정되고, Linux의 경우 기본값인 `linux-gcc-x64`로 설정되며, macOS의 경우 기본값인 `macos-clang-x64`로 설정됩니다. `-` 변형(예: `gcc-x64`)만 지정하는 IntelliSense 모드는 레거시 모드이며 호스트 플랫폼에 따라 `--` 변형으로 자동으로 변환됩니다.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.forcedInclude": "변환 단위에서 포함 파일 앞에 포함해야 하는 파일의 목록입니다.", diff --git a/Extension/i18n/kor/package.i18n.json b/Extension/i18n/kor/package.i18n.json index c29f5154ef..366837b538 100644 --- a/Extension/i18n/kor/package.i18n.json +++ b/Extension/i18n/kor/package.i18n.json @@ -16,7 +16,6 @@ "c_cpp.command.toggleDimInactiveRegions.title": "비활성 영역 색 지정 설정/해제", "c_cpp.command.resetDatabase.title": "IntelliSense 데이터베이스 다시 설정", "c_cpp.command.takeSurvey.title": "설문 조사 참여", - "c_cpp.command.buildAndDebugActiveFile.title": "활성 파일 빌드 및 디버그", "c_cpp.command.restartIntelliSenseForFile.title": "활성 파일에 대한 IntelliSense 다시 시작", "c_cpp.command.logDiagnostics.title": "진단 정보 로그", "c_cpp.command.referencesViewGroupByType.title": "참조 형식으로 그룹화", @@ -31,6 +30,8 @@ "c_cpp.command.RunCodeAnalysisOnOpenFiles.title": "열린 파일에서 코드 분석 실행", "c_cpp.command.RunCodeAnalysisOnAllFiles.title": "모든 파일에 대한 코드 분석 실행", "c_cpp.command.ClearCodeAnalysisSquiggles.title": "코드 분석 물결선 지우기", + "c_cpp.command.BuildAndDebugFile.title": "C/C++ 파일 디버그", + "c_cpp.command.BuildAndRunFile.title": "C/C++ 파일 실행", "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "언어 서비스 처리에 사용할 최대 동시 스레드 수입니다. 값은 힌트이며 항상 사용되는 것은 아닙니다. 기본값 `null`(비어 있음)은 사용 가능한 논리 프로세서 수를 사용합니다.", "c_cpp.configuration.maxCachedProcesses.markdownDescription": "언어 서비스 처리에 사용할 최대 캐시 프로세스 수입니다. 기본값인 `null`(비어 있음)은 사용 가능한 논리 프로세서 수의 두 배를 사용합니다.", "c_cpp.configuration.maxMemory.markdownDescription": "언어 서비스 처리에 사용할 수 있는 최대 메모리(MB)입니다. 이 메모리 사용량이 초과되면 더 적은 수의 프로세스가 캐시되고 동시에 실행됩니다. 기본값 `null`(비어 있음)은 시스템의 여유 메모리를 사용합니다.", @@ -200,6 +201,7 @@ "c_cpp.configuration.default.customConfigurationVariables.markdownDescription": "`customConfigurationVariables`가 설정되지 않은 경우 구성에서 사용할 값 또는 `${default}`가 `customConfigurationVariables`에 키로 존재하는 경우 삽입할 값입니다.", "c_cpp.configuration.updateChannel.markdownDescription": "예정된 기능과 버그 수정을 포함하는 확장의 최신 참가자 빌드를 자동으로 다운로드하여 설치하려면 `Insiders`로 설정합니다.", "c_cpp.configuration.updateChannel.deprecationMessage": "이 설정은 사용되지 않습니다. 이제 Marketplace를 통해 시험판 확장을 사용할 수 있습니다.", + "c_cpp.configuration.default.dotConfig.markdownDescription": "`dotConfig`가 지정되지 않은 경우 구성에서 사용할 값 또는 `${default}`가 `dotConfig`에 있는 경우 삽입할 값입니다.", "c_cpp.configuration.experimentalFeatures.description": "\"실험적\" 기능을 사용할 수 있는지 여부를 제어합니다.", "c_cpp.configuration.suggestSnippets.markdownDescription": "`true`이면 언어 서버에서 코드 조각을 제공합니다.", "c_cpp.configuration.enhancedColorization.markdownDescription": "사용하도록 설정된 경우 IntelliSense를 기반으로 코드 색이 지정됩니다. `#C_Cpp.intelliSenseEngine#`이 `Default`로 설정된 경우에만 이 설정이 적용됩니다.", @@ -214,6 +216,7 @@ "c_cpp.configuration.debugger.useBacktickCommandSubstitution.markdownDescription": "`true`인 경우 디버거 셸 명령 대체가 사용되지 않는 백틱``(`)``을 사용합니다.", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: 기타 참조 결과", "c_cpp.contributes.viewsWelcome.contents": "launch.json에 대한 자세한 내용은 [C/C++ 디버깅 구성](https://code.visualstudio.com/docs/cpp/launch-json-reference)을 참조하세요.", + "c_cpp.configuration.debugShortcut.description": "C++ 파일의 편집기 제목 표시줄에 실행 및 디버그 재생 단추 표시", "c_cpp.debuggers.pipeTransport.description": "있을 경우 VS Code와 MI 지원 디버거 백 엔드 실행 파일(예: gdb) 사이에 표준 입출력을 릴레이하는 파이프로 다른 실행 파일을 사용하여 원격 컴퓨터에 연결되도록 디버거를 지정합니다.", "c_cpp.debuggers.pipeTransport.default.pipeProgram": "파이프 프로그램 이름의 정규화된 경로 입력(예: '/usr/bin/ssh')", "c_cpp.debuggers.pipeTransport.default.debuggerPath": "대상 컴퓨터에서 디버거의 전체 경로(예: /usr/bin/gdb)입니다.", diff --git a/Extension/i18n/kor/src/Debugger/configurationProvider.i18n.json b/Extension/i18n/kor/src/Debugger/configurationProvider.i18n.json index a36516543a..ef08dc7bf6 100644 --- a/Extension/i18n/kor/src/Debugger/configurationProvider.i18n.json +++ b/Extension/i18n/kor/src/Debugger/configurationProvider.i18n.json @@ -6,23 +6,26 @@ { "default.configuration.menuitem": "기본 구성", "select.configuration": "구성을 선택합니다.", - "debug.configuration.selection.canceled": "디버그 구성 선택 취소됨", - "cl.exe.not.available": "{0} 빌드 및 디버그는 VS의 개발자 명령 프롬프트에서 VS Code를 실행하는 경우에만 사용할 수 있습니다.", - "miDebuggerPath.not.available": "miDebuggerPath가 없습니다. {0}. 디버거가 설치되었습니까?", "debugger.deprecated.config": "'{0}' 키는 사용되지 않습니다. 대신 '{1}'을(를) 사용하세요.", "debugger.not.available": "'{0}' 형식 디버거는 Windows에서만 사용할 수 있습니다. 현재 OS 플랫폼에서는 '{1}' 형식을 사용하세요.", "lldb.framework.install.xcode": "추가 정보", "lldb.framework.not.found": "lldb-mi에 대한 'LLDB.framework'를 찾을 수 없습니다. XCode 또는 XCode 명령줄 도구를 설치하세요.", "debugger.launchConfig": "시작 구성:", + "pre.Launch.Task": "preLaunchTask: {0}", + "build.and.debug.active.file": "활성 파일 빌드 및 디버그", + "cl.exe.not.available": "{0} 빌드 및 디버그는 VS의 개발자 명령 프롬프트에서 VS Code를 실행하는 경우에만 사용할 수 있습니다.", "lldb.find.failed": "lldb-mi 실행 파일에 대한 '{0}' 종속성이 없습니다.", "lldb.search.paths": "다음에서 검색됨:", "lldb.install.help": "이 문제를 해결하려면 Apple App Store를 통해 XCode를 설치하거나, 터미널 창에서 '{0}'을(를) 실행하여 XCode 명령줄 도구를 설치하세요.", - "envfale.failed": "{0}을(를) 사용하지 못했습니다. 이유: {1}", + "envfile.failed": "{0}을(를) 사용하지 못했습니다. 이유: {1}", "replacing.sourcepath": "{0} '{1}'을(를) '{2}'(으)로 바꾸는 중입니다.", "replacing.targetpath": "{0} '{1}'을(를) '{2}'(으)로 바꾸는 중입니다.", "replacing.editorPath": "{0} '{1}'을(를) '{2}'(으)로 바꾸는 중입니다.", "resolving.variables.in.sourcefilemap": "{0}에서 변수를 확인하는 중...", "open.envfile": "{0} 열기", + "cannot.build.non.cpp": "활성 파일이 C 또는 C++ 소스 파일이 아니므로 빌드 및 디버그할 수 없습니다.", + "no.compiler.found": "컴파일러를 찾을 수 없음", + "select.debug.configuration": "디버그 구성 선택", "unexpected.os": "예기치 않은 OS 유형", "path.to.pipe.program": "{0} 같은 파이프 프로그램의 전체 경로", "enable.pretty.printing": "{0}에 자동 서식 지정 사용", diff --git a/Extension/i18n/kor/src/LanguageServer/extension.i18n.json b/Extension/i18n/kor/src/LanguageServer/extension.i18n.json index 0cd5e701cd..91e7658bf3 100644 --- a/Extension/i18n/kor/src/LanguageServer/extension.i18n.json +++ b/Extension/i18n/kor/src/LanguageServer/extension.i18n.json @@ -6,6 +6,10 @@ { "learn.how.to.install.a.library": "vcpkg를 사용하여 이 헤더의 라이브러리를 설치하는 방법 알아보기", "copy.vcpkg.command": "'{0}'을(를) 설치할 vcpkg 명령을 클립보드에 복사", + "more.info.button": "더 많은 정보", + "ignore.button": "무시", + "vsix.platform.incompatible": "설치된 C/C++ 확장이 시스템과 일치하지 않습니다.", + "vsix.platform.mismatching": "설치된 C/C++ 확장이 시스템과 호환되지만 일치하지 않습니다.", "client.not.found": "클라이언트를 찾을 수 없음", "configuration.select.first": "먼저 구성을 선택할 폴더 열기", "configuration.provider.select.first": "먼저 구성 공급자를 선택할 폴더 열기", diff --git a/Extension/i18n/kor/src/nativeStrings.i18n.json b/Extension/i18n/kor/src/nativeStrings.i18n.json index 45c89794a0..5a47f54648 100644 --- a/Extension/i18n/kor/src/nativeStrings.i18n.json +++ b/Extension/i18n/kor/src/nativeStrings.i18n.json @@ -81,7 +81,7 @@ "error_squiggles_enabled_if_all_headers_resolve": "모든 헤더 종속성이 확인되면 오류 표시선을 사용할 수 있습니다.", "replaced_placeholder_file_record": "바뀐 자리 표시자 파일 레코드", "tag_parsing_file": "태그 구문 분석 파일: {0}", - "tag_parsing_error": "태그 구문 분석에 오류가 발생했지만 중요하지 않을 수 있습니다. 파일에서 기호를 찾을 수 없으면 알려 주세요. {0}", + "tag_parsing_error": "태그 구문 분석 오류(기호를 찾을 수 없는 경우 무시할 수 있음):", "reset_timestamp_for": "{0}에 대한 타임스탬프 다시 설정", "remove_file_failed": "파일을 제거하지 못했습니다. {0}", "regex_parse_error": "Regex 구문 분석 오류 - vscode 패턴: {0}, regex: {1}, 오류 메시지: {2}", @@ -216,5 +216,8 @@ "inline_macro": "인라인 매크로", "unable_to_access_browse_database": "찾아보기 데이터베이스에 액세스할 수 없습니다({0}).", "default_compiler_path_modified_explicit_intellisense_mode": "IntelliSenseMode가 검색된 컴파일러와 일치하지 않아 변경되었습니다. \"compilerPath\"를 대신 설정하는 것이 좋습니다. \"compilerPath\"를 \"\"(으)로 설정하여 시스템 포함 및 정의 검색을 사용하지 않도록 설정합니다.", - "clear_code_analysis_squiggles": "명확한 코드 분석 물결선" + "clear_code_analysis_squiggles": "명확한 코드 분석 물결선", + "multiple_locations_note": "여러 위치", + "folder_tag": "폴더", + "file_tag": "파일" } \ No newline at end of file diff --git a/Extension/i18n/kor/ui/settings.html.i18n.json b/Extension/i18n/kor/ui/settings.html.i18n.json index c2cd545c1d..71143db477 100644 --- a/Extension/i18n/kor/ui/settings.html.i18n.json +++ b/Extension/i18n/kor/ui/settings.html.i18n.json @@ -52,6 +52,8 @@ "forced.include": "강제 포함", "forced.include.description": "소스 파일의 다른 문자를 처리하기 전에 포함해야 하는 파일의 목록입니다. 파일은 나열된 순서대로 포함됩니다.", "one.file.per.line": "줄당 하나의 파일입니다.", + "dot.config": "Dot Config", + "dot.config.description": "Kconfig 시스템에서 만든 .config 파일의 경로입니다. Kconfig 시스템은 프로젝트를 빌드하기 위한 모든 정의가 포함된 파일을 생성합니다. Kconfig 시스템을 사용하는 프로젝트의 예로는 Linux 커널 및 ExpresstX RTOS가 있습니다.", "compile.commands": "컴파일 명령", "compile.commands.description": "작업 영역의 {0} 파일 전체 경로입니다. 이 파일에서 검색된 포함 경로 및 정의가 {1} 및 {2} 설정에 설정된 값 대신 사용됩니다. 사용자가 편집기에서 연 파일에 해당하는 변환 단위에 대한 항목이 컴파일 명령 데이터베이스에 포함되지 않는 경우, 경고 메시지가 나타나고 확장에서 대신 {3} 및 {4} 설정을 사용합니다.", "merge.configurations": "구성 병합", diff --git a/Extension/i18n/plk/Reinstalling the Extension.md.i18n.json b/Extension/i18n/plk/Reinstalling the Extension.md.i18n.json new file mode 100644 index 0000000000..8f63c8a193 --- /dev/null +++ b/Extension/i18n/plk/Reinstalling the Extension.md.i18n.json @@ -0,0 +1,21 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "incompatible.extension.heading": "Niekompatybilne lub niepasujące pliki binarne rozszerzenia C/C++", + "incompat.extension.text1": "Rozszerzenie C/C++ zawiera natywne pliki binarne.", + "incompat.extension.text2": "Po zainstalowaniu za pośrednictwem interfejsu użytkownika platformy handlowej w programie VS Code należy uwzględnić poprawne natywne pliki binarne. Jeśli wykryto niezgodne pliki binarne i rozszerzenie C/C++ zostało zainstalowane za pośrednictwem interfejsu użytkownika platformy handlowej w programie VS Code, {0}.", + "bug.report.link.title": "Zgłoś problem", + "reinstalling.extension.heading": "Ponowne instalowanie rozszerzenia C/C++", + "reinstall.extension.text1": "Podczas ponownego instalowania równoważnej wersji rozszerzenia, program VS Code może ponownie użyć istniejącego katalogu rozszerzeń. Aby temu zapobiec, podczas ponownej instalacji rozszerzenia C/C++, może być konieczne wstępne usunięcie istniejącego katalogu rozszerzeń.", + "reinstall.extension.text2": "Zainstalowane katalogi rozszerzeń można znaleźć w jednej z następujących ścieżek w katalogu użytkownika („%USERPROFILE%“ w systemie Windows lub „$HOME“ w systemach Linux i MacOS)", + "reinstall.extension.text3": "W połączeniu zdalnym:", + "reinstall.extension.text4": "Przykładowe ścieżki do zainstalowanych katalogów rozszerzeń C/C++:", + "reinstall.extension.text5": "W systemie Windows:", + "reinstall.extension.text6": "W systemie Linux:", + "reinstall.extension.text7": "Następnie zainstaluj ponownie za pośrednictwem interfejsu użytkownika platformy handlowej w programie VS Code.", + "reinstall.extension.text8": "Jeśli prawidłowa wersja rozszerzenia nie zostanie wdrożona przez program VS Code, można {0} i zainstalować poprawny plik VSIX dla Twojego systemu przy użyciu opcji „Zainstaluj z VISIX...“, w menu „...“, w interfejsie użytkownika platformy handlowej w programie VS Code.", + "download.vsix.link.title": "Pobrano z witryny internetowej platformy handlowej programu VS Code" +} \ No newline at end of file diff --git a/Extension/i18n/plk/c_cpp_properties.schema.json.i18n.json b/Extension/i18n/plk/c_cpp_properties.schema.json.i18n.json index fb906705ed..c48a6cdf8d 100644 --- a/Extension/i18n/plk/c_cpp_properties.schema.json.i18n.json +++ b/Extension/i18n/plk/c_cpp_properties.schema.json.i18n.json @@ -13,6 +13,7 @@ "c_cpp_properties.schema.json.definitions.configurations.items.properties.includePath": "Lista ścieżek na potrzeby aparatu funkcji IntelliSense, która ma być używana podczas wyszukiwania dołączanych nagłówków. Wyszukiwanie w tych ścieżkach nie jest rekurencyjne. Uściślij za pomocą znaku `**`, aby wskazać wyszukiwanie rekurencyjne. Na przykład wyrażenie `${workspaceFolder}/**` powoduje przeszukiwanie wszystkich podkatalogów, podczas gdy wyrażenie `${workspaceFolder}` tego nie robi. Zazwyczaj nie powinno to zawierać elementów dołączanych systemu; zamiast tego ustaw `C_Cpp.default.compilerPath`.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.macFrameworkPath": "Lista ścieżek, których aparat IntelliSense ma używać podczas wyszukiwania dołączanych nagłówków z platform na komputerach Mac. Obsługiwane tylko w konfiguracji dla komputerów Mac.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.windowsSdkVersion": "Wersja ścieżki dołączania zestawu Microsoft Windows SDK do użycia w systemie Windows, np. `10.0.17134.0`.", + "c_cpp_properties.schema.json.definitions.configurations.items.properties.dotConfig": "Ścieżka do pliku .config utworzonego przez system Kconfig. System Kconfig generuje plik ze wszystkimi definicjami na potrzeby kompilowania projektu. Przykłady projektów używających systemu Kconfig to jądro systemu Linux i system NuttX RTOS.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.defines": "Lista definicji preprocesora na potrzeby aparatu funkcji IntelliSense, które mają być używane do analizowania plików. Opcjonalnie można użyć operatora `=`, aby ustawić wartość, np. `VERSION=1`.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.intelliSenseMode": "Tryb funkcji IntelliSense umożliwiający użycie tych map na wariancie platformy lub architektury programu MSVC, gcc lub Clang. Jeśli nie jest to ustawione, lub jeśli jest ustawione na wartość `${default}`, rozszerzenie wybierze wartość domyślną dla danej platformy. Wprzypadku systemu Windows wartością domyślną jest `windows-msvc-x64`, dla Linuksa – `linux-gcc-x64`, a dla systemu macOS – `macos-clang-x64`. Tryby funkcji IntelliSense, które określają jedynie warianty `-` (np. `gcc-x64`), są trybami przestarzałymi i są one automatycznie konwertowane na warianty `--` na podstawie platformy hosta.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.forcedInclude": "Lista plików, które powinny być dołączane przed wszelkimi dołączanymi plikami w jednostce translacji.", diff --git a/Extension/i18n/plk/package.i18n.json b/Extension/i18n/plk/package.i18n.json index 4f54e18991..bbbbf54a83 100644 --- a/Extension/i18n/plk/package.i18n.json +++ b/Extension/i18n/plk/package.i18n.json @@ -16,7 +16,6 @@ "c_cpp.command.toggleDimInactiveRegions.title": "Przełączanie kolorowania regionów nieaktywnych", "c_cpp.command.resetDatabase.title": "Resetowanie bazy danych funkcji IntelliSense", "c_cpp.command.takeSurvey.title": "Wypełnij ankietę", - "c_cpp.command.buildAndDebugActiveFile.title": "Aktywny plik kompilacji i debugowania", "c_cpp.command.restartIntelliSenseForFile.title": "Uruchom ponownie funkcję IntelliSense dla aktywnego pliku", "c_cpp.command.logDiagnostics.title": "Rejestruj diagnostykę", "c_cpp.command.referencesViewGroupByType.title": "Grupuj według typu referencyjnego", @@ -31,6 +30,8 @@ "c_cpp.command.RunCodeAnalysisOnOpenFiles.title": "Uruchamianie rozszerzenia Code Analysis na otwartych plikach", "c_cpp.command.RunCodeAnalysisOnAllFiles.title": "Uruchamianie analizy kodu dla wszystkich plików", "c_cpp.command.ClearCodeAnalysisSquiggles.title": "Wyczyść zygzaki rozszerzenia Code Analysis", + "c_cpp.command.BuildAndDebugFile.title": "Debuguj plik C/C++", + "c_cpp.command.BuildAndRunFile.title": "Uruchom plik C/C++", "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "Maksymalna liczba współbieżnych wątków do użycia na potrzeby przetwarzania usług językowych. Wartość jest wskazówką i nie zawsze może być używana. Wartość domyślna `null` (pusta) używa liczby dostępnych procesorów logicznych.", "c_cpp.configuration.maxCachedProcesses.markdownDescription": "Maksymalna liczba buforowanych procesów do użycia na potrzeby przetwarzania usług językowych. Wartość domyślna `null` (pusta) używa podwójnej liczby dostępnych procesorów logicznych.", "c_cpp.configuration.maxMemory.markdownDescription": "Maksymalna ilość pamięci (w MB) dostępna na potrzeby przetwarzania usług językowych. Mniej procesów będzie buforowanych i uruchamianych współbieżnie po przekroczeniu tego użycia pamięci. Wartość domyślna `null` (pusta) używa wolnej pamięci systemu.", @@ -200,6 +201,7 @@ "c_cpp.configuration.default.customConfigurationVariables.markdownDescription": "Wartość do użycia w konfiguracji, jeśli element `customConfigurationVariables` nie został ustawiony, lub wartości do wstawienia, jeśli element `${default}` istnieje jako klucz w elemencie `customConfigurationVariables`.", "c_cpp.configuration.updateChannel.markdownDescription": "Ustaw na wartość `Insiders`, aby automatycznie pobierać i instalować najnowsze kompilacje niejawnych testerów rozszerzenia, które zawierają nadchodzące funkcje i poprawki błędów.", "c_cpp.configuration.updateChannel.deprecationMessage": "To ustawienie jest przestarzałe. Rozszerzenia w wersji wstępnej są teraz dostępne za pomocą witryny Marketplace.", + "c_cpp.configuration.default.dotConfig.markdownDescription": "Wartość do użycia w konfiguracji, jeśli element `dotConfig` nie został określony, lub wartość do wstawienia, jeśli element `${default}` istnieje w elemencie `dotConfig`.", "c_cpp.configuration.experimentalFeatures.description": "Określa, czy można używać funkcji „eksperymentalnych”.", "c_cpp.configuration.suggestSnippets.markdownDescription": "Jeśli wartość to `true`, fragmenty kodu będą dostarczane przez serwer języka.", "c_cpp.configuration.enhancedColorization.markdownDescription": "Jeśli ta opcja jest włączona, kod jest kolorowany na podstawie funkcji IntelliSense. To ustawienie ma zastosowanie tylko wtedy, gdy element `#C_Cpp.intelliSenseEngine#` jest ustawiony na wartość `Default`.", @@ -214,6 +216,7 @@ "c_cpp.configuration.debugger.useBacktickCommandSubstitution.markdownDescription": "Jeśli `true`, to podstawianie komend powłoki debuggera będzie używało przestarzałego backticka ``(`)``.", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: inne wyniki odwołań.", "c_cpp.contributes.viewsWelcome.contents": "Aby dowiedzieć się więcej na temat pliku launch.json, zobacz [Konfigurowanie debugowania C/C++](https://code.visualstudio.com/docs/cpp/launch-json-reference).", + "c_cpp.configuration.debugShortcut.description": "Pokaż przycisk Uruchom i debuguj odtwarzanie na pasku tytułu edytora plików języka C++", "c_cpp.debuggers.pipeTransport.description": "Jeśli jest obecny, zawiera instrukcje dla debugera, aby połączył się z komputerem zdalnym przy użyciu innego pliku wykonywalnego jako potoku, który będzie przekazywał standardowe wejście/wyjście między programem VS Code a plikiem wykonywalnym zaplecza debugera z włączoną obsługą indeksu MI (takim jak gdb).", "c_cpp.debuggers.pipeTransport.default.pipeProgram": "wprowadź w pełni kwalifikowaną ścieżkę na potrzeby nazwy programu potoku, na przykład '/usr/bin/ssh'.", "c_cpp.debuggers.pipeTransport.default.debuggerPath": "Pełna ścieżka do debugera na komputerze docelowym, na przykład /usr/bin/gdb.", diff --git a/Extension/i18n/plk/src/Debugger/configurationProvider.i18n.json b/Extension/i18n/plk/src/Debugger/configurationProvider.i18n.json index e72461aac9..a874a696d0 100644 --- a/Extension/i18n/plk/src/Debugger/configurationProvider.i18n.json +++ b/Extension/i18n/plk/src/Debugger/configurationProvider.i18n.json @@ -6,23 +6,26 @@ { "default.configuration.menuitem": "Konfiguracja domyślna", "select.configuration": "Wybierz konfigurację", - "debug.configuration.selection.canceled": "Anulowano wybór konfiguracji debugowania", - "cl.exe.not.available": "{0} — funkcji kompilacji i debugowania można używać tylko wtedy, gdy program VS Code został uruchomiony z wiersza polecenia dla deweloperów w programie VS.", - "miDebuggerPath.not.available": "Element miDebuggerPath nie istnieje: {0}. Czy zainstalowano debuger?", "debugger.deprecated.config": "Klucz „{0}” jest przestarzały. Zamiast niego użyj klucza „{1}”.", "debugger.not.available": "Debuger typu: „{0}” jest dostępny tylko w systemie Windows. Użyj typu: „{1}” na bieżącej platformie systemu operacyjnego.", "lldb.framework.install.xcode": "Więcej informacji", "lldb.framework.not.found": "Nie można zlokalizować elementu „LLDB.framework” dla narzędzia lldb-mi. Zainstaluj środowisko XCode lub narzędzia wiersza polecenia środowiska XCode.", "debugger.launchConfig": "Konfiguracja uruchamiania:", + "pre.Launch.Task": "preLaunchTask: {0}", + "build.and.debug.active.file": "Kompiluj i debuguj aktywny plik", + "cl.exe.not.available": "{0} — funkcji kompilacji i debugowania można używać tylko wtedy, gdy program VS Code został uruchomiony z wiersza polecenia dla deweloperów w programie VS.", "lldb.find.failed": "Brak zależności „{0}” dla pliku wykonywalnego lldb-mi.", "lldb.search.paths": "Wyszukano w:", "lldb.install.help": "Aby rozwiązać ten problem, zainstaluj środowisko XCode za pośrednictwem sklepu Apple App Store lub zainstaluj narzędzia wiersza polecenia środowiska XCode, uruchamiając polecenie „{0}” w oknie terminala.", - "envfale.failed": "Nie można użyć elementu {0}. Przyczyna: {1}", + "envfile.failed": "Nie można użyć elementu {0}. Przyczyna: {1}", "replacing.sourcepath": "Zamienianie wartości zmiennej {0} z „{1}” na „{2}”.", "replacing.targetpath": "Zamienianie wartości zmiennej {0} z „{1}” na „{2}”.", "replacing.editorPath": "Zamienianie elementu {0} „{1}” na element „{2}”.", "resolving.variables.in.sourcefilemap": "Trwa rozpoznawanie zmiennych w {0}...", "open.envfile": "Otwórz element {0}", + "cannot.build.non.cpp": "Nie można skompilować i debugować, ponieważ aktywny plik nie jest plikiem źródłowym języka C lub C++.", + "no.compiler.found": "Nie znaleziono kompilatora", + "select.debug.configuration": "Wybierz konfigurację debugowania", "unexpected.os": "Nieoczekiwany typ systemu operacyjnego", "path.to.pipe.program": "pełna ścieżka do programu potoku, takiego jak {0}", "enable.pretty.printing": "Włącz formatowanie kodu dla {0}", diff --git a/Extension/i18n/plk/src/LanguageServer/extension.i18n.json b/Extension/i18n/plk/src/LanguageServer/extension.i18n.json index f1e1e95886..85e9b20106 100644 --- a/Extension/i18n/plk/src/LanguageServer/extension.i18n.json +++ b/Extension/i18n/plk/src/LanguageServer/extension.i18n.json @@ -6,6 +6,10 @@ { "learn.how.to.install.a.library": "Dowiedz się, jak zainstalować bibliotekę dla tego nagłówka przy użyciu menedżera vcpkg", "copy.vcpkg.command": "Skopiuj polecenie vcpkg, aby zainstalować element „{0}” w schowku", + "more.info.button": "Więcej informacji", + "ignore.button": "Ignoruj", + "vsix.platform.incompatible": "Zainstalowane rozszerzenie C/C++ jest nie pasuje do Twojego systemu.", + "vsix.platform.mismatching": "Zainstalowane rozszerzenie C/C++ jest kompatybilne, ale nie pasuje do Twojego systemu.", "client.not.found": "nie znaleziono klienta", "configuration.select.first": "Otwórz najpierw folder, aby wybrać konfigurację", "configuration.provider.select.first": "Otwórz najpierw folder, aby wybrać dostawcę konfiguracji", diff --git a/Extension/i18n/plk/src/nativeStrings.i18n.json b/Extension/i18n/plk/src/nativeStrings.i18n.json index 42fd5daf5a..dae4b037a9 100644 --- a/Extension/i18n/plk/src/nativeStrings.i18n.json +++ b/Extension/i18n/plk/src/nativeStrings.i18n.json @@ -81,7 +81,7 @@ "error_squiggles_enabled_if_all_headers_resolve": "Zygzaki sygnalizujące błędy są włączane, jeśli zostaną rozwiązane wszystkie zależności nagłówka.", "replaced_placeholder_file_record": "Zamieniono rekord pliku zastępczego", "tag_parsing_file": "plik analizowania tagów: {0}", - "tag_parsing_error": "Podczas analizowania tagów wystąpił błąd, ale może on nie być istotny. Poinformuj nas, jeśli nie można odnaleźć symboli w pliku: {0}", + "tag_parsing_error": "błąd analizy tagu (można go zignorować, chyba że nie można odnaleźć symboli):", "reset_timestamp_for": "Resetuj znacznik czasu dla {0}", "remove_file_failed": "Nie można usunąć pliku: {0}", "regex_parse_error": "Błąd analizy wyrażenia regularnego — wzorzec vscode: {0}, wyrażenie regularne: {1}, komunikat o błędzie: {2}", @@ -216,5 +216,8 @@ "inline_macro": "Osadź makro w tekście", "unable_to_access_browse_database": "Nie można uzyskać dostępu, aby przeglądać bazę danych ({0})", "default_compiler_path_modified_explicit_intellisense_mode": "Tryb IntelliSenseMode został zmieniony, ponieważ nie jest zgodny z wykrytym kompilatorem. Zamiast tego rozważ ustawienie parametru „compilerPath”. Ustaw parametr „compilerPath” na wartość \"\", aby wyłączyć wykrywanie elementów systemowych uwzględnianych i definiowanych.", - "clear_code_analysis_squiggles": "Wyczyść zygzaki rozszerzenia Code Analysis" + "clear_code_analysis_squiggles": "Wyczyść zygzaki rozszerzenia Code Analysis", + "multiple_locations_note": "(Wiele lokalizacji)", + "folder_tag": "Folder", + "file_tag": "Plik" } \ No newline at end of file diff --git a/Extension/i18n/plk/ui/settings.html.i18n.json b/Extension/i18n/plk/ui/settings.html.i18n.json index 43431ce644..5514540710 100644 --- a/Extension/i18n/plk/ui/settings.html.i18n.json +++ b/Extension/i18n/plk/ui/settings.html.i18n.json @@ -52,6 +52,8 @@ "forced.include": "Wymuszone dołączanie", "forced.include.description": "Lista plików, które powinny zostać uwzględnione przed przetworzeniem każdego innego znaku w pliku źródłowym. Pliki są uwzględniane w podanej kolejności.", "one.file.per.line": "Jeden plik na wiersz.", + "dot.config": "Dot Config", + "dot.config.description": "Ścieżka do pliku .config utworzonego przez system Kconfig. System Kconfig generuje plik ze wszystkimi definicjami na potrzeby kompilowania projektu. Przykłady projektów używających systemu Kconfig to jądro systemu Linux i system NuttX RTOS.", "compile.commands": "Polecenia kompilacji", "compile.commands.description": "Pełna ścieżka do pliku {0} dla obszaru roboczego. Ścieżki dołączania i definicje wykryte w tym pliku będą używane zamiast wartości określonych dla ustawień {1} i {2}. Jeśli baza danych poleceń kompilacji nie zawiera wpisu dla jednostki translacji odpowiadającej plikowi, który został otwarty w edytorze, pojawi się komunikat ostrzegawczy, a rozszerzenie użyje zamiast tego ustawień {3} i {4}.", "merge.configurations": "Scal konfiguracje", diff --git a/Extension/i18n/ptb/Reinstalling the Extension.md.i18n.json b/Extension/i18n/ptb/Reinstalling the Extension.md.i18n.json new file mode 100644 index 0000000000..e96a31378f --- /dev/null +++ b/Extension/i18n/ptb/Reinstalling the Extension.md.i18n.json @@ -0,0 +1,21 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "incompatible.extension.heading": "Binários de Extensão C/C++ Incompatíveis ou não Combinam", + "incompat.extension.text1": "A extensão C/C++ inclui binários nativos.", + "incompat.extension.text2": "Quando instalado por meio da Interface do Usuário do marketplace VS Code, os binários nativos corretos devem ser incluídos. Se os binários incompatíveis foram detectados e a extensão C/C++ foi instalada por meio da Interface do Usuário do marketplace no VS Code, {0}.", + "bug.report.link.title": "relate o problema", + "reinstalling.extension.heading": "Reinstalando a Extensão C/C++", + "reinstall.extension.text1": "Ao reinstalar uma versão equivalente de uma extensão, VS Code pode reutilizar o diretório de extensão existente. Para evitar que isso ocorra ao reinstalar a extensão C/C++, talvez seja necessário excluir primeiro o diretório de extensão existente.", + "reinstall.extension.text2": "Os diretórios de extensão instalados podem ser encontrados em um dos seguintes caminhos em seu diretório de usuário ('%USERPROFILE%' no Windows ou `$HOME` no Linux e macOS)", + "reinstall.extension.text3": "Em uma conexão remota:", + "reinstall.extension.text4": "Caminhos de exemplo para os diretórios de extensão C/C++ instalados:", + "reinstall.extension.text5": "No Windows:", + "reinstall.extension.text6": "No Linux:", + "reinstall.extension.text7": "Em seguida, reinstale por meio da Interface do Usuário do marketplace VS Code.", + "reinstall.extension.text8": "Se a versão correta da extensão não for implantada pelo VS Code, o VSIX correto para o sistema poderá ser {0} e instalado usando a opção 'Instalar do VSIX...' em '...' na Interface do Usuário do marketplace VS Code.", + "download.vsix.link.title": "baixado do site VS Code marketplace" +} \ No newline at end of file diff --git a/Extension/i18n/ptb/c_cpp_properties.schema.json.i18n.json b/Extension/i18n/ptb/c_cpp_properties.schema.json.i18n.json index d12ef3d37f..c04170ab06 100644 --- a/Extension/i18n/ptb/c_cpp_properties.schema.json.i18n.json +++ b/Extension/i18n/ptb/c_cpp_properties.schema.json.i18n.json @@ -13,6 +13,7 @@ "c_cpp_properties.schema.json.definitions.configurations.items.properties.includePath": "Uma lista de caminhos para o mecanismo IntelliSense usar ao pesquisar cabeçalhos incluídos. A pesquisa nesses caminhos não é recursiva. Especifique `**` para indicar pesquisa recursiva. Por exemplo, `${workspaceFolder}/**` irá pesquisar em todos os subdiretórios enquanto `${workspaceFolder}` não irá. Normalmente, isso não deve incluir inclusões de sistema; em vez disso, defina `C_Cpp.default.compilerPath`.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.macFrameworkPath": "Uma lista de caminhos para o mecanismo IntelliSense usar durante a pesquisa de cabeçalhos incluídos por meio das estruturas Mac. Compatível somente com configurações do Mac.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.windowsSdkVersion": "A versão do SDK do Windows inclui o caminho a ser usado no Windows, por exemplo, `10.0.17134.0`.", + "c_cpp_properties.schema.json.definitions.configurations.items.properties.dotConfig": "Um caminho para um arquivo .config criado pelo sistema Kconfig. O sistema Kconfig gera um arquivo com todas as definições para construir um projeto. Exemplos de projetos que utilizam o sistema Kconfig são o Kernel Linux e o NuttX RTOS.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.defines": "Uma lista de definições de pré-processador para o mecanismo IntelliSense usar durante a análise de arquivos. Opcionalmente, use `=` para definir um valor, por exemplo `VERSÃO=1`.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.intelliSenseMode": "O modo IntelliSense para usar esse mapeamento para uma plataforma e variante de arquitetura do MSVC, gcc ou Clang. Se não for definido ou se for definido como `${default}`, a extensão irá escolher o padrão para aquela plataforma. O padrão do Windows é `windows-msvc-x64`, o padrão do Linux é` linux-gcc-x64`, e o padrão do macOS é `macos-clang-x64`. Os modos IntelliSense que especificam apenas variantes `-` (por exemplo, `gcc-x64`) são modos legados e são convertidos automaticamente para as variantes`--`com base no host plataforma.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.forcedInclude": "Uma lista de arquivos que devem ser incluídos antes de qualquer arquivo de inclusão em uma unidade de tradução.", diff --git a/Extension/i18n/ptb/package.i18n.json b/Extension/i18n/ptb/package.i18n.json index c47ecc2287..78bde73432 100644 --- a/Extension/i18n/ptb/package.i18n.json +++ b/Extension/i18n/ptb/package.i18n.json @@ -16,7 +16,6 @@ "c_cpp.command.toggleDimInactiveRegions.title": "Ativar/Desativar a Colorização de Região Inativa", "c_cpp.command.resetDatabase.title": "Redefinir o Banco de Dados IntelliSense", "c_cpp.command.takeSurvey.title": "Responder Pesquisa", - "c_cpp.command.buildAndDebugActiveFile.title": "Criar e Depurar Arquivo Ativo", "c_cpp.command.restartIntelliSenseForFile.title": "Reiniciar o IntelliSense para o Arquivo Ativo", "c_cpp.command.logDiagnostics.title": "Diagnóstico de Log", "c_cpp.command.referencesViewGroupByType.title": "Agrupar por Tipo de Referência", @@ -31,6 +30,8 @@ "c_cpp.command.RunCodeAnalysisOnOpenFiles.title": "Executar Code Analysis em Abrir Arquivos", "c_cpp.command.RunCodeAnalysisOnAllFiles.title": "Executar Code Analysis em Todos os Arquivos", "c_cpp.command.ClearCodeAnalysisSquiggles.title": "Limpar Code Analysis rabiscos", + "c_cpp.command.BuildAndDebugFile.title": "Depurar Arquivo C/C++", + "c_cpp.command.BuildAndRunFile.title": "Executar Arquivo C/C++", "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "O número máximo de threads simultâneos a serem usado para processamento de serviço de linguagem. O valor é uma dica e nem sempre pode ser usado. O padrão de `null` (vazio) usa o número de processadores lógicos disponíveis.", "c_cpp.configuration.maxCachedProcesses.markdownDescription": "O número máximo de processos armazenados em cache a serem usado para o processamento do serviço de linguagem. O padrão `null` (vazio) usa duas vezes o número de processadores lógicos disponíveis.", "c_cpp.configuration.maxMemory.markdownDescription": "A memória máxima (em MB) disponível para processamento do serviço de idioma. Menos processos serão armazenados em cache e executados simultaneamente depois que esse uso de memória for excedido. O padrão `null` (vazio) usa a memória livre do sistema.", @@ -181,7 +182,7 @@ "c_cpp.configuration.intelliSenseUpdateDelay.description": "Controla o atraso em milissegundos até que o IntelliSense comece a ser atualizado após uma modificação.", "c_cpp.configuration.default.includePath.markdownDescription": "O valor a ser usado em uma configuração se `includePath` não for especificado em `c_cpp_properties.json`. Se `includePath` for especificado, adicione `${default}` ao array para inserir os valores desta configuração. Normalmente, isso não deve incluir inclusões de sistema; em vez disso, defina `#C_Cpp.default.compilerPath#`.", "c_cpp.configuration.default.defines.markdownDescription": "O valor a ser usado em uma configuração se `defines` não for especificado, ou os valores a serem inseridos se `${default}` estiver presente em `defines`.", - "c_cpp.configuration.default.macFrameworkPath.markdownDescription": "O valor a ser usado em uma configuração se `macFrameworkPath` não for especificado, ou os valores a serem inseridos se`${default}`estiver presente em` macFrameworkPath`.", + "c_cpp.configuration.default.macFrameworkPath.markdownDescription": "O valor a ser usado em uma configuração se `macFrameworkPath` não for especificado, ou os valores a serem inseridos se `${default}` estiver presente em `macFrameworkPath`.", "c_cpp.configuration.default.windowsSdkVersion.markdownDescription": "A versão do SDK do Windows inclui o caminho a ser usado no Windows, por exemplo, `10.0.17134.0`.", "c_cpp.configuration.default.compileCommands.markdownDescription": "O valor a ser usado em uma configuração se `compileCommands` não for especificado ou definido como `${default}`.", "c_cpp.configuration.default.forcedInclude.markdownDescription": "O valor a usar em uma configuração se `forcedInclude` não for especificado, ou os valores a inserir se `${default}` estiver presente em `forcedInclude`.", @@ -197,9 +198,10 @@ "c_cpp.configuration.default.browse.limitSymbolsToIncludedHeaders.markdownDescription": "O valor a ser usado em uma configuração se `browse.limitSymbolsToIncludedHeaders` não for especificado ou definido como `${default}`.", "c_cpp.configuration.default.systemIncludePath.markdownDescription": "O valor a ser usado para o sistema inclui o caminho. Se definido, ele substitui o sistema inclui o caminho adquirido através das configurações `compilerPath` e `compileCommands`.", "c_cpp.configuration.default.enableConfigurationSquiggles.markdownDescription": "Controla se a extensão reportará erros detectados em `c_cpp_properties.json`.", - "c_cpp.configuration.default.customConfigurationVariables.markdownDescription": "O valor a ser usado em uma configuração se `customConfigurationVariables` não estiver definido, ou os valores a serem inseridos se `${default}` estiver presente como uma chave em`customConfigurationVariables`.", + "c_cpp.configuration.default.customConfigurationVariables.markdownDescription": "O valor a ser usado em uma configuração se `customConfigurationVariables` não estiver definido, ou os valores a serem inseridos se `${default}` estiver presente como uma chave em `customConfigurationVariables`.", "c_cpp.configuration.updateChannel.markdownDescription": "Defina como `Insiders` para baixar e instalar automaticamente as compilações mais recentes dos Insiders da extensão, que incluem os próximos recursos e correções de bugs.", "c_cpp.configuration.updateChannel.deprecationMessage": "Esta configuração foi preterida. As extensões de pré-lançamento agora estão disponíveis por meio do Marketplace.", + "c_cpp.configuration.default.dotConfig.markdownDescription": "O valor a ser usado em uma configuração se `dotConfig` não for especificado, ou o valor a ser inserido se `${default}` estiver presente em `dotConfig`.", "c_cpp.configuration.experimentalFeatures.description": "Controla se os recursos \"experimentais\" podem ser usados.", "c_cpp.configuration.suggestSnippets.markdownDescription": "Se `true`, os snippets são fornecidos pelo servidor de linguagem.", "c_cpp.configuration.enhancedColorization.markdownDescription": "Se habilitado, o código é colorido com base no IntelliSense. Esta configuração se aplica apenas se `#C_Cpp.intelliSenseEngine#` estiver definido como `Default`.", @@ -214,6 +216,7 @@ "c_cpp.configuration.debugger.useBacktickCommandSubstitution.markdownDescription": "Se for `true`, a substituição do comando shell do depurador usará o acento grave obsoleto ``(`)``.", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: Outros resultados de referências.", "c_cpp.contributes.viewsWelcome.contents": "Para saber mais sobre o launch.json, veja [Configuring C/C++ debugging](https://code.visualstudio.com/docs/cpp/launch-json-reference).", + "c_cpp.configuration.debugShortcut.description": "Mostrar o botão Executar e Depurar na barra de título do editor de arquivos C++", "c_cpp.debuggers.pipeTransport.description": "Quando presente, isso instrui o depurador a conectar-se a um computador remoto usando outro executável como um pipe que retransmitirá a entrada/saída padrão entre o VS Code e o executável do back-end do depurador habilitado para MI (como gdb).", "c_cpp.debuggers.pipeTransport.default.pipeProgram": "insira o caminho totalmente qualificado para o nome do programa de pipe, por exemplo '/usr/bin/ssh'.", "c_cpp.debuggers.pipeTransport.default.debuggerPath": "O caminho completo para o depurador no computador de destino, por exemplo, /usr/bin/gdb.", diff --git a/Extension/i18n/ptb/src/Debugger/configurationProvider.i18n.json b/Extension/i18n/ptb/src/Debugger/configurationProvider.i18n.json index 9946f1c8fe..e7cf8f75a2 100644 --- a/Extension/i18n/ptb/src/Debugger/configurationProvider.i18n.json +++ b/Extension/i18n/ptb/src/Debugger/configurationProvider.i18n.json @@ -6,23 +6,26 @@ { "default.configuration.menuitem": "Configuração Padrão", "select.configuration": "Selecionar uma configuração", - "debug.configuration.selection.canceled": "A seleção de configuração de depuração foi cancelada", - "cl.exe.not.available": "A criação e a depuração de {0} só podem ser usadas quando o VS Code é executado por meio do Prompt de Comando do Desenvolvedor para VS.", - "miDebuggerPath.not.available": "miDebuggerPath não existe: {0}. Algum depurador foi instalado?", "debugger.deprecated.config": "A chave '{0}' foi preterida. Use '{1}'.", "debugger.not.available": "Depurador do tipo: '{0}' só está disponível no Windows. Use o tipo: '{1}' na plataforma do SO atual.", "lldb.framework.install.xcode": "Mais Informações", "lldb.framework.not.found": "Não é possível localizar 'LLDB.framework' para lldb-mi. Instale o XCode ou as Ferramentas de Linha de Comando do XCode.", "debugger.launchConfig": "Iniciar configuração:", + "pre.Launch.Task": "preLaunchTask: {0}", + "build.and.debug.active.file": "Compilar e depurar o arquivo ativo", + "cl.exe.not.available": "A criação e a depuração de {0} só podem ser usadas quando o VS Code é executado por meio do Prompt de Comando do Desenvolvedor para VS.", "lldb.find.failed": "Dependência ausente '{0}' no executável lldb-mi.", "lldb.search.paths": "Pesquisado em:", "lldb.install.help": "Para resolver esse problema, instale o XCode por meio da Apple App Store ou instale as Ferramentas de Linha de Comando do XCode executando '{0}' em uma janela de Terminal.", - "envfale.failed": "Falha ao usar {0}. Motivo: {1}", + "envfile.failed": "Falha ao usar {0}. Motivo: {1}", "replacing.sourcepath": "Substituindo {0} '{1}' por '{2}'.", "replacing.targetpath": "Substituindo {0} '{1}' por '{2}'.", "replacing.editorPath": "Substituindo '{1}' do {0} por '{2}'.", "resolving.variables.in.sourcefilemap": "Resolvendo variáveis em {0}...", "open.envfile": "Abrir {0}", + "cannot.build.non.cpp": "Não é possível criar e depurar porque o arquivo ativo não é um arquivo de origem C ou C++.", + "no.compiler.found": "Nenhum compilador encontrado", + "select.debug.configuration": "Selecionar uma configuração de depuração", "unexpected.os": "Tipo de SO inesperado", "path.to.pipe.program": "caminho completo para o programa de pipe, como {0}", "enable.pretty.printing": "Habilitar a reformatação automática para {0}", diff --git a/Extension/i18n/ptb/src/LanguageServer/extension.i18n.json b/Extension/i18n/ptb/src/LanguageServer/extension.i18n.json index 4025ac2af8..7dba4212d1 100644 --- a/Extension/i18n/ptb/src/LanguageServer/extension.i18n.json +++ b/Extension/i18n/ptb/src/LanguageServer/extension.i18n.json @@ -6,6 +6,10 @@ { "learn.how.to.install.a.library": "Saiba como instalar uma biblioteca para este cabeçalho com vcpkg", "copy.vcpkg.command": "Copiar o comando vcpkg para instalar '{0}' para a área de transferência", + "more.info.button": "Mais Informações", + "ignore.button": "Ignorar", + "vsix.platform.incompatible": "A extensão C/C++ instalada não corresponde ao sistema.", + "vsix.platform.mismatching": "A extensão C/C++ instalada é compatível com o sistema, mas não corresponde ao sistema.", "client.not.found": "o cliente não foi encontrado", "configuration.select.first": "Abrir uma pasta primeiro para selecionar uma configuração", "configuration.provider.select.first": "Abrir uma pasta primeiro para selecionar um provedor de configuração", diff --git a/Extension/i18n/ptb/src/nativeStrings.i18n.json b/Extension/i18n/ptb/src/nativeStrings.i18n.json index e8846ed605..9c9c6d8fa3 100644 --- a/Extension/i18n/ptb/src/nativeStrings.i18n.json +++ b/Extension/i18n/ptb/src/nativeStrings.i18n.json @@ -81,7 +81,7 @@ "error_squiggles_enabled_if_all_headers_resolve": "Os rabiscos de erro serão habilitados se todas as dependências de cabeçalho forem resolvidas.", "replaced_placeholder_file_record": "Registro de arquivo de espaço reservado substituído", "tag_parsing_file": "arquivo de análise de marca: {0}", - "tag_parsing_error": "A análise de tag encontrou um erro, mas isso pode não ser relevante. Informe-nos caso não seja possível encontrar os símbolos no arquivo: {0}", + "tag_parsing_error": "erro de análise de marca (isso pode ser ignorado, a menos que não seja possível encontrar símbolos):", "reset_timestamp_for": "Redefinir carimbo de data/hora para {0}", "remove_file_failed": "Falha ao remover o arquivo: {0}", "regex_parse_error": "Erro de análise de regex – padrão vscode: {0}, regex: {1}, mensagem de erro: {2}", @@ -216,5 +216,8 @@ "inline_macro": "Macro embutida", "unable_to_access_browse_database": "Não é possível acessar o banco de dados de navegação. ({0})", "default_compiler_path_modified_explicit_intellisense_mode": "O IntelliSenseMode foi alterado porque não correspondeu ao compilador detectado. Considere configurar \"compilerPath\" em vez disso. Defina \"compilerPath\" como \"\" para desabilitar a detecção de inserções e definições do sistema.", - "clear_code_analysis_squiggles": "Limpar rabiscos de análise de código" + "clear_code_analysis_squiggles": "Limpar rabiscos de análise de código", + "multiple_locations_note": "Vários locais", + "folder_tag": "Pasta", + "file_tag": "Arquivo" } \ No newline at end of file diff --git a/Extension/i18n/ptb/ui/settings.html.i18n.json b/Extension/i18n/ptb/ui/settings.html.i18n.json index cb3ec40b19..dce6ae79f0 100644 --- a/Extension/i18n/ptb/ui/settings.html.i18n.json +++ b/Extension/i18n/ptb/ui/settings.html.i18n.json @@ -52,6 +52,8 @@ "forced.include": "Inclusão forçada", "forced.include.description": "Uma lista de arquivos que devem ser incluídos antes que quaisquer outros caracteres no arquivo de origem sejam processados. Os arquivos são incluídos na ordem listada.", "one.file.per.line": "Um arquivo por linha.", + "dot.config": "Configuração de Ponto", + "dot.config.description": "Um caminho para um arquivo .config criado pelo sistema Kconfig. O sistema Kconfig gera um arquivo com todas as definições para construir um projeto. Exemplos de projetos que utilizam o sistema Kconfig são o Kernel Linux e o NuttX RTOS.", "compile.commands": "Compilar comandos", "compile.commands.description": "O caminho completo para o arquivo {0} para o workspace. Os caminhos de inclusão e as definições descobertas neste arquivo serão usados no lugar dos valores definidos para as configurações {1} e {2}. Se o banco de dados de comandos de compilação não contiver uma entrada para a unidade de tradução que corresponda ao arquivo aberto no editor, uma mensagem de aviso será exibida e, em vez disso, a extensão usará as configurações {3} e {4}.", "merge.configurations": "Mesclar as configurações", diff --git a/Extension/i18n/rus/Reinstalling the Extension.md.i18n.json b/Extension/i18n/rus/Reinstalling the Extension.md.i18n.json new file mode 100644 index 0000000000..4dd9efc3f0 --- /dev/null +++ b/Extension/i18n/rus/Reinstalling the Extension.md.i18n.json @@ -0,0 +1,21 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "incompatible.extension.heading": "Несовместимые или несоответствующие двоичные файлы расширения C/C++", + "incompat.extension.text1": "Расширение C/C++ включает собственные двоичные файлы.", + "incompat.extension.text2": "При установке через пользовательский интерфейс Marketplace в VS Code должны быть включены подходящие собственные двоичные файлы. Если обнаружены несовместимые двоичные файлы и расширение C/C++ было установлено через пользовательский интерфейс Marketplace в VS Code, {0}.", + "bug.report.link.title": "сообщите о проблеме", + "reinstalling.extension.heading": "Переустановка расширения C/C++", + "reinstall.extension.text1": "При повторной установке эквивалентной версии расширения VS Code может повторно использовать существующий каталог расширений. Чтобы предотвратить переустановку расширения C/C++, может потребоваться сначала удалить существующий каталог расширений.", + "reinstall.extension.text2": "Каталоги установленных расширений можно найти по одному из следующих путей в каталоге пользователя (“%USERPROFILE%” в Windows или “$HOME” в Linux и macOS)", + "reinstall.extension.text3": "При удаленном подключении:", + "reinstall.extension.text4": "Примеры путей к каталогам установленного расширения C/C++:", + "reinstall.extension.text5": "В Windows:", + "reinstall.extension.text6": "В Linux:", + "reinstall.extension.text7": "Затем переустановите с помощью пользовательского интерфейса Marketplace в VS Code.", + "reinstall.extension.text8": "Если не удается развернуть правильную версию расширения с помощью VS Code, правильный файл VSIX для системы можно {0} и установить с помощью параметра “Установить из VSIX...” в разделе “...” меню в пользовательском интерфейсе Marketplace в VS Code.", + "download.vsix.link.title": "скачано с веб-сайта Marketplace VS Code" +} \ No newline at end of file diff --git a/Extension/i18n/rus/c_cpp_properties.schema.json.i18n.json b/Extension/i18n/rus/c_cpp_properties.schema.json.i18n.json index 0bce59ece9..2c60bde6dd 100644 --- a/Extension/i18n/rus/c_cpp_properties.schema.json.i18n.json +++ b/Extension/i18n/rus/c_cpp_properties.schema.json.i18n.json @@ -13,6 +13,7 @@ "c_cpp_properties.schema.json.definitions.configurations.items.properties.includePath": "Список путей для подсистемы IntelliSense, используемых при поиске включаемых файлов заголовков. Поиск по этим путям не является рекурсивным. Чтобы использовать рекурсивный поиск, укажите `**`. Например, если указать `${workspaceFolder}/**`, будет выполнен поиск по всем подкаталогам, а если указать `${workspaceFolder}` — не будет. Обычно системное содержимое не включается; вместо этого установите значение `C_Cpp.default.compilerPath`.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.macFrameworkPath": "Список путей для подсистемы IntelliSense, используемых при поиске включаемых файлов заголовков из платформ Mac. Поддерживается только в конфигурации для Mac.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.windowsSdkVersion": "Версия пути включения Windows SDK для использования в Windows, например `10.0.17134.0`.", + "c_cpp_properties.schema.json.definitions.configurations.items.properties.dotConfig": "Путь к файлу CONFIG, созданному системой Kconfig. Система Kconfig создает файл со всеми определениями для сборки проекта. Примеры проектов, в которых используется система Kconfig: ядро Linux и NuttX RTOS.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.defines": "Список определений препроцессора для подсистемы IntelliSense, используемых при анализе файлов. При необходимости вы можете задать значение с помощью `=`, например: `VERSION=1`.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.intelliSenseMode": "Используемый режим IntelliSense, соответствующий определенному варианту платформы и архитектуры MSVC, gcc или Clang. Если значение не указано или указано значение `${default}`, расширение выберет вариант по умолчанию для этой платформы. Для Windows по умолчанию используется `windows-msvc-x64`, для Linux — `linux-gcc-x64`, а для macOS — `macos-clang-x64`. Режимы IntelliSense, в которых указаны только варианты `<компилятор>-<архитектура>` (например, `gcc-x64`), являются устаревшими и автоматически преобразуются в варианты `<платформа>-<компилятор>-<архитектура>` на основе платформы узла.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.forcedInclude": "Список файлов, которые должны быть включены перед любым файлом включений в единице трансляции.", diff --git a/Extension/i18n/rus/package.i18n.json b/Extension/i18n/rus/package.i18n.json index fde972c321..823fccb0e2 100644 --- a/Extension/i18n/rus/package.i18n.json +++ b/Extension/i18n/rus/package.i18n.json @@ -16,7 +16,6 @@ "c_cpp.command.toggleDimInactiveRegions.title": "Переключить раскраску неактивных областей", "c_cpp.command.resetDatabase.title": "Сброс базы данных IntelliSense", "c_cpp.command.takeSurvey.title": "Пройти опрос", - "c_cpp.command.buildAndDebugActiveFile.title": "Сборка и отладка активного файла", "c_cpp.command.restartIntelliSenseForFile.title": "Перезапуск IntelliSense для активного файла", "c_cpp.command.logDiagnostics.title": "Журнал диагностики", "c_cpp.command.referencesViewGroupByType.title": "Группирование по ссылке", @@ -31,6 +30,8 @@ "c_cpp.command.RunCodeAnalysisOnOpenFiles.title": "Запустить Code Analysis в открытых файлах", "c_cpp.command.RunCodeAnalysisOnAllFiles.title": "Запустить Code Analysis во всех файлах", "c_cpp.command.ClearCodeAnalysisSquiggles.title": "Очистить волнистые подчеркивания Code Analysis", + "c_cpp.command.BuildAndDebugFile.title": "Выполнить отладку файла C/C++", + "c_cpp.command.BuildAndRunFile.title": "Запустить файл C/C++", "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "Максимальное число одновременных потоков, используемых для обработки задач языковой службы. Это значение является рекомендуемым и может использоваться не всегда. При заданном по умолчанию значении `null` (пусто) используется число доступных логических процессоров.", "c_cpp.configuration.maxCachedProcesses.markdownDescription": "Максимальное число кэшированных процессов, используемых для обработки задач языковой службы. При заданном по умолчанию значении `null` (пусто) используется число, вдвое большее количества доступных логических процессоров.", "c_cpp.configuration.maxMemory.markdownDescription": "Максимальный объем памяти (в МБ), доступный для обработки задач языковой службы. После превышения этого объема памяти будет кэшироваться и одновременно выполняться меньше процессов. При заданном по умолчанию значении `null` (пусто) используется свободная память системы.", @@ -200,13 +201,14 @@ "c_cpp.configuration.default.customConfigurationVariables.markdownDescription": "Значение, используемое в конфигурации, если параметр `customConfigurationVariables` не установлен, или вставляемые значения, если в `customConfigurationVariables` присутствует значение `${default}` в качестве ключа.", "c_cpp.configuration.updateChannel.markdownDescription": "Задайте значение `Insiders`, чтобы автоматически скачать и установить последние выпуски расширения для предварительной оценки, включающие в себя запланированные функции и исправления ошибок.", "c_cpp.configuration.updateChannel.deprecationMessage": "Этот параметр не рекомендуется. Предварительные версии расширений теперь доступны через Marketplace.", + "c_cpp.configuration.default.dotConfig.markdownDescription": "Значение, используемое в конфигурации, если параметр `dotConfig` не указан, или вставляемое значение, если в `dotConfig` присутствует значение `${default}`.", "c_cpp.configuration.experimentalFeatures.description": "Определяет, можно ли использовать \"экспериментальные\" функции.", "c_cpp.configuration.suggestSnippets.markdownDescription": "Если задано значение `true`, фрагменты кода предоставляются языковым сервером.", "c_cpp.configuration.enhancedColorization.markdownDescription": "Если этот параметр включен, код раскрашивается в соответствии с IntelliSense. Этот параметр применяется, только если для `#C_Cpp.intelliSenseEngine#` задано значение `Default`.", "c_cpp.configuration.codeFolding.description": "Если этот параметр включен, то диапазоны свертывания кода предоставляются языковым сервером.", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "Включите службы интеграции для [диспетчера зависимостей vcpkg](https://aka.ms/vcpkg/).", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "Добавьте пути включения из `nan` и `node-addon-api`, если они являются зависимостями.", - "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Если этот параметр имеет значение `true`, для операции 'Rename Symbol' (Переименование символа) потребуется указать допустимый идентификатор C/C++.", + "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Если этот параметр имеет значение `true`, для операции 'Переименование символа' потребуется указать допустимый идентификатор C/C++.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "Если присвоено значение `true`, автозаполнение автоматически добавит `(` после вызовов функции, при этом также может добавляться `)` в зависимости от значения параметра `#editor.autoClosingBrackets#`.", "c_cpp.configuration.filesExclude.markdownDescription": "Настройка стандартных масок для исключения папок (и файлов, если внесено изменение в `#C_Cpp.exclusionPolicy#`). Они специфичны для расширения C/C++ и дополняют `#files.exclude#`, но в отличие от `#files.exclude#` они применяются также к путям вне папки используемой рабочей области и не удаляются из представления обозревателя. Дополнительные сведения о стандартных масках см. [здесь](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", "c_cpp.configuration.filesExcludeBoolean.markdownDescription": "Стандартная маска, соответствующая путям к файлам. Задайте значение `true` или `false`, чтобы включить или отключить маску.", @@ -214,6 +216,7 @@ "c_cpp.configuration.debugger.useBacktickCommandSubstitution.markdownDescription": "Если задано значение `true`, для подстановки команд оболочки отладчика будет использоваться устаревший обратный апостроф ``(`)``.", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: результаты по другим ссылкам.", "c_cpp.contributes.viewsWelcome.contents": "Дополнительные сведения о launch.json см. в статье [Настройка отладки C/C++](https://code.visualstudio.com/docs/cpp/launch-json-reference).", + "c_cpp.configuration.debugShortcut.description": "Отображать кнопку воспроизведения \"Запуск и отладка\" в заголовке редактора для файлов C++", "c_cpp.debuggers.pipeTransport.description": "При наличии сообщает отладчику о необходимости подключения к удаленному компьютеру с помощью другого исполняемого файла в качестве канала, который будет пересылать стандартный ввод и вывод между VS Code и исполняемым файлом отладчика с поддержкой MI в серверной части (например, gdb).", "c_cpp.debuggers.pipeTransport.default.pipeProgram": "введите полный путь к имени программы канала, например: \"/usr/bin/ssh\".", "c_cpp.debuggers.pipeTransport.default.debuggerPath": "Полный путь к отладчику на конечном компьютере, например: /usr/bin/gdb.", diff --git a/Extension/i18n/rus/src/Debugger/configurationProvider.i18n.json b/Extension/i18n/rus/src/Debugger/configurationProvider.i18n.json index 7ba3be9f14..44285cffe2 100644 --- a/Extension/i18n/rus/src/Debugger/configurationProvider.i18n.json +++ b/Extension/i18n/rus/src/Debugger/configurationProvider.i18n.json @@ -6,23 +6,26 @@ { "default.configuration.menuitem": "Конфигурация по умолчанию", "select.configuration": "Выберите конфигурацию", - "debug.configuration.selection.canceled": "Выбор конфигурации отладки отменен", - "cl.exe.not.available": "Сборку и отладку {0} можно использовать только при запуске VS Code из Командной строки разработчика для VS.", - "miDebuggerPath.not.available": "Путь miDebuggerPath не существует: {0}. Установлен ли отладчик?", "debugger.deprecated.config": "Ключ \"{0}\" устарел. Используйте \"{1}\".", "debugger.not.available": "Отладчик типа \"{0}\" доступен только в Windows. Используйте тип \"{1}\" на текущей платформе ОС.", "lldb.framework.install.xcode": "Дополнительные сведения", "lldb.framework.not.found": "Не удается найти \"LLDB.framework\" для lldb-mi. Установите XCode или средства командной строки XCode.", "debugger.launchConfig": "Конфигурация запуска:", + "pre.Launch.Task": "ЗадачаПредварительногоЗапуска: {0}", + "build.and.debug.active.file": "сборка и отладка активного файла", + "cl.exe.not.available": "Сборку и отладку {0} можно использовать только при запуске VS Code из Командной строки разработчика для VS.", "lldb.find.failed": "Отсутствует зависимость \"{0}\" для исполняемого файла lldb-mi.", "lldb.search.paths": "Поиск был выполнен в следующих расположениях:", "lldb.install.help": "Чтобы устранить эту проблему, установите XCode через Apple App Store или установите средства командной строки XCode, выполнив команду \"{0}\" в окне терминала.", - "envfale.failed": "Не удалось использовать {0}. Причина: {1}", + "envfile.failed": "Не удалось использовать {0}. Причина: {1}", "replacing.sourcepath": "Выполняется замена значения {0} с \"{1}\" на \"{2}\".", "replacing.targetpath": "Выполняется замена значения {0} с \"{1}\" на \"{2}\".", "replacing.editorPath": "Выполняется замена {0} \"{1}\" на \"{2}\".", "resolving.variables.in.sourcefilemap": "Разрешение переменных в {0}...", "open.envfile": "Открыть {0}", + "cannot.build.non.cpp": "Не удается выполнить сборку и отладку, так как активный файл не является исходным файлом C или C++.", + "no.compiler.found": "Компилятор не найден", + "select.debug.configuration": "Выбрать конфигурацию отладки", "unexpected.os": "Непредвиденный тип ОС", "path.to.pipe.program": "Полный путь к программе канала, например: {0}", "enable.pretty.printing": "Включить автоматическое форматирование для {0}", diff --git a/Extension/i18n/rus/src/LanguageServer/extension.i18n.json b/Extension/i18n/rus/src/LanguageServer/extension.i18n.json index 21e8253446..f418113155 100644 --- a/Extension/i18n/rus/src/LanguageServer/extension.i18n.json +++ b/Extension/i18n/rus/src/LanguageServer/extension.i18n.json @@ -6,6 +6,10 @@ { "learn.how.to.install.a.library": "Сведения об установке библиотеки для этого заголовка с помощью vcpkg", "copy.vcpkg.command": "Копировать команду vcpkg для установки \"{0}\" в буфер обмена", + "more.info.button": "Дополнительные сведения", + "ignore.button": "Пропустить", + "vsix.platform.incompatible": "Установленное расширение C/C++ не соответствует системе.", + "vsix.platform.mismatching": "Установленное расширение C/C++ совместимо с вашим компьютером, но не соответствует системе.", "client.not.found": "Клиент не найден.", "configuration.select.first": "Сначала откройте папку, чтобы выбрать конфигурацию", "configuration.provider.select.first": "Сначала откройте папку, чтобы выбрать поставщик конфигурации", diff --git a/Extension/i18n/rus/src/nativeStrings.i18n.json b/Extension/i18n/rus/src/nativeStrings.i18n.json index 9d661fe34b..cff06aa167 100644 --- a/Extension/i18n/rus/src/nativeStrings.i18n.json +++ b/Extension/i18n/rus/src/nativeStrings.i18n.json @@ -81,7 +81,7 @@ "error_squiggles_enabled_if_all_headers_resolve": "Волнистые линии для ошибок включены, если разрешены все зависимости заголовка.", "replaced_placeholder_file_record": "Запись файла-прототипа заменена", "tag_parsing_file": "файл анализа тегов: {0}", - "tag_parsing_error": "Обнаружена ошибка при анализе тегов, но она может быть неважной. Сообщите нам, если не удастся найти символы в файле: {0}", + "tag_parsing_error": "tag parsing error (this can be ignored unless symbols can't be found):", "reset_timestamp_for": "Сброс метки времени для {0}", "remove_file_failed": "Не удалось удалить файл: {0}", "regex_parse_error": "Ошибка анализа регулярного выражения — шаблон VS Code: {0}, регулярное выражение: {1}, сообщение об ошибке: {2}", @@ -216,5 +216,8 @@ "inline_macro": "Встроенный макрос", "unable_to_access_browse_database": "Не удалось получить доступ к базе данных просмотра. ({0})", "default_compiler_path_modified_explicit_intellisense_mode": "Режим IntelliSenseMode изменен, поскольку он не совпал с обнаруженным компилятором. Попробуйте указать \"compilerPath\" вместо этого. Установите для \"compilerPath\" значение \"\", чтобы отключить обнаружение элементов, включаемых системой и определяемых системой.", - "clear_code_analysis_squiggles": "Очистить волнистые подчеркивания анализа кода" + "clear_code_analysis_squiggles": "Очистить волнистые подчеркивания анализа кода", + "multiple_locations_note": "(Несколько расположений)", + "folder_tag": "Папка", + "file_tag": "Файл" } \ No newline at end of file diff --git a/Extension/i18n/rus/ui/settings.html.i18n.json b/Extension/i18n/rus/ui/settings.html.i18n.json index 2666b42ac4..0d241c2287 100644 --- a/Extension/i18n/rus/ui/settings.html.i18n.json +++ b/Extension/i18n/rus/ui/settings.html.i18n.json @@ -52,6 +52,8 @@ "forced.include": "Принудительное включение", "forced.include.description": "Список файлов, которые должны быть включены до обработки любых других символов в исходном файле. Файлы включаются в указанном порядке.", "one.file.per.line": "Один файл в строке.", + "dot.config": "Конфигурация dot", + "dot.config.description": "Путь к файлу CONFIG, созданному системой Kconfig. Система Kconfig создает файл со всеми определениями для сборки проекта. Примеры проектов, в которых используется система Kconfig: ядро Linux и NuttX RTOS.", "compile.commands": "Команды компиляции", "compile.commands.description": "Полный путь к файлу {0} для рабочей области. Обнаруженные в этом файле пути для включений и определения будут использоваться вместо значений, заданных для параметров {1} и {2}. Если база данных команд сборки не содержит запись для единицы трансляции, соответствующей открытому в редакторе файлу, то появится предупреждающее сообщение и расширение будет использовать параметры {3} и {4}.", "merge.configurations": "Объединение конфигураций", diff --git a/Extension/i18n/trk/Reinstalling the Extension.md.i18n.json b/Extension/i18n/trk/Reinstalling the Extension.md.i18n.json new file mode 100644 index 0000000000..c90cc014d0 --- /dev/null +++ b/Extension/i18n/trk/Reinstalling the Extension.md.i18n.json @@ -0,0 +1,21 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Do not edit this file. It is machine generated. +{ + "incompatible.extension.heading": "Uyumsuz veya Uyumsuz C/C++ Uzantısı İkililer", + "incompat.extension.text1": "C/C++ uzantısı yerel ikililer içeriyor.", + "incompat.extension.text2": "VS Code’da pazar yeri kullanıcı arabirimi aracılığıyla kurulduğunda, doğru yerel ikili dosyalar dahil edilmelidir. Uyumsuz ikili dosyalar algılandıysa ve C/C++ uzantısı, {0} VS Code’unda pazar yeri kullanıcı arabirimi aracılığıyla yüklendiyse.", + "bug.report.link.title": "lütfen sorunu bildirin", + "reinstalling.extension.heading": "C/C++ Uzantısı yeniden yükleniyor", + "reinstall.extension.text1": "Bir uzantının eşdeğer bir sürümünü yeniden yüklerken, VS Code mevcut uzantı dizinini yeniden kullanabilir. C/C++ uzantısını yeniden yüklerken bunun olmasını önlemek için önce mevcut uzantı dizinini silmek gerekebilir.", + "reinstall.extension.text2": "Yüklü uzantı dizinleri, kullanıcı dizininizin altındaki aşağıdaki yollardan biri altında bulunabilir (Windows'ta `%USERPROFILE%` veya Linux ve macOS'ta `$HOME`)", + "reinstall.extension.text3": "Uzak bir bağlantıda:", + "reinstall.extension.text4": "Yüklü C/C++ uzantı dizinlerine örnek yollar:", + "reinstall.extension.text5": "Windows üzerinde:", + "reinstall.extension.text6": "Linux'ta:", + "reinstall.extension.text7": "Ardından, VS Code’daki pazar yeri kullanıcı arabirimi aracılığıyla yeniden yükleyin.", + "reinstall.extension.text8": "Uzantının doğru sürümü VS Code tarafından dağıtılamazsa, sisteminiz için doğru VSIX {0} olabilir ve VS Code’daki market kullanıcı arabirimindeki “...” menüsü altındaki “VSIX'ten Yükle...” seçeneği kullanılarak yüklenebilir.", + "download.vsix.link.title": "VS Code market web sitesinden indirildi" +} \ No newline at end of file diff --git a/Extension/i18n/trk/c_cpp_properties.schema.json.i18n.json b/Extension/i18n/trk/c_cpp_properties.schema.json.i18n.json index 8858a85a32..9bdca20a8c 100644 --- a/Extension/i18n/trk/c_cpp_properties.schema.json.i18n.json +++ b/Extension/i18n/trk/c_cpp_properties.schema.json.i18n.json @@ -13,6 +13,7 @@ "c_cpp_properties.schema.json.definitions.configurations.items.properties.includePath": "IntelliSense altyapısının eklenen üst bilgileri ararken kullanacağı yol listesi. Bu yollarda arama özyinelemeli değildir. Özyinelemeli aramayı göstermek için `**` belirtin. Örneğin: `${workspaceFolder}/**` tüm alt dizinlerde ararken `${workspaceFolder}` aramaz. Bu genellikle sistem eklemelerini içermemelidir, bunun yerine `C_Cpp.default.compilerPath` ayarını belirleyin.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.macFrameworkPath": "Mac çerçevelerinden eklenen üst bilgileri ararken IntelliSense altyapısı tarafından kullanılacak yolların listesi. Yalnızca Mac yapılandırmalarında desteklenir.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.windowsSdkVersion": "Windows üzerinde kullanılacak Windows SDK ekleme yolunun sürümü, ör. `10.0.17134.0`.", + "c_cpp_properties.schema.json.definitions.configurations.items.properties.dotConfig": "Kconfig sistemi tarafından oluşturulan bir .config dosyasının yolu. Kconfig sistemi, bir proje oluşturmak için tüm tanımlamaları içeren bir dosya oluşturur. Kconfig sistemini kullanan projelere örnek olarak Linux Çekirdeği ve NuttX RTOS verilebilir.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.defines": "IntelliSense altyapısının dosyaları ayrıştırırken kullanacağı ön işlemci tanımlarının bir listesi. İsteğe bağlı olarak, bir değer ayarlamak için `=` kullanın, örneğin `VERSION=1`.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.intelliSenseMode": "MSVC, gcc veya Clang'in platform ve mimari varyantına eşlemek için kullanılacak IntelliSense modu. Ayarlanmazsa veya `${default}` olarak belirlenirse uzantı, ilgili platform için varsayılan ayarı seçer. Windows için varsayılan olarak `windows-msvc-x64`, Linux için varsayılan olarak `linux-gcc-x64` ve macOS için varsayılan olarak `macos-clang-x64` kullanılır. Yalnızca `-` varyantlarını belirten IntelliSense modları (yani `gcc-x64`), eski modlardır ve konak platformuna göre otomatik olarak `--` varyantlarına dönüştürülür.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.forcedInclude": "Çeviri birimindeki herhangi bir içerme dosyasından önce dahil edilmesi gereken dosyaların listesi.", diff --git a/Extension/i18n/trk/package.i18n.json b/Extension/i18n/trk/package.i18n.json index 416c1e48d0..f074920b65 100644 --- a/Extension/i18n/trk/package.i18n.json +++ b/Extension/i18n/trk/package.i18n.json @@ -16,7 +16,6 @@ "c_cpp.command.toggleDimInactiveRegions.title": "Etkin Olmayan Bölge Renklendirmeyi Aç/Kapat", "c_cpp.command.resetDatabase.title": "IntelliSense Veritabanını Sıfırla", "c_cpp.command.takeSurvey.title": "Ankete Katılın", - "c_cpp.command.buildAndDebugActiveFile.title": "Etkin Dosyayı Derle ve Dosyada Hata Ayıkla", "c_cpp.command.restartIntelliSenseForFile.title": "Etkin Dosya için IntelliSense'i yeniden başlat", "c_cpp.command.logDiagnostics.title": "Günlük Tanılama", "c_cpp.command.referencesViewGroupByType.title": "Başvuru Türüne Göre Gruplandır", @@ -31,6 +30,8 @@ "c_cpp.command.RunCodeAnalysisOnOpenFiles.title": "Açık Dosyalarda Code Analysis’i Çalıştır", "c_cpp.command.RunCodeAnalysisOnAllFiles.title": "Tüm Dosyalarda Code Analysis’i Çalıştır", "c_cpp.command.ClearCodeAnalysisSquiggles.title": "Code Analysis Dalgalarını Temizle", + "c_cpp.command.BuildAndDebugFile.title": "C/C++ Dosyasında Hata Ayıklama", + "c_cpp.command.BuildAndRunFile.title": "C/C++ Dosyasını Çalıştırın", "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "Dil hizmeti işleme için kullanılacak maksimum eşzamanlı iş parçacığı sayısı. Değer bir ipucudur ve her zaman kullanılamaz. `null` (boş) varsayılanı, mevcut mantıksal işlemcilerin sayısını kullanır.", "c_cpp.configuration.maxCachedProcesses.markdownDescription": "Dil hizmeti işleme için kullanılacak önbelleğe alınmış maksimum işlem sayısı. Varsayılan `null` (boş) değeri kullanılabilir mantıksal işlemci sayısının iki katını kullanıyor.", "c_cpp.configuration.maxMemory.markdownDescription": "Dil hizmeti işleme için kullanılabilen maksimum bellek (MB cinsinden). Bu bellek kullanımı aşıldıktan sonra daha az işlem önbelleğe alınacak ve eşzamanlı olarak çalıştırılacaktır. Varsayılan `null` (boş) sistemin boş belleğini kullanır.", @@ -200,6 +201,7 @@ "c_cpp.configuration.default.customConfigurationVariables.markdownDescription": "`customConfigurationVariables` ayarlanmamışsa bir yapılandırmada kullanılacak değer veya `customConfigurationVariables` içinde anahtar olarak `${default}` varsa eklenecek değerler.", "c_cpp.configuration.updateChannel.markdownDescription": "Uzantının, gelecek özellikleri ve hata düzeltmelerini de içeren en son Insider üyeleri derlemelerini otomatik olarak indirip yüklemek için `Insider üyeleri` olarak ayarlayın.", "c_cpp.configuration.updateChannel.deprecationMessage": "Bu ayar kullanım dışı. Yayın öncesi uzantılar artık Market üzerinden kullanılabilir.", + "c_cpp.configuration.default.dotConfig.markdownDescription": "`dotConfig` belirtilmemişse bir yapılandırmada kullanılacak değer veya `dotConfig` içinde `${default}` varsa eklenecek değerler.", "c_cpp.configuration.experimentalFeatures.description": "\"Deneysel\" özelliklerin kullanılabilir olup olmadığını denetler.", "c_cpp.configuration.suggestSnippets.markdownDescription": "Değer `true` ise, parçacıklar dil sunucusu tarafından sağlanır.", "c_cpp.configuration.enhancedColorization.markdownDescription": "Etkinleştirilirse, kod IntelliSense'e göre renklendirilir. Bu ayar yalnızca `#C_Cpp.intelliSenseEngine#` `Default` olarak ayarlandıysa geçerlidir.", @@ -214,6 +216,7 @@ "c_cpp.configuration.debugger.useBacktickCommandSubstitution.markdownDescription": "`true` ise, hata ayıklayıcı kabuk komut değiştirme eski kesme işaretini ``(`)`` kullanır.", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: Diğer başvuru sonuçları.", "c_cpp.contributes.viewsWelcome.contents": "launch.json hakkında daha fazla bilgi için [C/C++ hata ayıklamasını yapılandırma](https://code.visualstudio.com/docs/cpp/launch-json-reference) konusuna bakın.", + "c_cpp.configuration.debugShortcut.description": "C++ dosyaları için düzenleyici başlık çubuğunda Çalıştır ve Hata Ayıkla yürütme düğmesini göster", "c_cpp.debuggers.pipeTransport.description": "Mevcut olduğunda, hata ayıklayıcısına, VS Code ile MI özellikli hata ayıklayıcısı arka uç yürütülebilir dosyası (gdb gibi) arasında standart giriş/çıkış geçişi sağlayan bir kanal olarak görev yapacak başka bir yürütülebilir dosya aracılığıyla uzak bilgisayara bağlanmasını söyler.", "c_cpp.debuggers.pipeTransport.default.pipeProgram": "Kanal program adı için tam yolu girin, örneğin '/usr/bin/ssh'.", "c_cpp.debuggers.pipeTransport.default.debuggerPath": "Hedef makinedeki hata ayıklayıcısının tam yolu. Örneğin: /usr/bin/gdb.", diff --git a/Extension/i18n/trk/src/Debugger/configurationProvider.i18n.json b/Extension/i18n/trk/src/Debugger/configurationProvider.i18n.json index c9aacf8211..06456a8ecd 100644 --- a/Extension/i18n/trk/src/Debugger/configurationProvider.i18n.json +++ b/Extension/i18n/trk/src/Debugger/configurationProvider.i18n.json @@ -6,23 +6,26 @@ { "default.configuration.menuitem": "Varsayılan Yapılandırma", "select.configuration": "Yapılandırma seçin", - "debug.configuration.selection.canceled": "Hata ayıklama yapılandırma seçimi iptal edildi", - "cl.exe.not.available": "{0} derlemesi ve hata ayıklama yalnızca VS Code, VS için Geliştirici Komut İstemi'nden çalıştırıldığında kullanılabilir.", - "miDebuggerPath.not.available": "miDebuggerPath yok: {0}. Hata ayıklayıcısı yüklendi mi?", "debugger.deprecated.config": "{0}' anahtarı kullanım dışı. Lütfen bunun yerine '{1}' kullanın.", "debugger.not.available": "'{0}' türündeki hata ayıklayıcısı yalnızca Windows'da kullanılabilir. Geçerli işletim sistemi platformunda '{1}' türünü kullanın.", "lldb.framework.install.xcode": "Daha Fazla Bilgi", "lldb.framework.not.found": "lldb-mi için 'LLDB.framework' bulunamıyor. Lütfen XCode'u veya XCode Komut Satırı Araçları'nı yükleyin.", "debugger.launchConfig": "Yapılandırmayı başlat:", + "pre.Launch.Task": "preLaunchTask: {0}", + "build.and.debug.active.file": "etkin dosyayı derle ve dosyada hata ayıkla", + "cl.exe.not.available": "{0} derlemesi ve hata ayıklama yalnızca VS Code, VS için Geliştirici Komut İstemi'nden çalıştırıldığında kullanılabilir.", "lldb.find.failed": "lldb-mi yürütülebilir dosyası için '{0}' bağımlılığı eksik.", "lldb.search.paths": "Şurada arandı:", "lldb.install.help": "Bu sorunu çözmek için, Apple App Store üzerinden XCode'u yükleyin ya da bir Terminal penceresinde '{0}' çalıştırarak XCode Komut Satırı Araçları'nı yükleyin.", - "envfale.failed": "{0} kullanılamadı. Neden: {1}", + "envfile.failed": "{0} kullanılamadı. Neden: {1}", "replacing.sourcepath": "{0} değişkeninin '{1}' olan değeri '{2}' olarak değiştiriliyor.", "replacing.targetpath": "{0} değişkeninin '{1}' olan değeri '{2}' olarak değiştiriliyor.", "replacing.editorPath": "'{1}' adlı {0}, '{2}' ile değiştiriliyor.", "resolving.variables.in.sourcefilemap": "{0} değişkenleri çözümleniyor...", "open.envfile": "{0} öğesini aç", + "cannot.build.non.cpp": "Etkin dosya bir C ya da C++ kaynak dosyası olmadığından derleme veya hata ayıklama yapılamıyor.", + "no.compiler.found": "Derleyici bulunamadı", + "select.debug.configuration": "Bir hata ayıklama yapılandırması seçin", "unexpected.os": "Beklenmeyen işletim sistemi türü", "path.to.pipe.program": "Kanal programının tam yolu, örneğin {0}", "enable.pretty.printing": "{0} için düzgün yazdırmayı etkinleştir", diff --git a/Extension/i18n/trk/src/LanguageServer/extension.i18n.json b/Extension/i18n/trk/src/LanguageServer/extension.i18n.json index 13db99b65d..41e3ea863a 100644 --- a/Extension/i18n/trk/src/LanguageServer/extension.i18n.json +++ b/Extension/i18n/trk/src/LanguageServer/extension.i18n.json @@ -6,6 +6,10 @@ { "learn.how.to.install.a.library": "vcpkg ile bu üst bilgi için bir kitaplık yüklemeyi öğrenin", "copy.vcpkg.command": "'{0}' yükleme vcpkg komutunu panoya kopyalayın", + "more.info.button": "Daha Fazla Bilgi", + "ignore.button": "Yoksay", + "vsix.platform.incompatible": "Yüklü C/C++ uzantısı sisteminiz ile eşleşmiyor.", + "vsix.platform.mismatching": "Yüklenen C/C++ uzantısı, sisteminizle uyumlu ancak eşleşmiyor.", "client.not.found": "istemci bulunamadı", "configuration.select.first": "Yapılandırma seçmek için önce bir klasör açın", "configuration.provider.select.first": "Yapılandırma sağlayıcısı seçmek için önce bir klasör açın", diff --git a/Extension/i18n/trk/src/nativeStrings.i18n.json b/Extension/i18n/trk/src/nativeStrings.i18n.json index faec7b613f..71da4cc794 100644 --- a/Extension/i18n/trk/src/nativeStrings.i18n.json +++ b/Extension/i18n/trk/src/nativeStrings.i18n.json @@ -81,7 +81,7 @@ "error_squiggles_enabled_if_all_headers_resolve": "Tüm üst bilgi bağımlılıkları çözümlenmişse hata ilişkilendirmeleri etkinleştirilir.", "replaced_placeholder_file_record": "Yer tutucu dosya kaydı değiştirildi", "tag_parsing_file": "etiket ayrıştırma dosyası: {0}", - "tag_parsing_error": "Etiket ayrıştırma bir hatayla karşılaştı ancak bu önemli bir sorun olmayabilir. Dosyadaki semboller bulunamıyorsa bize bildirin: {0}", + "tag_parsing_error": "etiket ayrıştırma hatası (simgeler bulunamadığı takdirde bu hata yoksayılabilir):", "reset_timestamp_for": "{0} için zaman damgasını sıfırla", "remove_file_failed": "{0} dosyası kaldırılamadı", "regex_parse_error": "Normal ifade ayrıştırma hatası - vscode deseni: {0}, normal ifade: {1}, hata iletisi: {2}", @@ -216,5 +216,8 @@ "inline_macro": "Satır içi makro", "unable_to_access_browse_database": "Göz atma veritabanına erişilemiyor. ({0})", "default_compiler_path_modified_explicit_intellisense_mode": "Algılanan derleyici ile eşleşmediğinden IntelliSenseMode değiştirildi. Bunun yerine \"compilerPath\" öğesini ayarlamayı deneyin. Sistem içeriklerinin ve tanımlarının algılanmasını devre dışı bırakmak için \"compilerPath\" öğesini \"\" olarak ayarlayın.", - "clear_code_analysis_squiggles": "Code analysis dalgalarını temizle" + "clear_code_analysis_squiggles": "Code analysis dalgalarını temizle", + "multiple_locations_note": "(Birden fazla konum)", + "folder_tag": "Klasör", + "file_tag": "Dosya" } \ No newline at end of file diff --git a/Extension/i18n/trk/ui/settings.html.i18n.json b/Extension/i18n/trk/ui/settings.html.i18n.json index 019b9adf4f..f3c64dce60 100644 --- a/Extension/i18n/trk/ui/settings.html.i18n.json +++ b/Extension/i18n/trk/ui/settings.html.i18n.json @@ -52,6 +52,8 @@ "forced.include": "Zorlamalı ekleme", "forced.include.description": "Kaynak dosyadaki başka herhangi bir karakter işlenmeden önce eklenmesi gereken dosyaların listesi. Dosyalar listelendikleri sırada eklenir.", "one.file.per.line": "Satır başına bir dosya.", + "dot.config": "Nokta Yapılandırması", + "dot.config.description": "Kconfig sistemi tarafından oluşturulan bir .config dosyasının yolu. Kconfig sistemi, bir proje oluşturmak için tüm tanımlamaları içeren bir dosya oluşturur. Kconfig sistemini kullanan projelere örnek olarak Linux Çekirdeği ve NuttX RTOS verilebilir.", "compile.commands": "Derleme komutları", "compile.commands.description": "Çalışma alanı için {0} dosyasının tam yolu. {1} ve {2} ayarları için ayarlanan değerler yerine bu dosyada bulunan içerme yolları ve tanımlar kullanılır. Derleme komutları veritabanı, düzenleyicide açtığınız dosyaya karşılık gelen çeviri birimi için bir giriş içermiyorsa, bir uyarı mesajı görüntülenir ve uzantı bunun yerine {3} ve {4} ayarlarını kullanır.", "merge.configurations": "Yapılandırmaları birleştir", diff --git a/Extension/package.json b/Extension/package.json index 255ab32e88..41ccb10f0f 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.8.2-main", + "version": "1.9.7-main", "publisher": "ms-vscode", "icon": "LanguageCCPP_color_128x.png", "readme": "README.md", @@ -75,7 +75,6 @@ "onCommand:C_Cpp.RunCodeAnalysisOnOpenFiles", "onCommand:C_Cpp.RunCodeAnalysisOnAllFiles", "onCommand:C_Cpp.ClearCodeAnalysisSquiggles", - "onDebugInitialConfigurations", "onDebugResolve:cppdbg", "onDebugResolve:cppvsdbg", "workspaceContains:/.vscode/c_cpp_properties.json", @@ -259,7 +258,7 @@ "owner": "cpptools", "fileLocation": [ "autoDetect", - "${workspaceFolder}" + "${cwd}" ], "pattern": { "regexp": "^(.*?):(\\d+):(\\d*):?\\s+(?:fatal\\s+)?(warning|error):\\s+(.*)$", @@ -2472,6 +2471,12 @@ "markdownDescription": "%c_cpp.configuration.default.enableConfigurationSquiggles.markdownDescription%", "scope": "resource" }, + "C_Cpp.default.dotConfig": { + "type": "string", + "default": null, + "markdownDescription": "%c_cpp.configuration.default.dotConfig.markdownDescription%", + "scope": "resource" + }, "C_Cpp.updateChannel": { "type": "string", "enum": [ @@ -2575,6 +2580,15 @@ ] }, "scope": "resource" + }, + "C_Cpp.debugShortcut": { + "type": "boolean", + "default": false, + "tags": [ + "experimental" + ], + "description": "%c_cpp.configuration.debugShortcut.description%", + "scope": "application" } } }, @@ -2634,11 +2648,6 @@ "title": "%c_cpp.command.takeSurvey.title%", "category": "C/C++" }, - { - "command": "C_Cpp.BuildAndDebugActiveFile", - "title": "%c_cpp.command.buildAndDebugActiveFile.title%", - "category": "C/C++" - }, { "command": "C_Cpp.RestartIntelliSenseForFile", "title": "%c_cpp.command.restartIntelliSenseForFile.title%", @@ -2716,6 +2725,18 @@ "command": "C_Cpp.ClearCodeAnalysisSquiggles", "title": "%c_cpp.command.ClearCodeAnalysisSquiggles.title%", "category": "C/C++" + }, + { + "command": "C_Cpp.BuildAndDebugFile", + "title": "%c_cpp.command.BuildAndDebugFile.title%", + "category": "C/C++", + "icon": "$(debug-alt)" + }, + { + "command": "C_Cpp.BuildAndRunFile", + "title": "%c_cpp.command.BuildAndRunFile.title%", + "category": "C/C++", + "icon": "$(run)" } ], "keybindings": [ @@ -2741,7 +2762,6 @@ "configurationAttributes": { "launch": { "type": "object", - "default": {}, "required": [ "program" ], @@ -3416,7 +3436,6 @@ "configurationAttributes": { "launch": { "type": "object", - "default": {}, "required": [ "program", "cwd" @@ -3832,6 +3851,18 @@ "group": "navigation" } ], + "editor/title/run": [ + { + "command": "C_Cpp.BuildAndDebugFile", + "when": "editorLangId == 'c' && config.C_Cpp.debugShortcut && BuildAndDebug.isSourceFile || editorLangId == 'cpp' && config.C_Cpp.debugShortcut && BuildAndDebug.isSourceFile || editorLangId == 'cuda-cpp' && config.C_Cpp.debugShortcut && BuildAndDebug.isSourceFile", + "group": "navigation@0" + }, + { + "command": "C_Cpp.BuildAndRunFile", + "when": "editorLangId == 'c' && config.C_Cpp.debugShortcut && BuildAndDebug.isSourceFile || editorLangId == 'cpp' && config.C_Cpp.debugShortcut && BuildAndDebug.isSourceFile || editorLangId == 'cuda-cpp' && config.C_Cpp.debugShortcut && BuildAndDebug.isSourceFile", + "group": "navigation@1" + } + ], "editor/context": [ { "when": "editorLangId == 'c' || editorLangId == 'cpp' || editorLangId == 'cuda-cpp'", @@ -3848,11 +3879,6 @@ "command": "workbench.action.showAllSymbols", "group": "other1_navigation@4" }, - { - "when": "editorLangId == 'c' || editorLangId == 'cpp' || editorLangId == 'cuda-cpp'", - "command": "C_Cpp.BuildAndDebugActiveFile", - "group": "other2@1" - }, { "when": "editorLangId == 'c' || editorLangId == 'cpp' || editorLangId == 'cuda-cpp'", "command": "C_Cpp.RunCodeAnalysisOnActiveFile", @@ -4375,7 +4401,7 @@ "gulp-sourcemaps": "^2.6.5", "gulp-typescript": "^5.0.1", "http-proxy-agent": "^2.1.0", - "minimist": "^1.2.5", + "minimist": "^1.2.6", "mocha": "^8.3.2", "parse-git-config": "^3.0.0", "parse5": "^5.1.0", @@ -4408,9 +4434,10 @@ "yauzl": "^2.10.0" }, "resolutions": { + "ajv": "^6.12.3", "ansi-regex": "^5.0.1", "browserslist": "^4.16.6", - "follow-redirects": "1.14.7", + "follow-redirects": "1.14.8", "glob-parent": "^5.1.2", "hosted-git-info": "^3.0.8", "nanoid": "^3.1.20", diff --git a/Extension/package.nls.json b/Extension/package.nls.json index b0d1e2c9ef..62e49aa525 100644 --- a/Extension/package.nls.json +++ b/Extension/package.nls.json @@ -11,7 +11,6 @@ "c_cpp.command.toggleDimInactiveRegions.title": "Toggle Inactive Region Colorization", "c_cpp.command.resetDatabase.title": "Reset IntelliSense Database", "c_cpp.command.takeSurvey.title": "Take Survey", - "c_cpp.command.buildAndDebugActiveFile.title": "Build and Debug Active File", "c_cpp.command.restartIntelliSenseForFile.title": "Restart IntelliSense for Active File", "c_cpp.command.logDiagnostics.title": "Log Diagnostics", "c_cpp.command.referencesViewGroupByType.title": "Group by Reference Type", @@ -26,6 +25,8 @@ "c_cpp.command.RunCodeAnalysisOnOpenFiles.title": "Run Code Analysis on Open Files", "c_cpp.command.RunCodeAnalysisOnAllFiles.title": "Run Code Analysis on All Files", "c_cpp.command.ClearCodeAnalysisSquiggles.title": "Clear Code Analysis Squiggles", + "c_cpp.command.BuildAndDebugFile.title": "Debug C/C++ File", + "c_cpp.command.BuildAndRunFile.title": "Run C/C++ File", "c_cpp.configuration.maxConcurrentThreads.markdownDescription": { "message": "The maximum number of concurrent threads to use for language service processing. The value is a hint and may not always be used. The default of `null` (empty) uses the number of logical processors available.", "comment": [ "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." ] }, "c_cpp.configuration.maxCachedProcesses.markdownDescription": { "message": "The maximum number of cached processes to use for language service processing. The default of `null` (empty) uses twice the number of logical processors available.", "comment": [ "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." ] }, "c_cpp.configuration.maxMemory.markdownDescription": { "message": "The maximum memory (in MB) available for language service processing. Fewer processes will be cached and run concurrently after this memory usage is exceeded. The default of `null` (empty) uses the system's free memory.", "comment": [ "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." ] }, @@ -195,6 +196,7 @@ "c_cpp.configuration.default.customConfigurationVariables.markdownDescription": { "message": "The value to use in a configuration if `customConfigurationVariables` is not set, or the values to insert if `${default}` is present as a key in `customConfigurationVariables`.", "comment": [ "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." ] }, "c_cpp.configuration.updateChannel.markdownDescription": { "message": "Set to `Insiders` to automatically download and install the latest Insiders builds of the extension, which include upcoming features and bug fixes.", "comment": [ "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." ] }, "c_cpp.configuration.updateChannel.deprecationMessage": "This setting is deprecated. Pre-release extensions are now available via the Marketplace.", + "c_cpp.configuration.default.dotConfig.markdownDescription": { "message": "The value to use in a configuration if `dotConfig` is not specified, or the value to insert if `${default}` is present in `dotConfig`.", "comment": [ "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." ] }, "c_cpp.configuration.experimentalFeatures.description": "Controls whether \"experimental\" features are usable.", "c_cpp.configuration.suggestSnippets.markdownDescription": { "message": "If `true`, snippets are provided by the language server.", "comment": [ "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." ] }, "c_cpp.configuration.enhancedColorization.markdownDescription": { "message": "If enabled, code is colorized based on IntelliSense. This setting only applies if `#C_Cpp.intelliSenseEngine#` is set to `Default`.", "comment": [ "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." ] }, @@ -207,8 +209,9 @@ "c_cpp.configuration.filesExcludeBoolean.markdownDescription": { "message": "The glob pattern to match file paths against. Set to `true` or `false` to enable or disable the pattern.", "comment": [ "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." ] }, "c_cpp.configuration.filesExcludeWhen.markdownDescription": { "message": "Additional check on the siblings of a matching file. Use `$(basename)` as variable for the matching file name.", "comment": [ "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." ] }, "c_cpp.configuration.debugger.useBacktickCommandSubstitution.markdownDescription": { "message": "If `true`, debugger shell command substitution will use obsolete backtick ``(`)``.", "comment": [ "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." ] }, - "c_cpp.contributes.views.cppReferencesView.title": "C/C++: Other references results.", + "c_cpp.contributes.views.cppReferencesView.title": "C/C++: Other references results", "c_cpp.contributes.viewsWelcome.contents": { "message": "To learn more about launch.json, see [Configuring C/C++ debugging](https://code.visualstudio.com/docs/cpp/launch-json-reference).", "comment": [ "Markdown text between () should not be altered: https://en.wikipedia.org/wiki/Markdown" ] }, + "c_cpp.configuration.debugShortcut.description": "Show the Run and Debug play button in the editor title bar for C++ files.", "c_cpp.debuggers.pipeTransport.description": "When present, this tells the debugger to connect to a remote computer using another executable as a pipe that will relay standard input/output between VS Code and the MI-enabled debugger backend executable (such as gdb).", "c_cpp.debuggers.pipeTransport.default.pipeProgram": "enter the fully qualified path for the pipe program name, for example '/usr/bin/ssh'.", "c_cpp.debuggers.pipeTransport.default.debuggerPath": "The full path to the debugger on the target machine, for example /usr/bin/gdb.", diff --git a/Extension/src/Debugger/configurationProvider.ts b/Extension/src/Debugger/configurationProvider.ts index ce73591f43..6db33eacbb 100644 --- a/Extension/src/Debugger/configurationProvider.ts +++ b/Extension/src/Debugger/configurationProvider.ts @@ -11,12 +11,10 @@ import { CppBuildTask, CppBuildTaskDefinition } from '../LanguageServer/cppBuild import * as util from '../common'; import * as fs from 'fs'; import * as Telemetry from '../telemetry'; -import { buildAndDebugActiveFileStr } from './extension'; -import { cppBuildTaskProvider } from '../LanguageServer/extension'; +import { cppBuildTaskProvider, configPrefix } from '../LanguageServer/extension'; import * as logger from '../logger'; import * as nls from 'vscode-nls'; - -import { IConfiguration, IConfigurationSnippet, DebuggerType, MIConfigurations, WindowsConfigurations, WSLConfigurations, PipeTransportConfigurations } from './configurations'; +import { IConfiguration, IConfigurationSnippet, DebuggerType, DebuggerEvent, MIConfigurations, WindowsConfigurations, WSLConfigurations, PipeTransportConfigurations, TaskConfigStatus } from './configurations'; import { parse } from 'comment-json'; import { PlatformInformation } from '../platform'; import { Environment, ParsedEnvironmentFile } from './ParsedEnvironmentFile'; @@ -33,15 +31,24 @@ function isDebugLaunchStr(str: string): boolean { * Ensures that the selected configuration's preLaunchTask (if existent) is populated in the user's task.json. * Automatically starts debugging for "Build and Debug" configurations. */ -export class QuickPickConfigurationProvider implements vscode.DebugConfigurationProvider { - private underlyingProvider: vscode.DebugConfigurationProvider; +export class DebugConfigurationProvider implements vscode.DebugConfigurationProvider { + + private type: DebuggerType; + private assetProvider: IConfigurationAssetProvider; + // Keep a list of tasks detected by cppBuildTaskProvider. + private static detectedBuildTasks: CppBuildTask[] = []; + protected static recentBuildTaskLabel: string; - public constructor(provider: CppConfigurationProvider) { - this.underlyingProvider = provider; + public constructor(assetProvider: IConfigurationAssetProvider, type: DebuggerType) { + this.assetProvider = assetProvider; + this.type = type; } + /** + * Returns a list of initial debug configurations based on contextual information, e.g. package.json or folder. + */ async provideDebugConfigurations(folder?: vscode.WorkspaceFolder, token?: vscode.CancellationToken): Promise { - let configs: vscode.DebugConfiguration[] | null | undefined = this.underlyingProvider.provideDebugConfigurations ? await this.underlyingProvider.provideDebugConfigurations(folder, token) : undefined; + let configs: vscode.DebugConfiguration[] | null | undefined = await this.provideDebugConfigurationsForType(this.type, folder, token); if (!configs) { configs = []; } @@ -50,18 +57,34 @@ export class QuickPickConfigurationProvider implements vscode.DebugConfiguration throw new Error("Default config not found in provideDebugConfigurations()"); } const editor: vscode.TextEditor | undefined = vscode.window.activeTextEditor; - if (!editor || !util.fileIsCOrCppSource(editor.document.fileName) || configs.length <= 1) { + if (!editor || !util.isCppOrCFile(editor.document.uri) || configs.length <= 1) { return [defaultConfig]; } interface MenuItem extends vscode.QuickPickItem { configuration: vscode.DebugConfiguration; } + // Find the recently used task and place it at the top of quickpick list. + let recentlyUsedConfig: vscode.DebugConfiguration | undefined; + configs = configs.filter(config => { + if (config.existing !== TaskConfigStatus.recentlyUsed) { + return true; + } else { + recentlyUsedConfig = config; + return false; + } + }); + if (recentlyUsedConfig) { + configs.unshift(recentlyUsedConfig); + } + const items: MenuItem[] = configs.map(config => { - const noDetailConfig: vscode.DebugConfiguration = {...config}; + const reducedConfig: vscode.DebugConfiguration = {...config}; // Remove the "detail" property from the DebugConfiguration that will be written in launch.json. - noDetailConfig.detail = undefined; - const menuItem: MenuItem = { label: config.name, configuration: noDetailConfig, description: config.detail }; + reducedConfig.detail = undefined; + reducedConfig.existing = undefined; + reducedConfig.isDefault = undefined; + const menuItem: MenuItem = { label: config.name, configuration: reducedConfig, description: config.detail, detail: config.existing }; // Rename the menu item for the default configuration as its name is non-descriptive. if (isDebugLaunchStr(menuItem.label)) { menuItem.label = localize("default.configuration.menuitem", "Default Configuration"); @@ -71,89 +94,175 @@ export class QuickPickConfigurationProvider implements vscode.DebugConfiguration const selection: MenuItem | undefined = await vscode.window.showQuickPick(items, {placeHolder: localize("select.configuration", "Select a configuration")}); if (!selection) { - throw Error(localize("debug.configuration.selection.canceled", "Debug configuration selection canceled")); // User canceled it. - } - if (selection.label.startsWith("cl.exe")) { - if (!process.env.DevEnvDir) { - vscode.window.showErrorMessage(localize("cl.exe.not.available", "{0} build and debug is only usable when VS Code is run from the Developer Command Prompt for VS.", "cl.exe")); - return [selection.configuration]; - } + Telemetry.logDebuggerEvent(DebuggerEvent.debugPanel, { "debugType": "debug", "folderMode": folder ? "folder" : "singleFile", "cancelled": "true" }); + return []; // User canceled it. } - if (selection.label.indexOf(buildAndDebugActiveFileStr()) !== -1 && selection.configuration.preLaunchTask) { - try { - await cppBuildTaskProvider.ensureBuildTaskExists(selection.configuration.preLaunchTask); - if (selection.configuration.miDebuggerPath) { - if (!await util.checkFileExists(selection.configuration.miDebuggerPath)) { - vscode.window.showErrorMessage(localize("miDebuggerPath.not.available", "miDebuggerPath does not exist: {0}. Has a debugger been installed?", selection.configuration.miDebuggerPath)); - throw new Error(); - } - } - await vscode.debug.startDebugging(folder, selection.configuration); - Telemetry.logDebuggerEvent("buildAndDebug", { "success": "true" }); - } catch (e) { - Telemetry.logDebuggerEvent("buildAndDebug", { "success": "false" }); - } + + if (this.isClConfiguration(selection.label)) { + this.showErrorIfClNotAvailable(selection.label); } + return [selection.configuration]; } + /** + * Error checks the provided 'config' without any variables substituted. + * If return "undefined", the debugging will be aborted silently. + * If return "null", the debugging will be aborted and launch.json will be opened. + */ resolveDebugConfiguration(folder: vscode.WorkspaceFolder | undefined, config: vscode.DebugConfiguration, token?: vscode.CancellationToken): vscode.ProviderResult { - return this.underlyingProvider.resolveDebugConfiguration ? this.underlyingProvider.resolveDebugConfiguration(folder, config, token) : undefined; + if (!config || !config.type) { + // When DebugConfigurationProviderTriggerKind is Dynamic, this function will be called with an empty config. + // Providing debug configs, and debugging should be called manually. + // Currently, we expect only one debug config to be selected. + this.provideDebugConfigurations(folder).then(async configs => { + if (!configs || configs.length === 0) { + Telemetry.logDebuggerEvent(DebuggerEvent.debugPanel, { "debugType": "debug", "folderMode": folder ? "folder" : "singleFile", "cancelled": "true" }); + return undefined; // aborts debugging silently + } else { + console.assert(configs.length === 1, "More than one debug config is selected."); + await this.resolvePreLaunchTask(folder, configs[0], DebuggerEvent.debugPanel); + await this.startDebugging(folder, configs[0], DebuggerEvent.debugPanel); + return configs[0]; + } + }); + } else { + // resolveDebugConfigurationWithSubstitutedVariables will be called automatically after this. + if (config.type === 'cppvsdbg') { + // Handle legacy 'externalConsole' bool and convert to console: "externalTerminal" + if (config.hasOwnProperty("externalConsole")) { + logger.getOutputChannelLogger().showWarningMessage(localize("debugger.deprecated.config", "The key '{0}' is deprecated. Please use '{1}' instead.", "externalConsole", "console")); + if (config.externalConsole && !config.console) { + config.console = "externalTerminal"; + } + delete config.externalConsole; + } + + // Fail if cppvsdbg type is running on non-Windows + if (os.platform() !== 'win32') { + logger.getOutputChannelLogger().showWarningMessage(localize("debugger.not.available", "Debugger of type: '{0}' is only available on Windows. Use type: '{1}' on the current OS platform.", "cppvsdbg", "cppdbg")); + return undefined; // Stop debugging + } + } + return config; + } } + /** + * This hook is directly called after 'resolveDebugConfiguration' but with all variables substituted. + * This is also ran after the tasks.json has completed. + * + * Try to add all missing attributes to the debug configuration being launched. + * If return "undefined", the debugging will be aborted silently. + * If return "null", the debugging will be aborted and launch.json will be opened. + */ resolveDebugConfigurationWithSubstitutedVariables(folder: vscode.WorkspaceFolder | undefined, config: vscode.DebugConfiguration, token?: vscode.CancellationToken): vscode.ProviderResult { - return this.underlyingProvider.resolveDebugConfigurationWithSubstitutedVariables ? this.underlyingProvider.resolveDebugConfigurationWithSubstitutedVariables(folder, config, token) : undefined; - } -} + if (!config || !config.type) { + return undefined; + } -class CppConfigurationProvider implements vscode.DebugConfigurationProvider { - private type: DebuggerType; - private provider: IConfigurationAssetProvider; + if (config.type === 'cppvsdbg') { + // Disable debug heap by default, enable if 'enableDebugHeap' is set. + if (!config.enableDebugHeap) { + const disableDebugHeapEnvSetting: Environment = {"name" : "_NO_DEBUG_HEAP", "value" : "1"}; - public constructor(provider: IConfigurationAssetProvider, type: DebuggerType) { - this.provider = provider; - this.type = type; + if (config.environment && util.isArray(config.environment)) { + config.environment.push(disableDebugHeapEnvSetting); + } else { + config.environment = [disableDebugHeapEnvSetting]; + } + } + } + + // Add environment variables from .env file + this.resolveEnvFile(config, folder); + + this.resolveSourceFileMapVariables(config); + + // Modify WSL config for OpenDebugAD7 + if (os.platform() === 'win32' && + config.pipeTransport && + config.pipeTransport.pipeProgram) { + let replacedPipeProgram: string | undefined; + const pipeProgramStr: string = config.pipeTransport.pipeProgram.toLowerCase().trim(); + + // OpenDebugAD7 is a 32-bit process. Make sure the WSL pipe transport is using the correct program. + replacedPipeProgram = debugUtils.ArchitectureReplacer.checkAndReplaceWSLPipeProgram(pipeProgramStr, debugUtils.ArchType.ia32); + + // If pipeProgram does not get replaced and there is a pipeCwd, concatenate with pipeProgramStr and attempt to replace. + if (!replacedPipeProgram && !path.isAbsolute(pipeProgramStr) && config.pipeTransport.pipeCwd) { + const pipeCwdStr: string = config.pipeTransport.pipeCwd.toLowerCase().trim(); + const newPipeProgramStr: string = path.join(pipeCwdStr, pipeProgramStr); + + replacedPipeProgram = debugUtils.ArchitectureReplacer.checkAndReplaceWSLPipeProgram(newPipeProgramStr, debugUtils.ArchType.ia32); + } + + if (replacedPipeProgram) { + config.pipeTransport.pipeProgram = replacedPipeProgram; + } + } + + const macOSMIMode: string = config.osx?.MIMode ?? config.MIMode; + const macOSMIDebuggerPath: string = config.osx?.miDebuggerPath ?? config.miDebuggerPath; + + const lldb_mi_10_x_path: string = path.join(util.extensionPath, "debugAdapters", "lldb-mi", "bin", "lldb-mi"); + + // Validate LLDB-MI + if (os.platform() === 'darwin' && // Check for macOS + fs.existsSync(lldb_mi_10_x_path) && // lldb-mi 10.x exists + (!macOSMIMode || macOSMIMode === 'lldb') && + !macOSMIDebuggerPath // User did not provide custom lldb-mi + ) { + const frameworkPath: string | undefined = this.getLLDBFrameworkPath(); + + if (!frameworkPath) { + const moreInfoButton: string = localize("lldb.framework.install.xcode", "More Info"); + const LLDBFrameworkMissingMessage: string = localize("lldb.framework.not.found", "Unable to locate 'LLDB.framework' for lldb-mi. Please install XCode or XCode Command Line Tools."); + + vscode.window.showErrorMessage(LLDBFrameworkMissingMessage, moreInfoButton) + .then(value => { + if (value === moreInfoButton) { + const helpURL: string = "https://aka.ms/vscode-cpptools/LLDBFrameworkNotFound"; + vscode.env.openExternal(vscode.Uri.parse(helpURL)); + } + }); + + return undefined; + } + } + + if (config.logging?.engineLogging) { + const outputChannel: logger.Logger = logger.getOutputChannelLogger(); + outputChannel.appendLine(localize("debugger.launchConfig", "Launch configuration:")); + outputChannel.appendLine(JSON.stringify(config, undefined, 2)); + // TODO: Enable when https://github.com/microsoft/vscode/issues/108619 is resolved. + // logger.showOutputChannel(); + } + + return config; } - /** - * Returns a list of initial debug configurations based on contextual information, e.g. package.json or folder. - */ - async provideDebugConfigurations(folder?: vscode.WorkspaceFolder, token?: vscode.CancellationToken): Promise { - const defaultConfig: vscode.DebugConfiguration = this.provider.getInitialConfigurations(this.type).find((config: any) => + async provideDebugConfigurationsForType(type: DebuggerType, folder?: vscode.WorkspaceFolder, token?: vscode.CancellationToken): Promise { + const defaultConfig: vscode.DebugConfiguration = this.assetProvider.getInitialConfigurations(type).find((config: any) => isDebugLaunchStr(config.name) && config.request === "launch"); console.assert(defaultConfig, "Could not find default debug configuration."); const platformInfo: PlatformInformation = await PlatformInformation.GetPlatformInformation(); - const platform: string = platformInfo.platform; - // Import the tasks from tasks.json file. - const buildTasksJson: CppBuildTask[] = await cppBuildTaskProvider.getJsonTasks(); - - // Provide detected tasks by cppBuildTaskProvider. - const buildTasksDetected: CppBuildTask[] = await cppBuildTaskProvider.getTasks(true); - - // Rename the provided tasks that has same name as tasks in tasks.json. - const buildTasksDetectedRename: CppBuildTask[] = buildTasksDetected.map(taskDetected => { - for (const taskJson of buildTasksJson) { - if ((taskDetected.definition.label as string) === (taskJson.definition.label as string)) { - taskDetected.name = cppBuildTaskProvider.provideUniqueTaskLabel(taskJson.definition.label, buildTasksJson); - taskDetected.definition.label = taskDetected.name; - break; - } - } - return taskDetected; - }); + // Import the existing configured tasks from tasks.json file. + const configuredBuildTasks: CppBuildTask[] = await cppBuildTaskProvider.getJsonTasks(); let buildTasks: CppBuildTask[] = []; - buildTasks = buildTasks.concat(buildTasksJson, buildTasksDetectedRename); + await this.loadDetectedTasks(); + // Remove the tasks that are already configured once in tasks.json. + const dedupDetectedBuildTasks: CppBuildTask[] = DebugConfigurationProvider.detectedBuildTasks.filter(taskDetected => + (!configuredBuildTasks.some(taskJson => (taskJson.definition.label === taskDetected.definition.label)))); + buildTasks = buildTasks.concat(configuredBuildTasks, dedupDetectedBuildTasks); if (buildTasks.length === 0) { - return Promise.resolve(this.provider.getInitialConfigurations(this.type)); + return []; } - if (buildTasks.length === 0) { - return Promise.resolve(this.provider.getInitialConfigurations(this.type)); - } // Filter out build tasks that don't match the currently selected debug configuration type. buildTasks = buildTasks.filter((task: CppBuildTask) => { const command: string = task.definition.command as string; @@ -178,26 +287,30 @@ class CppConfigurationProvider implements vscode.DebugConfigurationProvider { const definition: CppBuildTaskDefinition = task.definition as CppBuildTaskDefinition; const compilerPath: string = definition.command; const compilerName: string = path.basename(compilerPath); - const newConfig: vscode.DebugConfiguration = {...defaultConfig}; // Copy enumerables and properties + const newConfig: vscode.DebugConfiguration = { ...defaultConfig }; // Copy enumerables and properties - newConfig.name = compilerName + buildAndDebugActiveFileStr(); + newConfig.name = configPrefix + compilerName + " " + this.buildAndDebugActiveFileStr(); newConfig.preLaunchTask = task.name; if (newConfig.type === "cppdbg") { newConfig.externalConsole = false; } else { newConfig.console = "externalTerminal"; } + const isWindows: boolean = platformInfo.platform === 'win32'; const exeName: string = path.join("${fileDirname}", "${fileBasenameNoExtension}"); - const isWindows: boolean = platform === 'win32'; newConfig.program = isWindows ? exeName + ".exe" : exeName; // Add the "detail" property to show the compiler path in QuickPickItem. // This property will be removed before writing the DebugConfiguration in launch.json. - newConfig.detail = task.detail ? task.detail : definition.command; + newConfig.detail = localize("pre.Launch.Task", "preLaunchTask: {0}", task.name); + newConfig.existing = (task.name === DebugConfigurationProvider.recentBuildTaskLabelStr) ? TaskConfigStatus.recentlyUsed : (task.existing ? TaskConfigStatus.configured : TaskConfigStatus.detected); + if (task.isDefault) { + newConfig.isDefault = true; + } const isCl: boolean = compilerName === "cl.exe"; newConfig.cwd = isWindows && !isCl && !process.env.PATH?.includes(path.dirname(compilerPath)) ? path.dirname(compilerPath) : "${fileDirname}"; return new Promise(resolve => { - if (platform === "darwin") { + if (platformInfo.platform === "darwin") { return resolve(newConfig); } else { let debuggerName: string; @@ -230,7 +343,7 @@ class CppConfigurationProvider implements vscode.DebugConfigurationProvider { return resolve(newConfig); } else { fs.stat(debuggerPath, (err, stats: fs.Stats) => { - if (!err && stats && stats.isFile) { + if (!err && stats && stats.isFile()) { newConfig.miDebuggerPath = debuggerPath; } else { newConfig.miDebuggerPath = path.join("/usr", "bin", debuggerName); @@ -245,126 +358,34 @@ class CppConfigurationProvider implements vscode.DebugConfigurationProvider { return configs; } - /** - * Error checks the provided 'config' without any variables substituted. - */ - resolveDebugConfiguration(folder: vscode.WorkspaceFolder | undefined, config: vscode.DebugConfiguration, token?: vscode.CancellationToken): vscode.ProviderResult { - // [Microsoft/vscode#54213] If config or type is not specified, return null to trigger VS Code to call provideDebugConfigurations - if (!config || !config.type) { - return null; + private async loadDetectedTasks(): Promise { + if (!DebugConfigurationProvider.detectedBuildTasks || DebugConfigurationProvider.detectedBuildTasks.length === 0) { + DebugConfigurationProvider.detectedBuildTasks = await cppBuildTaskProvider.getTasks(true); } - - if (config.type === 'cppvsdbg') { - // Handle legacy 'externalConsole' bool and convert to console: "externalTerminal" - if (config.hasOwnProperty("externalConsole")) { - logger.getOutputChannelLogger().showWarningMessage(localize("debugger.deprecated.config", "The key '{0}' is deprecated. Please use '{1}' instead.", "externalConsole", "console")); - if (config.externalConsole && !config.console) { - config.console = "externalTerminal"; - } - delete config.externalConsole; - } - - // Fail if cppvsdbg type is running on non-Windows - if (os.platform() !== 'win32') { - logger.getOutputChannelLogger().showWarningMessage(localize("debugger.not.available", "Debugger of type: '{0}' is only available on Windows. Use type: '{1}' on the current OS platform.", "cppvsdbg", "cppdbg")); - return undefined; // Stop debugging - } - } - - return config; } - /** - * This hook is directly called after 'resolveDebugConfiguration' but with all variables substituted. - * This is also ran after the tasks.json has completed. - * - * Try to add all missing attributes to the debug configuration being launched. - */ - resolveDebugConfigurationWithSubstitutedVariables(folder: vscode.WorkspaceFolder | undefined, config: vscode.DebugConfiguration, token?: vscode.CancellationToken): vscode.ProviderResult { - // [Microsoft/vscode#54213] If config or type is not specified, return null to trigger VS Code to call provideDebugConfigurations - if (!config || !config.type) { - return null; - } - - if (config.type === 'cppvsdbg') { - // Disable debug heap by default, enable if 'enableDebugHeap' is set. - if (!config.enableDebugHeap) { - const disableDebugHeapEnvSetting: Environment = {"name" : "_NO_DEBUG_HEAP", "value" : "1"}; - - if (config.environment && util.isArray(config.environment)) { - config.environment.push(disableDebugHeapEnvSetting); - } else { - config.environment = [disableDebugHeapEnvSetting]; - } - } - } - - // Add environment variables from .env file - this.resolveEnvFile(config, folder); - - this.resolveSourceFileMapVariables(config); - - // Modify WSL config for OpenDebugAD7 - if (os.platform() === 'win32' && - config.pipeTransport && - config.pipeTransport.pipeProgram) { - let replacedPipeProgram: string | undefined; - const pipeProgramStr: string = config.pipeTransport.pipeProgram.toLowerCase().trim(); - - // OpenDebugAD7 is a 32-bit process. Make sure the WSL pipe transport is using the correct program. - replacedPipeProgram = debugUtils.ArchitectureReplacer.checkAndReplaceWSLPipeProgram(pipeProgramStr, debugUtils.ArchType.ia32); - - // If pipeProgram does not get replaced and there is a pipeCwd, concatenate with pipeProgramStr and attempt to replace. - if (!replacedPipeProgram && !path.isAbsolute(pipeProgramStr) && config.pipeTransport.pipeCwd) { - const pipeCwdStr: string = config.pipeTransport.pipeCwd.toLowerCase().trim(); - const newPipeProgramStr: string = path.join(pipeCwdStr, pipeProgramStr); - - replacedPipeProgram = debugUtils.ArchitectureReplacer.checkAndReplaceWSLPipeProgram(newPipeProgramStr, debugUtils.ArchType.ia32); - } - - if (replacedPipeProgram) { - config.pipeTransport.pipeProgram = replacedPipeProgram; - } - } - - const macOSMIMode: string = config.osx?.MIMode ?? config.MIMode; - const macOSMIDebuggerPath: string = config.osx?.miDebuggerPath ?? config.miDebuggerPath; - - const lldb_mi_10_x_path: string = path.join(util.extensionPath, "debugAdapters", "lldb-mi", "bin", "lldb-mi"); - - // Validate LLDB-MI - if (os.platform() === 'darwin' && // Check for macOS - fs.existsSync(lldb_mi_10_x_path) && // lldb-mi 10.x exists - (!macOSMIMode || macOSMIMode === 'lldb') && - !macOSMIDebuggerPath // User did not provide custom lldb-mi - ) { - const frameworkPath: string | undefined = this.getLLDBFrameworkPath(); + public static get recentBuildTaskLabelStr(): string { + return DebugConfigurationProvider.recentBuildTaskLabel; + } - if (!frameworkPath) { - const moreInfoButton: string = localize("lldb.framework.install.xcode", "More Info"); - const LLDBFrameworkMissingMessage: string = localize("lldb.framework.not.found", "Unable to locate 'LLDB.framework' for lldb-mi. Please install XCode or XCode Command Line Tools."); + public static set recentBuildTaskLabelStr(recentTask: string) { + DebugConfigurationProvider.recentBuildTaskLabel = recentTask; + } - vscode.window.showErrorMessage(LLDBFrameworkMissingMessage, moreInfoButton) - .then(value => { - if (value === moreInfoButton) { - const helpURL: string = "https://aka.ms/vscode-cpptools/LLDBFrameworkNotFound"; - vscode.env.openExternal(vscode.Uri.parse(helpURL)); - } - }); + private buildAndDebugActiveFileStr(): string { + return `${localize("build.and.debug.active.file", 'build and debug active file')}`; + } - return undefined; - } - } + private isClConfiguration(configurationLabel: string): boolean { + return configurationLabel.startsWith("C/C++: cl.exe"); + } - if (config.logging?.engineLogging) { - const outputChannel: logger.Logger = logger.getOutputChannelLogger(); - outputChannel.appendLine(localize("debugger.launchConfig", "Launch configuration:")); - outputChannel.appendLine(JSON.stringify(config, undefined, 2)); - // TODO: Enable when https://github.com/microsoft/vscode/issues/108619 is resolved. - // logger.showOutputChannel(); + private showErrorIfClNotAvailable(configurationLabel: string): boolean { + if (!process.env.DevEnvDir || process.env.DevEnvDir.length === 0) { + vscode.window.showErrorMessage(localize("cl.exe.not.available", "{0} build and debug is only usable when VS Code is run from the Developer Command Prompt for VS.", "cl.exe")); + return true; } - - return config; + return false; } private getLLDBFrameworkPath(): string | undefined { @@ -411,7 +432,7 @@ class CppConfigurationProvider implements vscode.DebugConfigurationProvider { // show error message if single lines cannot get parsed if (parsedFile.Warning) { - CppConfigurationProvider.showFileWarningAsync(parsedFile.Warning, config.envFile); + DebugConfigurationProvider.showFileWarningAsync(parsedFile.Warning, config.envFile); } config.environment = parsedFile.Env; @@ -419,7 +440,7 @@ class CppConfigurationProvider implements vscode.DebugConfigurationProvider { delete config.envFile; } catch (errJS) { const e: Error = errJS as Error; - throw new Error(localize("envfale.failed", "Failed to use {0}. Reason: {1}", "envFile", e.message)); + throw new Error(localize("envfile.failed", "Failed to use {0}. Reason: {1}", "envFile", e.message)); } } } @@ -488,17 +509,152 @@ class CppConfigurationProvider implements vscode.DebugConfigurationProvider { } } } -} -export class CppVsDbgConfigurationProvider extends CppConfigurationProvider { - public constructor(provider: IConfigurationAssetProvider) { - super(provider, DebuggerType.cppvsdbg); + public async getLaunchConfigs(folder: vscode.WorkspaceFolder | undefined): Promise { + let configs: vscode.WorkspaceConfiguration[] | undefined = vscode.workspace.getConfiguration('launch', folder).get('configurations'); + if (!configs) { + return undefined; + } + configs = configs.filter(config => (config.name && config.request === "launch" && (config.type === DebuggerType.cppvsdbg || config.type === DebuggerType.cppdbg))); + return configs; + } + + public async buildAndRun(textEditor: vscode.TextEditor): Promise { + // Turn off the debug mode. + return this.buildAndDebug(textEditor, false); + } + + public async buildAndDebug(textEditor: vscode.TextEditor, debugModeOn: boolean = true): Promise { + + const folder: vscode.WorkspaceFolder | undefined = vscode.workspace.getWorkspaceFolder(textEditor.document.uri); + if (!util.isCppOrCFile(textEditor.document.uri)) { + vscode.window.showErrorMessage(localize("cannot.build.non.cpp", 'Cannot build and debug because the active file is not a C or C++ source file.')); + return; + } + + // Get debug configurations for all debugger types. + let configs: vscode.DebugConfiguration[] = await this.provideDebugConfigurationsForType(DebuggerType.cppdbg, folder); + if (os.platform() === 'win32') { + configs = configs.concat(await this.provideDebugConfigurationsForType(DebuggerType.cppvsdbg, folder)); + } + + if (folder) { + // Get existing debug configurations from launch.json. + const existingConfigs: vscode.DebugConfiguration[] | undefined = (await this.getLaunchConfigs(folder))?.map(config => ({ + name: config.name, + type: config.type, + request: config.request, + detail: config.detail ? config.detail : localize("pre.Launch.Task", "preLaunchTask: {0}", config.preLaunchTask), + preLaunchTask: config.preLaunchTask, + existing: TaskConfigStatus.configured + })); + if (existingConfigs) { + const areEqual = (config1: vscode.DebugConfiguration, config2: vscode.DebugConfiguration): boolean => + (config1.name === config2.name && config1.preLaunchTask === config2.preLaunchTask + && config1.type === config2.type && config1.request === config2.request); + // Remove the detected configs that are already configured once in launch.json. + const dedupExistingConfigs: vscode.DebugConfiguration[] = configs.filter(detectedConfig => !existingConfigs.some(config => areEqual(config, detectedConfig))); + configs = existingConfigs.concat(dedupExistingConfigs); + } + } + + const defaultConfig: vscode.DebugConfiguration[] = configs.filter((config: vscode.DebugConfiguration) => (config.hasOwnProperty("isDefault") && config.isDefault)); + interface MenuItem extends vscode.QuickPickItem { + configuration: vscode.DebugConfiguration; + } + + const items: MenuItem[] = configs.map(config => ({ label: config.name, configuration: config, description: config.detail, detail: config.existing })); + + let selection: MenuItem | undefined; + + if (defaultConfig.length !== 0) { + selection = { label: defaultConfig[0].name, configuration: defaultConfig[0], description: defaultConfig[0].detail, detail: defaultConfig[0].existing }; + } else { + let sortedItems: MenuItem[] = []; + // Find the recently used task and place it at the top of quickpick list. + const recentTask: MenuItem[] = items.filter(item => (item.configuration.preLaunchTask && item.configuration.preLaunchTask === DebugConfigurationProvider.recentBuildTaskLabelStr)); + if (recentTask.length !== 0) { + recentTask[0].detail = TaskConfigStatus.recentlyUsed; + sortedItems.push(recentTask[0]); + } + sortedItems = sortedItems.concat(items.filter(item => item.detail === TaskConfigStatus.configured)); + sortedItems = sortedItems.concat(items.filter(item => item.detail === TaskConfigStatus.detected)); + selection = await vscode.window.showQuickPick(sortedItems, { + placeHolder: (items.length === 0 ? localize("no.compiler.found", "No compiler found") : localize("select.debug.configuration", "Select a debug configuration")) + }); + } + + const debuggerEvent: string = DebuggerEvent.launchPlayButton; + if (!selection) { + Telemetry.logDebuggerEvent(debuggerEvent, { "debugType": debugModeOn ? "debug" : "run", "folderMode": folder ? "folder" : "singleFile", "cancelled": "true" }); + return; // User canceled it. + } + + if (this.isClConfiguration(selection.label) && this.showErrorIfClNotAvailable(selection.label)) { + return; + } + + // Resolve config before start debugging. + let resolvedConfig: vscode.DebugConfiguration | undefined | null; + if (selection.configuration && selection.configuration.type) { + resolvedConfig = await this.resolveDebugConfiguration(folder, selection.configuration); + if (resolvedConfig) { + resolvedConfig = await this.resolveDebugConfigurationWithSubstitutedVariables(folder, resolvedConfig); + } + } + if (resolvedConfig) { + await this.resolvePreLaunchTask(folder, resolvedConfig, debuggerEvent, debugModeOn); + await this.startDebugging(folder, resolvedConfig, debuggerEvent, debugModeOn); + } } -} -export class CppDbgConfigurationProvider extends CppConfigurationProvider { - public constructor(provider: IConfigurationAssetProvider) { - super(provider, DebuggerType.cppdbg); + private async resolvePreLaunchTask(folder: vscode.WorkspaceFolder | undefined, configuration: vscode.DebugConfiguration, debuggerEvent: string, debugModeOn: boolean = true): Promise { + const debugType: string = debugModeOn ? "debug" : "run"; + const folderMode: string = folder ? "folder" : "singleFile"; + if (configuration.preLaunchTask) { + try { + if (folder) { + await cppBuildTaskProvider.checkBuildTaskExists(configuration.preLaunchTask); + DebugConfigurationProvider.recentBuildTaskLabelStr = configuration.preLaunchTask; + } else { + // In case of singleFile, remove the preLaunch task from the debug configuration and run it here instead. + await cppBuildTaskProvider.runBuildTask(configuration.preLaunchTask); + DebugConfigurationProvider.recentBuildTaskLabelStr = configuration.preLaunchTask; + } + } catch (errJS) { + const e: Error = errJS as Error; + if (e && e.message === util.failedToParseJson) { + vscode.window.showErrorMessage(util.failedToParseJson); + } + Telemetry.logDebuggerEvent(debuggerEvent, { "debugType": debugType, "folderMode": folderMode, "config": "noBuildConfig", "success": "false" }); + } + } + } + + private async startDebugging(folder: vscode.WorkspaceFolder | undefined, configuration: vscode.DebugConfiguration, debuggerEvent: string, debugModeOn: boolean = true): Promise { + const debugType: string = debugModeOn ? "debug" : "run"; + const folderMode: string = folder ? "folder" : "singleFile"; + if (!folder) { + // In case of singleFile, remove the preLaunch task. + configuration.preLaunchTask = undefined; + } + try { + // Check if the debug configuration exists in launch.json. + await cppBuildTaskProvider.checkDebugConfigExists(configuration.name); + try { + await vscode.debug.startDebugging(folder, configuration.name, {noDebug: !debugModeOn}); + Telemetry.logDebuggerEvent(debuggerEvent, { "debugType": debugType, "folderMode": folderMode, "config": "launchConfig", "success": "true" }); + } catch (e) { + Telemetry.logDebuggerEvent(debuggerEvent, { "debugType": debugType, "folderMode": folderMode, "config": "launchConfig", "success": "false" }); + } + } catch (e) { + try { + await vscode.debug.startDebugging(folder, configuration, {noDebug: !debugModeOn}); + Telemetry.logDebuggerEvent(debuggerEvent, { "debugType": debugType, "folderMode": folderMode, "config": "noLaunchConfig", "success": "true" }); + } catch (e) { + Telemetry.logDebuggerEvent(debuggerEvent, { "debugType": debugType, "folderMode": folderMode, "config": "noLaunchConfig", "success": "false" }); + } + } } } @@ -544,8 +700,8 @@ abstract class DefaultConfigurationProvider implements IConfigurationAssetProvid const completionItems: vscode.CompletionItem[] = []; this.configurations.forEach(configuration => { - completionItems.push(convertConfigurationSnippetToCompetionItem(configuration.GetLaunchConfiguration())); - completionItems.push(convertConfigurationSnippetToCompetionItem(configuration.GetAttachConfiguration())); + completionItems.push(convertConfigurationSnippetToCompletionItem(configuration.GetLaunchConfiguration())); + completionItems.push(convertConfigurationSnippetToCompletionItem(configuration.GetAttachConfiguration())); }); return completionItems; @@ -619,7 +775,7 @@ class LinuxConfigurationProvider extends DefaultConfigurationProvider { } } -function convertConfigurationSnippetToCompetionItem(snippet: IConfigurationSnippet): vscode.CompletionItem { +function convertConfigurationSnippetToCompletionItem(snippet: IConfigurationSnippet): vscode.CompletionItem { const item: vscode.CompletionItem = new vscode.CompletionItem(snippet.label, vscode.CompletionItemKind.Snippet); item.insertText = snippet.bodyText; diff --git a/Extension/src/Debugger/configurations.ts b/Extension/src/Debugger/configurations.ts index 7043ecacab..4247c3e476 100644 --- a/Extension/src/Debugger/configurations.ts +++ b/Extension/src/Debugger/configurations.ts @@ -5,13 +5,26 @@ import * as os from 'os'; import * as nls from 'vscode-nls'; +import { configPrefix } from '../LanguageServer/extension'; nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })(); const localize: nls.LocalizeFunc = nls.loadMessageBundle(); export enum DebuggerType { - cppvsdbg, - cppdbg + cppvsdbg = "cppvsdbg", + cppdbg = "cppdbg", + all = "all" +} + +export enum DebuggerEvent { + debugPanel = "debugPanel", + launchPlayButton = "launchPlayButton" +} + +export enum TaskConfigStatus { + recentlyUsed = "Recently Used Task", + configured = "Configured Task", // The tasks that are configured in tasks.json file. + detected = "Detected Task" // The tasks that are available based on detected compilers. } export interface IConfigurationSnippet { @@ -83,7 +96,6 @@ export interface IConfiguration { } abstract class Configuration implements IConfiguration { - public snippetPrefix = "C/C++: "; public executable: string; public pipeProgram: string; @@ -116,7 +128,7 @@ export class MIConfigurations extends Configuration { this.additionalProperties ? `,${os.EOL}\t${indentJsonString(this.additionalProperties)}` : ""]); return { - "label": this.snippetPrefix + name, + "label": configPrefix + name, "description": localize("launch.with", "Launch with {0}.", this.MIMode).replace(/\"/g, "\\\""), "bodyText": body.trim(), "isInitialConfiguration": true, @@ -134,7 +146,7 @@ export class MIConfigurations extends Configuration { this.additionalProperties ? `,${os.EOL}\t${indentJsonString(this.additionalProperties)}` : ""]); return { - "label": this.snippetPrefix + name, + "label": configPrefix + name, "description": localize("attach.with", "Attach with {0}.", this.MIMode).replace(/\"/g, "\\\""), "bodyText": body.trim(), "debuggerType": DebuggerType.cppdbg @@ -156,7 +168,7 @@ export class PipeTransportConfigurations extends Configuration { }`, [this.additionalProperties ? `,${os.EOL}\t${indentJsonString(this.additionalProperties)}` : ""]); return { - "label": this.snippetPrefix + name, + "label": configPrefix + name, "description": localize("pipe.launch.with", "Pipe Launch with {0}.", this.MIMode).replace(/\"/g, "\\\""), "bodyText": body.trim(), "debuggerType": DebuggerType.cppdbg @@ -174,7 +186,7 @@ export class PipeTransportConfigurations extends Configuration { \t"MIMode": "${this.MIMode}"{0} }`, [this.additionalProperties ? `,${os.EOL}\t${indentJsonString(this.additionalProperties)}` : ""]); return { - "label": this.snippetPrefix + name, + "label": configPrefix + name, "description": localize("pipe.attach.with", "Pipe Attach with {0}.", this.MIMode).replace(/\"/g, "\\\""), "bodyText": body.trim(), "debuggerType": DebuggerType.cppdbg @@ -194,7 +206,7 @@ export class WindowsConfigurations extends Configuration { }`; return { - "label": this.snippetPrefix + name, + "label": configPrefix + name, "description": localize("launch.with.vs.debugger", "Launch with the Visual Studio C/C++ debugger.").replace(/\"/g, "\\\""), "bodyText": body.trim(), "isInitialConfiguration": true, @@ -212,7 +224,7 @@ export class WindowsConfigurations extends Configuration { }`; return { - "label": this.snippetPrefix + name, + "label": configPrefix + name, "description": localize("attach.with.vs.debugger", "Attach to a process with the Visual Studio C/C++ debugger.").replace(/\"/g, "\\\""), "bodyText": body.trim(), "debuggerType": DebuggerType.cppvsdbg @@ -235,7 +247,7 @@ export class WSLConfigurations extends Configuration { }`, [this.additionalProperties ? `,${os.EOL}\t${indentJsonString(this.additionalProperties)}` : ""]); return { - "label": this.snippetPrefix + name, + "label": configPrefix + name, "description": localize("launch.bash.windows", "Launch in Bash on Windows using {0}.", this.MIMode).replace(/\"/g, "\\\""), "bodyText": body.trim(), "debuggerType": DebuggerType.cppdbg @@ -252,7 +264,7 @@ export class WSLConfigurations extends Configuration { }`, [this.additionalProperties ? `,${os.EOL}\t${indentJsonString(this.additionalProperties)}` : ""]); return { - "label": this.snippetPrefix + name, + "label": configPrefix + name, "description": localize("remote.attach.bash.windows", "Attach to a remote process running in Bash on Windows using {0}.", this.MIMode).replace(/\"/g, "\\\""), "bodyText": body.trim(), "debuggerType": DebuggerType.cppdbg diff --git a/Extension/src/Debugger/debugAdapterDescriptorFactory.ts b/Extension/src/Debugger/debugAdapterDescriptorFactory.ts index 539d3d349f..4c7647f380 100644 --- a/Extension/src/Debugger/debugAdapterDescriptorFactory.ts +++ b/Extension/src/Debugger/debugAdapterDescriptorFactory.ts @@ -26,8 +26,6 @@ abstract class AbstractDebugAdapterDescriptorFactory implements vscode.DebugAdap } export class CppdbgDebugAdapterDescriptorFactory extends AbstractDebugAdapterDescriptorFactory { - public static DEBUG_TYPE: string = "cppdbg"; - constructor(context: vscode.ExtensionContext) { super(context); } @@ -42,8 +40,6 @@ export class CppdbgDebugAdapterDescriptorFactory extends AbstractDebugAdapterDes } export class CppvsdbgDebugAdapterDescriptorFactory extends AbstractDebugAdapterDescriptorFactory { - public static DEBUG_TYPE: string = "cppvsdbg"; - constructor(context: vscode.ExtensionContext) { super(context); } diff --git a/Extension/src/Debugger/extension.ts b/Extension/src/Debugger/extension.ts index bc3d2ab225..a71185f76a 100644 --- a/Extension/src/Debugger/extension.ts +++ b/Extension/src/Debugger/extension.ts @@ -7,24 +7,14 @@ import * as vscode from 'vscode'; import * as os from 'os'; import { AttachPicker, RemoteAttachPicker, AttachItemsProvider } from './attachToProcess'; import { NativeAttachItemsProviderFactory } from './nativeAttach'; -import { QuickPickConfigurationProvider, ConfigurationAssetProviderFactory, CppVsDbgConfigurationProvider, CppDbgConfigurationProvider, ConfigurationSnippetProvider, IConfigurationAssetProvider } from './configurationProvider'; +import { DebugConfigurationProvider, ConfigurationAssetProviderFactory, ConfigurationSnippetProvider, IConfigurationAssetProvider } from './configurationProvider'; import { CppdbgDebugAdapterDescriptorFactory, CppvsdbgDebugAdapterDescriptorFactory } from './debugAdapterDescriptorFactory'; -import * as util from '../common'; -import * as Telemetry from '../telemetry'; -import * as nls from 'vscode-nls'; -import { cppBuildTaskProvider } from '../LanguageServer/extension'; - -nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })(); -const localize: nls.LocalizeFunc = nls.loadMessageBundle(); +import { DebuggerType } from './configurations'; // The extension deactivate method is asynchronous, so we handle the disposables ourselves instead of using extensonContext.subscriptions. const disposables: vscode.Disposable[] = []; -export function buildAndDebugActiveFileStr(): string { - return ` - ${localize("build.and.debug.active.file", 'Build and debug active file')}`; -} - -export function initialize(context: vscode.ExtensionContext): void { +export async function initialize(context: vscode.ExtensionContext): Promise { // Activate Process Picker Commands const attachItemsProvider: AttachItemsProvider = NativeAttachItemsProviderFactory.Get(); const attacher: AttachPicker = new AttachPicker(attachItemsProvider); @@ -33,102 +23,24 @@ export function initialize(context: vscode.ExtensionContext): void { disposables.push(vscode.commands.registerCommand('extension.pickRemoteNativeProcess', (any) => remoteAttacher.ShowAttachEntries(any))); // Activate ConfigurationProvider - const configurationProvider: IConfigurationAssetProvider = ConfigurationAssetProviderFactory.getConfigurationProvider(); - // On non-windows platforms, the cppvsdbg debugger will not be registered for initial configurations. - // This will cause it to not show up on the dropdown list. - let vsdbgProvider: CppVsDbgConfigurationProvider | null = null; + const assetProvider: IConfigurationAssetProvider = ConfigurationAssetProviderFactory.getConfigurationProvider(); + + // Register DebugConfigurationProviders for "Run and Debug" in Debug Panel. + // On windows platforms, the cppvsdbg debugger will also be registered for initial configurations. + let cppVsDebugProvider: DebugConfigurationProvider | null = null; if (os.platform() === 'win32') { - vsdbgProvider = new CppVsDbgConfigurationProvider(configurationProvider); - disposables.push(vscode.debug.registerDebugConfigurationProvider('cppvsdbg', new QuickPickConfigurationProvider(vsdbgProvider))); + cppVsDebugProvider = new DebugConfigurationProvider(assetProvider, DebuggerType.cppvsdbg); + disposables.push(vscode.debug.registerDebugConfigurationProvider(DebuggerType.cppvsdbg, cppVsDebugProvider, vscode.DebugConfigurationProviderTriggerKind.Dynamic)); } - const provider: CppDbgConfigurationProvider = new CppDbgConfigurationProvider(configurationProvider); - disposables.push(vscode.debug.registerDebugConfigurationProvider('cppdbg', new QuickPickConfigurationProvider(provider))); - - disposables.push(vscode.commands.registerTextEditorCommand("C_Cpp.BuildAndDebugActiveFile", async (textEditor: vscode.TextEditor, edit: vscode.TextEditorEdit, ...args: any[]) => { - const folder: vscode.WorkspaceFolder | undefined = vscode.workspace.getWorkspaceFolder(textEditor.document.uri); - if (!folder) { - // Not enabled because we do not react to single-file mode correctly yet. - // We get an ENOENT when the user's c_cpp_properties.json is attempted to be parsed. - // The DefaultClient will also have its configuration accessed, but since it doesn't exist it errors out. - vscode.window.showErrorMessage(localize("single_file_mode_not_available", "This command is not available for single-file mode.")); - return Promise.resolve(); - } - - if (!util.fileIsCOrCppSource(textEditor.document.uri.fsPath)) { - vscode.window.showErrorMessage(localize("cannot.build.non.cpp", 'Cannot build and debug because the active file is not a C or C++ source file.')); - return Promise.resolve(); - } - - const configs: vscode.DebugConfiguration[] = (await provider.provideDebugConfigurations(folder)).filter(config => - config.name.indexOf(buildAndDebugActiveFileStr()) !== -1); - - if (vsdbgProvider) { - const vsdbgConfigs: vscode.DebugConfiguration[] = (await vsdbgProvider.provideDebugConfigurations(folder)).filter(config => - config.name.indexOf(buildAndDebugActiveFileStr()) !== -1); - if (vsdbgConfigs) { - configs.push(...vsdbgConfigs); - } - } - - interface MenuItem extends vscode.QuickPickItem { - configuration: vscode.DebugConfiguration; - } - - const items: MenuItem[] = configs.map(config => ({ label: config.name, configuration: config, description: config.detail })); - - const selection: MenuItem | undefined = await vscode.window.showQuickPick(items, { - placeHolder: (items.length === 0 ? localize("no.compiler.found", "No compiler found") : localize("select.configuration", "Select a configuration")) }); - if (!selection) { - return; // User canceled it. - } - if (selection.label.startsWith("cl.exe")) { - if (!process.env.DevEnvDir || process.env.DevEnvDir.length === 0) { - vscode.window.showErrorMessage(localize("cl.exe.not.available", '{0} build and debug is only usable when VS Code is run from the Developer Command Prompt for VS.', "cl.exe")); - return; - } - } - if (selection.configuration.preLaunchTask) { - if (folder) { - try { - await cppBuildTaskProvider.ensureBuildTaskExists(selection.configuration.preLaunchTask); - Telemetry.logDebuggerEvent("buildAndDebug", { "success": "false" }); - } catch (errJS) { - const e: Error = errJS as Error; - if (e && e.message === util.failedToParseJson) { - vscode.window.showErrorMessage(util.failedToParseJson); - } - return; - } - } else { - return; - // TODO uncomment this when single file mode works correctly. - // const buildTasks: vscode.Task[] = await getBuildTasks(true); - // const task: vscode.Task = buildTasks.find(task => task.name === selection.configuration.preLaunchTask); - // await vscode.tasks.executeTask(task); - // delete selection.configuration.preLaunchTask; - } - } + const cppDebugProvider: DebugConfigurationProvider = new DebugConfigurationProvider(assetProvider, DebuggerType.cppdbg); + disposables.push(vscode.debug.registerDebugConfigurationProvider(DebuggerType.cppdbg, cppDebugProvider, vscode.DebugConfigurationProviderTriggerKind.Dynamic)); - // Attempt to use the user's (possibly) modified configuration before using the generated one. - try { - await cppBuildTaskProvider.ensureDebugConfigExists(selection.configuration.name); - try { - await vscode.debug.startDebugging(folder, selection.configuration.name); - Telemetry.logDebuggerEvent("buildAndDebug", { "success": "true" }); - } catch (e) { - Telemetry.logDebuggerEvent("buildAndDebug", { "success": "false" }); - } - } catch (e) { - try { - await vscode.debug.startDebugging(folder, selection.configuration); - Telemetry.logDebuggerEvent("buildAndDebug", { "success": "true" }); - } catch (e) { - Telemetry.logDebuggerEvent("buildAndDebug", { "success": "false" }); - } - } - })); + // Register DebugConfigurationProviders for "Run and Debug" play button. + const debugProvider: DebugConfigurationProvider = new DebugConfigurationProvider(assetProvider, DebuggerType.all); + disposables.push(vscode.commands.registerTextEditorCommand("C_Cpp.BuildAndDebugFile", async (textEditor: vscode.TextEditor, edit: vscode.TextEditorEdit, ...args: any[]) => { await debugProvider.buildAndDebug(textEditor); })); + disposables.push(vscode.commands.registerTextEditorCommand("C_Cpp.BuildAndRunFile", async (textEditor: vscode.TextEditor, edit: vscode.TextEditorEdit, ...args: any[]) => { await debugProvider.buildAndRun(textEditor); })); - configurationProvider.getConfigurationSnippets(); + assetProvider.getConfigurationSnippets(); const launchJsonDocumentSelector: vscode.DocumentSelector = [{ scheme: 'file', @@ -137,11 +49,11 @@ export function initialize(context: vscode.ExtensionContext): void { }]; // ConfigurationSnippetProvider needs to be initiallized after configurationProvider calls getConfigurationSnippets. - disposables.push(vscode.languages.registerCompletionItemProvider(launchJsonDocumentSelector, new ConfigurationSnippetProvider(configurationProvider))); + disposables.push(vscode.languages.registerCompletionItemProvider(launchJsonDocumentSelector, new ConfigurationSnippetProvider(assetProvider))); // Register Debug Adapters - disposables.push(vscode.debug.registerDebugAdapterDescriptorFactory(CppvsdbgDebugAdapterDescriptorFactory.DEBUG_TYPE, new CppvsdbgDebugAdapterDescriptorFactory(context))); - disposables.push(vscode.debug.registerDebugAdapterDescriptorFactory(CppdbgDebugAdapterDescriptorFactory.DEBUG_TYPE, new CppdbgDebugAdapterDescriptorFactory(context))); + disposables.push(vscode.debug.registerDebugAdapterDescriptorFactory(DebuggerType.cppvsdbg , new CppvsdbgDebugAdapterDescriptorFactory(context))); + disposables.push(vscode.debug.registerDebugAdapterDescriptorFactory(DebuggerType.cppdbg, new CppdbgDebugAdapterDescriptorFactory(context))); vscode.Disposable.from(...disposables); } diff --git a/Extension/src/LanguageServer/Providers/documentFormattingEditProvider.ts b/Extension/src/LanguageServer/Providers/documentFormattingEditProvider.ts index afc500bb18..c35127c204 100644 --- a/Extension/src/LanguageServer/Providers/documentFormattingEditProvider.ts +++ b/Extension/src/LanguageServer/Providers/documentFormattingEditProvider.ts @@ -36,6 +36,10 @@ export class DocumentFormattingEditProvider implements vscode.DocumentFormatting } } }; + // We do not currently pass the CancellationToken to sendRequest + // because there is not currently cancellation logic for formatting + // in the native process. Formatting is currently done directly in + // message handling thread. const textEdits: any = await this.client.languageClient.sendRequest(FormatDocumentRequest, params); const results: vscode.TextEdit[] = []; textEdits.forEach((textEdit: any) => { diff --git a/Extension/src/LanguageServer/Providers/documentRangeFormattingEditProvider.ts b/Extension/src/LanguageServer/Providers/documentRangeFormattingEditProvider.ts index 9f8aa485c6..e25a95f9e6 100644 --- a/Extension/src/LanguageServer/Providers/documentRangeFormattingEditProvider.ts +++ b/Extension/src/LanguageServer/Providers/documentRangeFormattingEditProvider.ts @@ -36,6 +36,10 @@ export class DocumentRangeFormattingEditProvider implements vscode.DocumentRange } } }; + // We do not currently pass the CancellationToken to sendRequest + // because there is not currently cancellation logic for formatting + // in the native process. Formatting is currently done directly in + // message handling thread. const textEdits: any = await this.client.languageClient.sendRequest(FormatRangeRequest, params); const result: vscode.TextEdit[] = []; textEdits.forEach((textEdit: any) => { diff --git a/Extension/src/LanguageServer/Providers/documentSymbolProvider.ts b/Extension/src/LanguageServer/Providers/documentSymbolProvider.ts index babf6a5a00..a10938ae80 100644 --- a/Extension/src/LanguageServer/Providers/documentSymbolProvider.ts +++ b/Extension/src/LanguageServer/Providers/documentSymbolProvider.ts @@ -56,7 +56,7 @@ export class DocumentSymbolProvider implements vscode.DocumentSymbolProvider { } return documentSymbols; } - public async provideDocumentSymbols(document: vscode.TextDocument): Promise { + public async provideDocumentSymbols(document: vscode.TextDocument, token: vscode.CancellationToken): Promise { if (!this.client.TrackedDocuments.has(document)) { processDelayedDidOpen(document); } @@ -64,7 +64,7 @@ export class DocumentSymbolProvider implements vscode.DocumentSymbolProvider { const params: GetDocumentSymbolRequestParams = { uri: document.uri.toString() }; - const symbols: LocalizeDocumentSymbol[] = await this.client.languageClient.sendRequest(GetDocumentSymbolRequest, params); + const symbols: LocalizeDocumentSymbol[] = await this.client.languageClient.sendRequest(GetDocumentSymbolRequest, params, token); const resultSymbols: vscode.DocumentSymbol[] = this.getChildrenSymbols(symbols); return resultSymbols; }); diff --git a/Extension/src/LanguageServer/Providers/foldingRangeProvider.ts b/Extension/src/LanguageServer/Providers/foldingRangeProvider.ts index 17d7c0850a..95418248f9 100644 --- a/Extension/src/LanguageServer/Providers/foldingRangeProvider.ts +++ b/Extension/src/LanguageServer/Providers/foldingRangeProvider.ts @@ -15,14 +15,11 @@ export class FoldingRangeProvider implements vscode.FoldingRangeProvider { } async provideFoldingRanges(document: vscode.TextDocument, context: vscode.FoldingContext, token: vscode.CancellationToken): Promise { - const id: number = ++DefaultClient.abortRequestId; const params: GetFoldingRangesParams = { - id: id, uri: document.uri.toString() }; await this.client.awaitUntilLanguageClientReady(); - token.onCancellationRequested(e => this.client.abortRequest(id)); - const ranges: GetFoldingRangesResult = await this.client.languageClient.sendRequest(GetFoldingRangesRequest, params); + const ranges: GetFoldingRangesResult = await this.client.languageClient.sendRequest(GetFoldingRangesRequest, params, token); if (ranges.canceled) { return undefined; } diff --git a/Extension/src/LanguageServer/Providers/onTypeFormattingEditProvider.ts b/Extension/src/LanguageServer/Providers/onTypeFormattingEditProvider.ts index 7f453e5772..225928f413 100644 --- a/Extension/src/LanguageServer/Providers/onTypeFormattingEditProvider.ts +++ b/Extension/src/LanguageServer/Providers/onTypeFormattingEditProvider.ts @@ -36,6 +36,10 @@ export class OnTypeFormattingEditProvider implements vscode.OnTypeFormattingEdit } } }; + // We do not currently pass the CancellationToken to sendRequest + // because there is not currently cancellation logic for formatting + // in the native process. Formatting is currently done directly in + // message handling thread. const textEdits: any[] = await this.client.languageClient.sendRequest(FormatOnTypeRequest, params); const result: vscode.TextEdit[] = []; textEdits.forEach((textEdit) => { diff --git a/Extension/src/LanguageServer/Providers/semanticTokensProvider.ts b/Extension/src/LanguageServer/Providers/semanticTokensProvider.ts index b964078003..4e2669717b 100644 --- a/Extension/src/LanguageServer/Providers/semanticTokensProvider.ts +++ b/Extension/src/LanguageServer/Providers/semanticTokensProvider.ts @@ -19,18 +19,15 @@ export class SemanticTokensProvider implements vscode.DocumentSemanticTokensProv public async provideDocumentSemanticTokens(document: vscode.TextDocument, token: vscode.CancellationToken): Promise { await this.client.awaitUntilLanguageClientReady(); const uriString: string = document.uri.toString(); - // First check the token cache to see if we already have results for that file and version + // First check the semantic token cache to see if we already have results for that file and version const cache: [number, vscode.SemanticTokens] | undefined = this.tokenCaches.get(uriString); if (cache && cache[0] === document.version) { return cache[1]; } else { - token.onCancellationRequested(_e => this.client.abortRequest(id)); - const id: number = ++DefaultClient.abortRequestId; const params: GetSemanticTokensParams = { - id: id, uri: uriString }; - const tokensResult: GetSemanticTokensResult = await this.client.languageClient.sendRequest(GetSemanticTokensRequest, params); + const tokensResult: GetSemanticTokensResult = await this.client.languageClient.sendRequest(GetSemanticTokensRequest, params, token); if (tokensResult.canceled) { throw new vscode.CancellationError(); } else { @@ -38,8 +35,8 @@ export class SemanticTokensProvider implements vscode.DocumentSemanticTokensProv throw new vscode.CancellationError(); } else { const builder: vscode.SemanticTokensBuilder = new vscode.SemanticTokensBuilder(this.client.semanticTokensLegend); - tokensResult.tokens.forEach((token) => { - builder.push(token.line, token.character, token.length, token.type, token.modifiers); + tokensResult.tokens.forEach((semanticToken) => { + builder.push(semanticToken.line, semanticToken.character, semanticToken.length, semanticToken.type, semanticToken.modifiers); }); const tokens: vscode.SemanticTokens = builder.build(); this.tokenCaches.set(uriString, [tokensResult.fileVersion, tokens]); diff --git a/Extension/src/LanguageServer/Providers/workspaceSymbolProvider.ts b/Extension/src/LanguageServer/Providers/workspaceSymbolProvider.ts index 726cd11fb6..9270955226 100644 --- a/Extension/src/LanguageServer/Providers/workspaceSymbolProvider.ts +++ b/Extension/src/LanguageServer/Providers/workspaceSymbolProvider.ts @@ -17,7 +17,7 @@ export class WorkspaceSymbolProvider implements vscode.WorkspaceSymbolProvider { query: query }; - const symbols: LocalizeSymbolInformation[] = await this.client.languageClient.sendRequest(GetSymbolInfoRequest, params); + const symbols: LocalizeSymbolInformation[] = await this.client.languageClient.sendRequest(GetSymbolInfoRequest, params, token); const resultSymbols: vscode.SymbolInformation[] = []; // Convert to vscode.Command array diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index 104babd087..367dde96e3 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -33,7 +33,7 @@ import { createProtocolFilter } from './protocolFilter'; import { DataBinding } from './dataBinding'; import minimatch = require("minimatch"); import * as logger from '../logger'; -import { updateLanguageConfigurations, registerCommands } from './extension'; +import { updateLanguageConfigurations, CppSourceStr } from './extension'; import { SettingsTracker, getTracker } from './settingsTracker'; import { getTestHook, TestHook } from '../testHook'; import { getCustomConfigProviders, CustomConfigurationProvider1, isSameProviderExtensionId } from '../LanguageServer/customProviders'; @@ -150,7 +150,7 @@ function showWarning(params: ShowWarningParams): void { function publishDiagnostics(params: PublishDiagnosticsParams): void { if (!diagnosticsCollectionIntelliSense) { - diagnosticsCollectionIntelliSense = vscode.languages.createDiagnosticCollection("C/C++"); + diagnosticsCollectionIntelliSense = vscode.languages.createDiagnosticCollection(CppSourceStr); } // Convert from our Diagnostic objects to vscode Diagnostic objects @@ -160,7 +160,7 @@ function publishDiagnostics(params: PublishDiagnosticsParams): void { const r: vscode.Range = new vscode.Range(d.range.start.line, d.range.start.character, d.range.end.line, d.range.end.character); const diagnostic: vscode.Diagnostic = new vscode.Diagnostic(r, message, d.severity); diagnostic.code = d.code; - diagnostic.source = "C/C++"; + diagnostic.source = CppSourceStr; if (d.relatedInformation) { diagnostic.relatedInformation = []; for (const info of d.relatedInformation) { @@ -201,7 +201,7 @@ function publishCodeAnalysisDiagnostics(params: PublishDiagnosticsParams): void } else { diagnostic.code = d.code; } - diagnostic.source = "C/C++"; + diagnostic.source = CppSourceStr; if (d.relatedInformation) { diagnostic.relatedInformation = []; for (const info of d.relatedInformation) { @@ -295,6 +295,7 @@ interface CompileCommandsPaths extends WorkspaceFolderParams { interface QueryTranslationUnitSourceParams extends WorkspaceFolderParams { uri: string; + ignoreExisting: boolean; } interface QueryTranslationUnitSourceResult { @@ -416,7 +417,6 @@ interface TextEdit { export interface GetFoldingRangesParams { uri: string; - id: number; } export enum FoldingRangeKind { @@ -436,13 +436,8 @@ export interface GetFoldingRangesResult { ranges: CppFoldingRange[]; } -interface AbortRequestParams { - id: number; -} - export interface GetSemanticTokensParams { uri: string; - id: number; } interface SemanticToken { @@ -572,7 +567,6 @@ const FinishedRequestCustomConfig: NotificationType = new Notifica const FindAllReferencesNotification: NotificationType = new NotificationType('cpptools/findAllReferences'); const RenameNotification: NotificationType = new NotificationType('cpptools/rename'); const DidChangeSettingsNotification: NotificationType = new NotificationType('cpptools/didChangeSettings'); -const AbortRequestNotification: NotificationType = new NotificationType('cpptools/abortRequest'); const CodeAnalysisNotification: NotificationType = new NotificationType('cpptools/runCodeAnalysis'); // Notifications from the server @@ -696,6 +690,7 @@ export interface Client { RootPath: string; RootRealPath: string; RootUri?: vscode.Uri; + RootFolder?: vscode.WorkspaceFolder; Name: string; TrackedDocuments: Set; onDidChangeSettings(event: vscode.ConfigurationChangeEvent, isFirstClient: boolean): { [key: string]: string }; @@ -706,7 +701,7 @@ export interface Client { onRegisterCustomConfigurationProvider(provider: CustomConfigurationProvider1): Thenable; updateCustomConfigurations(requestingProvider?: CustomConfigurationProvider1): Thenable; updateCustomBrowseConfiguration(requestingProvider?: CustomConfigurationProvider1): Thenable; - provideCustomConfiguration(docUri: vscode.Uri, requestFile?: string): Promise; + provideCustomConfiguration(docUri: vscode.Uri, requestFile?: string, replaceExisting?: boolean): Promise; logDiagnostics(): Promise; rescanFolder(): Promise; toggleReferenceResultsView(): void; @@ -752,6 +747,7 @@ export interface Client { onInterval(): void; dispose(): void; addFileAssociations(fileAssociations: string, languageId: string): void; + sendAllSettings(): void; sendDidChangeSettings(settings: any): void; } @@ -791,8 +787,6 @@ export class DefaultClient implements Client { ]; public semanticTokensLegend: vscode.SemanticTokensLegend | undefined; - public static abortRequestId: number = 0; - public static referencesParams: RenameParams | FindAllReferencesParams | undefined; public static referencesRequestPending: boolean = false; public static referencesPendingCancellations: ReferencesCancellationState[] = []; @@ -954,7 +948,7 @@ export class DefaultClient implements Client { uri: document.uri.toString() }; - const commands: CodeActionCommand[] = await this.client.languageClient.sendRequest(GetCodeActionsRequest, params); + const commands: CodeActionCommand[] = await this.client.languageClient.sendRequest(GetCodeActionsRequest, params, token); const resultCodeActions: vscode.CodeAction[] = []; // Convert to vscode.CodeAction array @@ -1013,10 +1007,8 @@ export class DefaultClient implements Client { compilerDefaults = inputCompilerDefaults; this.configuration.CompilerDefaults = compilerDefaults; - // Only register file watchers, providers, and the real commands after the extension has finished initializing, + // Only register file watchers and providers after the extension has finished initializing, // e.g. prevents empty c_cpp_properties.json from generation. - registerCommands(); - this.registerFileWatcher(); this.disposables.push(vscode.languages.registerRenameProvider(this.documentSelector, new RenameProvider(this))); @@ -1084,8 +1076,10 @@ export class DefaultClient implements Client { } const serverName: string = this.getName(this.rootFolder); const serverOptions: ServerOptions = { - run: { command: serverModule }, - debug: { command: serverModule, args: [serverName] } + // Running detached would be preferred; however, that causes cpptools-srv to create a console window + // on Windows and that can't seem to be suppressed without suppressing assertion dialog boxes. + run: { command: serverModule, options: { detached: false } }, + debug: { command: serverModule, args: [serverName], options: { detached: false } } }; // Get all the per-workspace settings. @@ -1491,15 +1485,15 @@ export class DefaultClient implements Client { languageClientCrashedNeedsRestart = true; telemetry.logLanguageServerEvent("languageClientCrash"); if (languageClientCrashTimes.length < 5) { - allClients.forEach(client => { allClients.replace(client, true); }); + allClients.recreateClients(); } else { const elapsed: number = languageClientCrashTimes[languageClientCrashTimes.length - 1] - languageClientCrashTimes[0]; if (elapsed <= 3 * 60 * 1000) { vscode.window.showErrorMessage(localize('server.crashed2', "The language server crashed 5 times in the last 3 minutes. It will not be restarted.")); - allClients.forEach(client => { allClients.replace(client, false); }); + allClients.recreateClients(true); } else { languageClientCrashTimes.shift(); - allClients.forEach(client => { allClients.replace(client, true); }); + allClients.recreateClients(); } } return CloseAction.DoNotRestart; @@ -1718,6 +1712,9 @@ export class DefaultClient implements Client { if (document.uri.scheme === "file") { const uri: string = document.uri.toString(); openFileVersions.set(uri, document.version); + vscode.commands.executeCommand('setContext', 'BuildAndDebug.isSourceFile', util.isCppOrCFile(document.uri)); + } else { + vscode.commands.executeCommand('setContext', 'BuildAndDebug.isSourceFile', false); } } @@ -1810,13 +1807,16 @@ export class DefaultClient implements Client { // If we are being called by a configuration provider other than the current one, ignore it. return; } + if (!currentProvider.isReady) { + return; + } this.clearCustomConfigurations(); if (diagnosticsCollectionCodeAnalysis) { diagnosticsCollectionCodeAnalysis.clear(); } this.trackedDocuments.forEach(document => { - this.provideCustomConfiguration(document.uri, undefined); + this.provideCustomConfiguration(document.uri, undefined, true); }); }); } @@ -1828,7 +1828,7 @@ export class DefaultClient implements Client { } console.log("updateCustomBrowseConfiguration"); const currentProvider: CustomConfigurationProvider1 | undefined = getCustomConfigProviders().get(this.configurationProvider); - if (!currentProvider || (requestingProvider && requestingProvider.extensionId !== currentProvider.extensionId)) { + if (!currentProvider || !currentProvider.isReady || (requestingProvider && requestingProvider.extensionId !== currentProvider.extensionId)) { return; } @@ -1945,7 +1945,7 @@ export class DefaultClient implements Client { await this.notifyWhenLanguageClientReady(() => this.languageClient.sendNotification(RescanFolderNotification)); } - public async provideCustomConfiguration(docUri: vscode.Uri, requestFile?: string): Promise { + public async provideCustomConfiguration(docUri: vscode.Uri, requestFile?: string, replaceExisting?: boolean): Promise { const onFinished: () => void = () => { if (requestFile) { this.languageClient.sendNotification(FinishedRequestCustomConfig, requestFile); @@ -1957,14 +1957,10 @@ export class DefaultClient implements Client { return; } const provider: CustomConfigurationProvider1 | undefined = getCustomConfigProviders().get(providerId); - if (!provider) { + if (!provider || !provider.isReady) { onFinished(); return; } - if (!provider.isReady) { - onFinished(); - throw new Error(`${this.configurationProvider} is not ready`); - } return this.queueBlockingTask(async () => { const tokenSource: vscode.CancellationTokenSource = new vscode.CancellationTokenSource(); console.log("provideCustomConfiguration"); @@ -1973,6 +1969,7 @@ export class DefaultClient implements Client { const params: QueryTranslationUnitSourceParams = { uri: docUri.toString(), + ignoreExisting: !!replaceExisting, workspaceFolderUri: this.RootPath }; const response: QueryTranslationUnitSourceResult = await this.languageClient.sendRequest(QueryTranslationUnitSourceRequest, params); @@ -1985,58 +1982,56 @@ export class DefaultClient implements Client { // Need to loop through candidates, to see if we can get a custom configuration from any of them. // Wrap all lookups in a single task, so we can apply a timeout to the entire duration. const provideConfigurationAsync: () => Thenable = async () => { - if (provider) { - for (let i: number = 0; i < response.candidates.length; ++i) { - try { - const candidate: string = response.candidates[i]; - const tuUri: vscode.Uri = vscode.Uri.parse(candidate); - if (await provider.canProvideConfiguration(tuUri, tokenSource.token)) { - const configs: util.Mutable[] = await provider.provideConfigurations([tuUri], tokenSource.token); - if (configs && configs.length > 0 && configs[0]) { - const fileConfiguration: configs.Configuration | undefined = this.configuration.CurrentConfiguration; - if (fileConfiguration?.mergeConfigurations) { - configs.forEach(config => { - if (fileConfiguration.includePath) { - fileConfiguration.includePath.forEach(p => { - if (!config.configuration.includePath.includes(p)) { - config.configuration.includePath.push(p); - } - }); - } + for (let i: number = 0; i < response.candidates.length; ++i) { + try { + const candidate: string = response.candidates[i]; + const tuUri: vscode.Uri = vscode.Uri.parse(candidate); + if (await provider.canProvideConfiguration(tuUri, tokenSource.token)) { + const configs: util.Mutable[] = await provider.provideConfigurations([tuUri], tokenSource.token); + if (configs && configs.length > 0 && configs[0]) { + const fileConfiguration: configs.Configuration | undefined = this.configuration.CurrentConfiguration; + if (fileConfiguration?.mergeConfigurations) { + configs.forEach(config => { + if (fileConfiguration.includePath) { + fileConfiguration.includePath.forEach(p => { + if (!config.configuration.includePath.includes(p)) { + config.configuration.includePath.push(p); + } + }); + } - if (fileConfiguration.defines) { - fileConfiguration.defines.forEach(d => { - if (!config.configuration.defines.includes(d)) { - config.configuration.defines.push(d); - } - }); - } - - if (!config.configuration.forcedInclude) { - config.configuration.forcedInclude = []; - } - - if (fileConfiguration.forcedInclude) { - fileConfiguration.forcedInclude.forEach(i => { - if (config.configuration.forcedInclude) { - if (!config.configuration.forcedInclude.includes(i)) { - config.configuration.forcedInclude.push(i); - } - } - }); - } - }); - } + if (fileConfiguration.defines) { + fileConfiguration.defines.forEach(d => { + if (!config.configuration.defines.includes(d)) { + config.configuration.defines.push(d); + } + }); + } + + if (!config.configuration.forcedInclude) { + config.configuration.forcedInclude = []; + } - return configs as SourceFileConfigurationItem[]; + if (fileConfiguration.forcedInclude) { + fileConfiguration.forcedInclude.forEach(i => { + if (config.configuration.forcedInclude) { + if (!config.configuration.forcedInclude.includes(i)) { + config.configuration.forcedInclude.push(i); + } + } + }); + } + }); } + + return configs as SourceFileConfigurationItem[]; } - if (tokenSource.token.isCancellationRequested) { - return null; - } - } catch (err) { - console.warn("Caught exception request configuration"); } + if (tokenSource.token.isCancellationRequested) { + return null; + } + } catch (err) { + console.warn("Caught exception request configuration"); } } }; @@ -2085,7 +2080,7 @@ export class DefaultClient implements Client { private isExternalHeader(uri: vscode.Uri): boolean { const rootUri: vscode.Uri | undefined = this.RootUri; - return !rootUri || (util.isHeader(uri) && !uri.toString().startsWith(rootUri.toString())); + return !rootUri || (util.isHeaderFile(uri) && !uri.toString().startsWith(rootUri.toString())); } public getCurrentConfigName(): Thenable { @@ -2654,6 +2649,7 @@ export class DefaultClient implements Client { && (editor.document.languageId === "c" || editor.document.languageId === "cpp" || editor.document.languageId === "cuda-cpp")) { + vscode.commands.executeCommand('setContext', 'BuildAndDebug.isSourceFile', util.isCppOrCFile(editor.document.uri)); // If using vcFormat, check for a ".editorconfig" file, and apply those text options to the active document. const settings: CppSettings = new CppSettings(this.RootUri); if (settings.useVcFormat(editor.document)) { @@ -2674,6 +2670,8 @@ export class DefaultClient implements Client { }); } } + } else { + vscode.commands.executeCommand('setContext', 'BuildAndDebug.isSourceFile', false); } } @@ -3071,6 +3069,7 @@ export class DefaultClient implements Client { next: next }; + await this.awaitUntilLanguageClientReady(); const response: Position | undefined = await this.languageClient.sendRequest(GoToDirectiveInGroupRequest, params); if (response) { const p: vscode.Position = new vscode.Position(response.line, response.character); @@ -3232,13 +3231,6 @@ export class DefaultClient implements Client { public setReferencesCommandMode(mode: refs.ReferencesCommandMode): void { this.model.referencesCommandMode.Value = mode; } - - public abortRequest(id: number): void { - const params: AbortRequestParams = { - id: id - }; - languageClient.sendNotification(AbortRequestNotification, params); - } } function getLanguageServerFileName(): string { @@ -3283,7 +3275,7 @@ class NullClient implements Client { onRegisterCustomConfigurationProvider(provider: CustomConfigurationProvider1): Thenable { return Promise.resolve(); } updateCustomConfigurations(requestingProvider?: CustomConfigurationProvider1): Thenable { return Promise.resolve(); } updateCustomBrowseConfiguration(requestingProvider?: CustomConfigurationProvider1): Thenable { return Promise.resolve(); } - provideCustomConfiguration(docUri: vscode.Uri, requestFile?: string): Promise { return Promise.resolve(); } + provideCustomConfiguration(docUri: vscode.Uri, requestFile?: string, replaceExisting?: boolean): Promise { return Promise.resolve(); } logDiagnostics(): Promise { return Promise.resolve(); } rescanFolder(): Promise { return Promise.resolve(); } toggleReferenceResultsView(): void { } @@ -3332,5 +3324,6 @@ class NullClient implements Client { this.stringEvent.dispose(); } addFileAssociations(fileAssociations: string, languageId: string): void { } + sendAllSettings(): void { } sendDidChangeSettings(settings: any): void { } } diff --git a/Extension/src/LanguageServer/clientCollection.ts b/Extension/src/LanguageServer/clientCollection.ts index c904e331f1..a21f086aef 100644 --- a/Extension/src/LanguageServer/clientCollection.ts +++ b/Extension/src/LanguageServer/clientCollection.ts @@ -25,6 +25,9 @@ export class ClientCollection { private activeDocument?: vscode.TextDocument; public timeTelemetryCollector: TimeTelemetryCollector = new TimeTelemetryCollector(); + // This is a one-time switch to a mode that suppresses launching of the cpptools client process. + private useFailsafeMode: boolean = false; + public get ActiveClient(): cpptools.Client { return this.activeClient; } public get Names(): ClientKey[] { const result: ClientKey[] = []; @@ -104,47 +107,51 @@ export class ClientCollection { /** * creates a new client to replace one that crashed. */ - public replace(client: cpptools.Client, transferFileOwnership: boolean): cpptools.Client | undefined { - let key: string | undefined; - for (const pair of this.languageClients) { - if (pair[1] === client) { - key = pair[0]; - break; - } + public async recreateClients(switchToFailsafeMode?: boolean): Promise { + + // Swap out the map, so we are not changing it while iterating over it. + const oldLanguageClients: Map = this.languageClients; + this.languageClients = new Map(); + + if (switchToFailsafeMode) { + this.useFailsafeMode = true; } - if (key) { - this.languageClients.delete(key); + for (const pair of oldLanguageClients) { + const client: cpptools.Client = pair[1]; - if (transferFileOwnership) { - // This will create a new Client for the workspace since we removed the old one from this.languageClients. - client.TrackedDocuments.forEach(document => this.transferOwnership(document, client)); - client.TrackedDocuments.clear(); - } else { - // Create an empty client that will continue to "own" files matching this workspace, but ignore all messages from VS Code. - this.languageClients.set(key, cpptools.createNullClient()); + const newClient: cpptools.Client = this.createClient(client.RootFolder, true); + client.TrackedDocuments.forEach(document => this.transferOwnership(document, client)); + + if (this.activeClient === client) { + // It cannot be undefined. If there is an active document, we activate it later. + this.activeClient = newClient; } - if (this.activeClient === client && this.activeDocument) { - this.activeClient = this.getClientFor(this.activeDocument.uri); - this.activeClient.activeDocumentChanged(this.activeDocument); + if (this.defaultClient === client) { + this.defaultClient = newClient; } client.dispose(); - return this.languageClients.get(key); - } else { - console.assert(key, "unable to locate language client"); - return undefined; + } + + if (this.activeDocument) { + this.activeClient = this.getClientFor(this.activeDocument.uri); + await this.activeClient.activeDocumentChanged(this.activeDocument); + this.activeClient.activate(); } } - private onDidChangeWorkspaceFolders(e?: vscode.WorkspaceFoldersChangeEvent): void { + private async onDidChangeWorkspaceFolders(e?: vscode.WorkspaceFoldersChangeEvent): Promise { const folderCount: number = vscode.workspace.workspaceFolders ? vscode.workspace.workspaceFolders.length : 0; if (folderCount > 1) { telemetry.logLanguageServerEvent("workspaceFoldersChange", { "count": folderCount.toString() }); } if (e !== undefined) { + let oldDefaultClient: cpptools.Client | undefined; + let needNewDefaultClient: boolean = false; + e.removed.forEach(folder => { const path: string = util.asFolder(folder.uri); const client: cpptools.Client | undefined = this.languageClients.get(path); @@ -154,30 +161,90 @@ export class ClientCollection { // Transfer ownership of the client's documents to another client. // (this includes calling textDocument/didOpen on the new client so that the server knows it's open too) client.TrackedDocuments.forEach(document => this.transferOwnership(document, client)); - client.TrackedDocuments.clear(); - - if (this.activeClient === client && this.activeDocument) { - // Need to make a different client the active client. - this.activeClient = this.getClientFor(this.activeDocument.uri); - this.activeClient.activeDocumentChanged(this.activeDocument); - // may not need this, the navigation UI should not have changed. - // this.activeClient.selectionChanged(Range.create(vscode.window.activeTextEditor.selection.start, vscode.window.activeTextEditor.selection.end); + + if (this.activeClient === client) { + this.activeClient.deactivate(); } - client.dispose(); + // Defer selecting a new default client until all adds and removes have been processed. + if (this.defaultClient === client) { + oldDefaultClient = client; + } else { + client.dispose(); + } } }); + e.added.forEach(folder => { const path: string = util.asFolder(folder.uri); const client: cpptools.Client | undefined = this.languageClients.get(path); if (!client) { - const newClient: cpptools.Client = cpptools.createClient(this, folder); - this.languageClients.set(path, newClient); - newClient.deactivate(); // e.g. prevent the current config from switching. - const defaultClient: cpptools.DefaultClient = newClient; - defaultClient.sendAllSettings(); + this.createClient(folder, true); } }); + + // Note: VS Code currently reloads the extension whenever the primary (first) workspace folder is added or removed. + // So the following handling of changes to defaultClient are likely unnecessary, unless the behavior of + // VS Code changes. The handling of changes to activeClient are still needed. + + if (oldDefaultClient) { + const uri: vscode.Uri | undefined = oldDefaultClient.RootUri; + // uri will be set. + if (uri) { + // Check if there is now another more appropriate client to use. + this.defaultClient = this.getClientFor(uri); + needNewDefaultClient = this.defaultClient === oldDefaultClient; + } + oldDefaultClient.dispose(); + } else { + const defaultDefaultClient: cpptools.Client | undefined = this.languageClients.get(defaultClientKey); + if (defaultDefaultClient) { + // If there is an entry in languageClients for defaultClientKey, we were not previously tracking any workspace folders. + this.languageClients.delete(defaultClientKey); + needNewDefaultClient = true; + if (this.activeClient === this.defaultClient) { + // Redundant deactivation should be OK. + this.activeClient.deactivate(); + } + } + } + + if (needNewDefaultClient) { + // Use the first workspaceFolder, if any. + if (vscode.workspace.workspaceFolders && vscode.workspace.workspaceFolders.length > 0) { + const key: string = util.asFolder(vscode.workspace.workspaceFolders[0].uri); + const client: cpptools.Client | undefined = this.languageClients.get(key); + if (!client) { + // This should not occur. If there is a workspace folder, we should have a client for it by now. + throw new Error("Failed to construct default client"); + } + this.defaultClient = client; + } else { + // The user removed the last workspace folder. Create a new default defaultClient/activeClient + // using the same approach as used in the constructor. + this.defaultClient = cpptools.createClient(this); + this.languageClients.set(defaultClientKey, this.defaultClient); + this.defaultClient.deactivate(); + if (this.activeDocument) { + // Only change activeClient if it would not be changed by the later check. + this.activeClient.deactivate(); + this.activeClient = this.defaultClient; + } + } + } + + // Ensure the best client for the currently active document is activated. + if (this.activeDocument) { + const newActiveClient: cpptools.Client = this.getClientFor(this.activeDocument.uri); + // If a client is newly created here, it will be activated by default. + if (this.activeClient !== newActiveClient) { + // Redundant deactivate should be OK. + this.activeClient.deactivate(); + this.activeClient = newActiveClient; + await this.activeClient.activeDocumentChanged(this.activeDocument); + this.activeClient.activate(); + } + } } } @@ -190,6 +257,10 @@ export class ClientCollection { public getClientFor(uri: vscode.Uri): cpptools.Client { const folder: vscode.WorkspaceFolder | undefined = uri ? vscode.workspace.getWorkspaceFolder(uri) : undefined; + return this.getClientForFolder(folder); + } + + public getClientForFolder(folder?: vscode.WorkspaceFolder): cpptools.Client { if (!folder) { return this.defaultClient; } else { @@ -198,13 +269,20 @@ export class ClientCollection { if (client) { return client; } - const newClient: cpptools.Client = cpptools.createClient(this, folder); - this.languageClients.set(key, newClient); - getCustomConfigProviders().forEach(provider => newClient.onRegisterCustomConfigurationProvider(provider)); - const defaultClient: cpptools.DefaultClient = newClient; - defaultClient.sendAllSettings(); - return newClient; + return this.createClient(folder); + } + } + + public createClient(folder?: vscode.WorkspaceFolder, deactivated?: boolean): cpptools.Client { + const newClient: cpptools.Client = this.useFailsafeMode ? cpptools.createNullClient() : cpptools.createClient(this, folder); + if (deactivated) { + newClient.deactivate(); // e.g. prevent the current config from switching. } + const key: string = folder ? util.asFolder(folder.uri) : defaultClientKey; + this.languageClients.set(key, newClient); + getCustomConfigProviders().forEach(provider => newClient.onRegisterCustomConfigurationProvider(provider)); + newClient.sendAllSettings(); + return newClient; } private onDidCloseTextDocument(document: vscode.TextDocument): void { diff --git a/Extension/src/LanguageServer/configurations.ts b/Extension/src/LanguageServer/configurations.ts index 967ffc353a..90d5f284c3 100644 --- a/Extension/src/LanguageServer/configurations.ts +++ b/Extension/src/LanguageServer/configurations.ts @@ -20,6 +20,7 @@ import * as nls from 'vscode-nls'; import { setTimeout } from 'timers'; import * as which from 'which'; import { WorkspaceBrowseConfiguration } from 'vscode-cpptools'; +import { getOutputChannelLogger } from '../logger'; nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })(); const localize: nls.LocalizeFunc = nls.loadMessageBundle(); @@ -67,6 +68,7 @@ export interface Configuration { includePath?: string[]; macFrameworkPath?: string[]; windowsSdkVersion?: string; + dotConfig?: string; defines?: string[]; intelliSenseMode?: string; intelliSenseModeIsExplicit?: boolean; @@ -86,6 +88,7 @@ export interface ConfigurationErrors { macFrameworkPath?: string; forcedInclude?: string; compileCommands?: string; + dotConfig?: string; browsePath?: string; databaseFilename?: string; } @@ -787,6 +790,23 @@ export class CppProperties { return this.resolveDefaultsDictionary(property, defaultValue, env); } + private getDotconfigDefines(dotConfigPath: string): string[] { + const isWindows: boolean = os.platform() === 'win32'; + + if (dotConfigPath !== undefined) { + const path: string = this.resolvePath(dotConfigPath, isWindows); + try { + const configContent: string[] = fs.readFileSync(path, "utf-8").split("\n"); + return configContent.filter(i => !i.startsWith("#") && i !== ""); + } catch (errJS) { + const err: Error = errJS as Error; + getOutputChannelLogger().appendLine(`Invalid input, cannot resolve .config path: ${err.message}`); + } + } + + return []; + } + private updateServerOnFolderSettingsChange(): void { if (!this.configurationJson) { return; @@ -805,7 +825,15 @@ export class CppProperties { configuration.includePath = includePath.concat(this.nodeAddonIncludes.filter(i => includePath.indexOf(i) < 0)); } configuration.defines = this.updateConfigurationStringArray(configuration.defines, settings.defaultDefines, env); - configuration.macFrameworkPath = this.updateConfigurationPathsArray(configuration.macFrameworkPath, settings.defaultMacFrameworkPath, env); + + // in case we have dotConfig + configuration.dotConfig = this.updateConfigurationString(configuration.dotConfig, settings.defaultDotconfig, env); + if (configuration.dotConfig !== undefined) { + configuration.defines = configuration.defines || []; + configuration.defines = configuration.defines.concat(this.getDotconfigDefines(configuration.dotConfig)); + } + + 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); configuration.compileCommands = this.updateConfigurationString(configuration.compileCommands, settings.defaultCompileCommands, env); @@ -1445,6 +1473,7 @@ export class CppProperties { // Validate files errors.forcedInclude = this.validatePath(config.forcedInclude, false, true); errors.compileCommands = this.validatePath(config.compileCommands, false); + errors.dotConfig = this.validatePath(config.dotConfig, false); errors.databaseFilename = this.validatePath((config.browse ? config.browse.databaseFilename : undefined), false); // Validate intelliSenseMode @@ -1708,6 +1737,9 @@ export class CppProperties { const compilerPathStart: number = curText.search(/\s*\"compilerPath\"\s*:\s*\"/); const compilerPathValueStart: number = curText.indexOf('"', curText.indexOf(":", compilerPathStart)); const compilerPathEnd: number = compilerPathStart === -1 ? -1 : curText.indexOf('"', compilerPathValueStart + 1) + 1; + const dotConfigStart: number = curText.search(/\s*\"dotConfig\"\s*:\s*\"/); + const dotConfigValueStart: number = curText.indexOf('"', curText.indexOf(":", dotConfigStart)); + const dotConfigEnd: number = dotConfigStart === -1 ? -1 : curText.indexOf('"', dotConfigValueStart + 1) + 1; const processedPaths: Set = new Set(); // Validate compiler paths @@ -1753,6 +1785,39 @@ export class CppProperties { diagnostics.push(diagnostic); } + // validate .config path + let dotConfigPath: string | undefined; + let dotConfigPathExists: boolean = true; + let dotConfigMessage: string | undefined; + + dotConfigPath = currentConfiguration.dotConfig; + dotConfigPath = util.resolveVariables(dotConfigPath, this.ExtendedEnvironment).trim(); + dotConfigPath = this.resolvePath(dotConfigPath, isWindows); + const isWSLDotConfig: boolean = isWindows && dotConfigPath.startsWith("/"); + // does not try resolve if the dotConfig property is empty + dotConfigPath = dotConfigPath !== '' ? dotConfigPath : undefined; + + if (dotConfigPath && this.rootUri) { + const checkPathExists: any = util.checkPathExistsSync(dotConfigPath, this.rootUri.fsPath + path.sep, isWindows, isWSLDotConfig, true); + dotConfigPathExists = checkPathExists.pathExists; + dotConfigPath = checkPathExists.path; + } + if (!dotConfigPathExists) { + dotConfigMessage = localize('cannot.find2', "Cannot find \"{0}\".", dotConfigPath); + newSquiggleMetrics.PathNonExistent++; + } else if (dotConfigPath && !util.checkFileExistsSync(dotConfigPath)) { + dotConfigMessage = localize("path.is.not.a.file", "Path is not a file: {0}", dotConfigPath); + newSquiggleMetrics.PathNotAFile++; + } + + if (dotConfigMessage) { + const diagnostic: vscode.Diagnostic = new vscode.Diagnostic( + new vscode.Range(document.positionAt(curTextStartOffset + dotConfigValueStart), + document.positionAt(curTextStartOffset + dotConfigEnd)), + dotConfigMessage, vscode.DiagnosticSeverity.Warning); + diagnostics.push(diagnostic); + } + // Validate paths for (const curPath of paths) { if (processedPaths.has(curPath)) { diff --git a/Extension/src/LanguageServer/cppBuildTaskProvider.ts b/Extension/src/LanguageServer/cppBuildTaskProvider.ts index c1139898ee..c695c57509 100644 --- a/Extension/src/LanguageServer/cppBuildTaskProvider.ts +++ b/Extension/src/LanguageServer/cppBuildTaskProvider.ts @@ -5,8 +5,8 @@ /* eslint-disable no-unused-expressions */ import * as path from 'path'; import { - TaskDefinition, Task, TaskGroup, ShellExecution, Uri, workspace, - TaskProvider, TaskScope, CustomExecution, ProcessExecution, TextEditor, Pseudoterminal, EventEmitter, Event, TerminalDimensions, window, WorkspaceFolder + TaskDefinition, Task, TaskGroup, ShellExecution, workspace, + TaskProvider, TaskScope, CustomExecution, ProcessExecution, TextEditor, Pseudoterminal, EventEmitter, Event, TerminalDimensions, window, WorkspaceFolder, tasks, TaskExecution, TaskEndEvent, Disposable } from 'vscode'; import * as os from 'os'; import * as util from '../common'; @@ -31,11 +31,12 @@ export interface CppBuildTaskDefinition extends TaskDefinition { export class CppBuildTask extends Task { detail?: string; + existing?: boolean; + isDefault?: boolean; } export class CppBuildTaskProvider implements TaskProvider { static CppBuildScriptType: string = 'cppbuild'; - static CppBuildSourceStr: string = "C/C++"; constructor() { } @@ -54,8 +55,15 @@ export class CppBuildTaskProvider implements TaskProvider { return undefined; } + public resolveInsiderTask(_task: CppBuildTask): CppBuildTask | undefined { + const definition: CppBuildTaskDefinition = _task.definition; + definition.label = definition.label.replace(ext.configPrefix, ""); + _task = this.getTask(definition.command, false, definition.args ? definition.args : [], definition, _task.detail); + return _task; + } + // Generate tasks to build the current file based on the user's detected compilers, the user's compilerPath setting, and the current file's extension. - public async getTasks(appendSourceToName: boolean): Promise { + public async getTasks(appendSourceToName: boolean = false): Promise { const editor: TextEditor | undefined = window.activeTextEditor; const emptyTasks: CppBuildTask[] = []; if (!editor) { @@ -68,22 +76,14 @@ export class CppBuildTaskProvider implements TaskProvider { } // Don't offer tasks for header files. - const fileExtLower: string = fileExt.toLowerCase(); - const isHeader: boolean = !fileExt || [".cuh", ".hpp", ".hh", ".hxx", ".h++", ".hp", ".h", ".ii", ".inl", ".idl", ""].some(ext => fileExtLower === ext); + const isHeader: boolean = util.isHeaderFile (editor.document.uri); if (isHeader) { return emptyTasks; } // Don't offer tasks if the active file's extension is not a recognized C/C++ extension. - let fileIsCpp: boolean; - let fileIsC: boolean; - if (fileExt === ".C") { // ".C" file extensions are both C and C++. - fileIsCpp = true; - fileIsC = true; - } else { - fileIsCpp = [".cu", ".cpp", ".cc", ".cxx", ".c++", ".cp", ".ino", ".ipp", ".tcc"].some(ext => fileExtLower === ext); - fileIsC = fileExtLower === ".c"; - } + const fileIsCpp: boolean = util.isCppFile(editor.document.uri); + const fileIsC: boolean = util.isCFile(editor.document.uri); if (!(fileIsCpp || fileIsC)) { return emptyTasks; } @@ -169,11 +169,12 @@ export class CppBuildTaskProvider implements TaskProvider { } if (!definition) { - const taskLabel: string = ((appendSourceToName && !compilerPathBase.startsWith(CppBuildTaskProvider.CppBuildSourceStr)) ? - CppBuildTaskProvider.CppBuildSourceStr + ": " : "") + compilerPathBase + " " + localize("build_active_file", "build active file"); - const filePath: string = path.join('${fileDirname}', '${fileBasenameNoExtension}'); const isWindows: boolean = os.platform() === 'win32'; - let args: string[] = isCl ? ['/Zi', '/EHsc', '/nologo', '/Fe:', filePath + '.exe', '${file}'] : ['-fdiagnostics-color=always', '-g', '${file}', '-o', filePath + (isWindows ? '.exe' : '')]; + const taskLabel: string = ((appendSourceToName && !compilerPathBase.startsWith(ext.configPrefix)) ? + ext.configPrefix : "") + compilerPathBase + " " + localize("build_active_file", "build active file"); + const filePath: string = path.join('${fileDirname}', '${fileBasenameNoExtension}'); + const programName: string = isWindows ? filePath + '.exe' : filePath; + let args: string[] = isCl ? ['/Zi', '/EHsc', '/nologo', '/Fe:', programName, '${file}'] : ['-fdiagnostics-color=always', '-g', '${file}', '-o', programName]; if (compilerArgs && compilerArgs.length > 0) { args = args.concat(compilerArgs); } @@ -190,21 +191,10 @@ export class CppBuildTaskProvider implements TaskProvider { const editor: TextEditor | undefined = window.activeTextEditor; const folder: WorkspaceFolder | undefined = editor ? workspace.getWorkspaceFolder(editor.document.uri) : undefined; - // Check uri exists (single-mode files are ignored). - if (folder) { - const activeClient: Client = ext.getActiveClient(); - const uri: Uri | undefined = activeClient.RootUri; - if (!uri) { - throw new Error("No client URI found in getBuildTasks()"); - } - if (!workspace.getWorkspaceFolder(uri)) { - throw new Error("No target WorkspaceFolder found in getBuildTasks()"); - } - } const taskUsesActiveFile: boolean = definition.args.some(arg => arg.indexOf('${file}') >= 0); // Need to check this before ${file} is resolved const scope: WorkspaceFolder | TaskScope = folder ? folder : TaskScope.Workspace; - const task: CppBuildTask = new Task(definition, scope, definition.label, CppBuildTaskProvider.CppBuildSourceStr, + const task: CppBuildTask = new Task(definition, scope, definition.label, ext.CppSourceStr, new CustomExecution(async (resolvedDefinition: TaskDefinition): Promise => // When the task is executed, this callback will run. Here, we setup for running the task. new CustomBuildTaskTerminal(resolvedcompilerPath, resolvedDefinition.args, resolvedDefinition.options, taskUsesActiveFile) @@ -230,22 +220,29 @@ export class CppBuildTaskProvider implements TaskProvider { args: task.args, options: task.options }; - const cppBuildTask: CppBuildTask = new Task(definition, TaskScope.Workspace, task.label, "C/C++"); + const cppBuildTask: CppBuildTask = new Task(definition, TaskScope.Workspace, task.label, ext.CppSourceStr); cppBuildTask.detail = task.detail; + cppBuildTask.existing = true; + if (task.group.isDefault) { + cppBuildTask.isDefault = true; + } return cppBuildTask; }); return buildTasksJson.filter((task: CppBuildTask) => task !== null); } - public async ensureBuildTaskExists(taskLabel: string): Promise { + public async checkBuildTaskExists(taskLabel: string, createTask: boolean = false): Promise { const rawTasksJson: any = await this.getRawTasksJson(); if (!rawTasksJson.tasks) { rawTasksJson.tasks = new Array(); } // Ensure that the task exists in the user's task.json. Task will not be found otherwise. - let selectedTask: any = rawTasksJson.tasks.find((task: any) => task.label && task.label === taskLabel); - if (selectedTask) { - return; + let selectedTask: any; + if (!createTask) { + selectedTask = rawTasksJson.tasks.find((task: any) => task.label && task.label === taskLabel); + if (selectedTask) { + return; + } } // Create the task which should be created based on the selected "debug configuration". @@ -254,7 +251,7 @@ export class CppBuildTaskProvider implements TaskProvider { selectedTask = buildTasks.find(task => task.name === normalizedLabel); console.assert(selectedTask); if (!selectedTask) { - throw new Error("Failed to get selectedTask in ensureBuildTaskExists()"); + throw new Error("Failed to get selectedTask in checkBuildTaskExists()"); } else { selectedTask.definition.label = taskLabel; selectedTask.name = taskLabel; @@ -283,16 +280,39 @@ export class CppBuildTaskProvider implements TaskProvider { const settings: OtherSettings = new OtherSettings(); const tasksJsonPath: string | undefined = this.getTasksJsonPath(); if (!tasksJsonPath) { - throw new Error("Failed to get tasksJsonPath in ensureBuildTaskExists()"); + throw new Error("Failed to get tasksJsonPath in checkBuildTaskExists()"); } await util.writeFileText(tasksJsonPath, JSON.stringify(rawTasksJson, null, settings.editorTabSize)); } - public async ensureDebugConfigExists(configName: string): Promise { + public async runBuildTask(taskLabel: string): Promise { + const buildTasks: CppBuildTask[] = await this.getTasks(true); + const task: CppBuildTask | undefined = buildTasks.find(task => task.name === taskLabel); + if (!task) { + throw new Error("Failed to find task in runBuildTask()"); + } else { + const resolvedTask: CppBuildTask | undefined = this.resolveInsiderTask(task); + if (resolvedTask) { + const execution: TaskExecution = await tasks.executeTask(resolvedTask); + return new Promise((resolve) => { + const disposable: Disposable = tasks.onDidEndTask((endEvent: TaskEndEvent) => { + if (endEvent.execution.task.group === TaskGroup.Build && endEvent.execution === execution) { + disposable.dispose(); + resolve(); + } + }); + }); + } else { + throw new Error("Failed to run resolved task in runBuildTask()"); + } + } + } + + public async checkDebugConfigExists(configName: string): Promise { const launchJsonPath: string | undefined = this.getLaunchJsonPath(); if (!launchJsonPath) { - throw new Error("Failed to get launchJsonPath in ensureDebugConfigExists()"); + throw new Error("Failed to get launchJsonPath in checkDebugConfigExists()"); } const rawLaunchJson: any = await this.getRawLaunchJson(); @@ -307,23 +327,6 @@ export class CppBuildTaskProvider implements TaskProvider { return; } - // Provide a unique name for a newly defined tasks, which is different from tasks' names in tasks.json. - public provideUniqueTaskLabel(label: string, buildTasksJson: CppBuildTask[]): string { - const taskNameDictionary: {[key: string]: any} = {}; - buildTasksJson.forEach(task => { - taskNameDictionary[task.definition.label] = {}; - }); - let newLabel: string = label; - let version: number = 0; - do { - version = version + 1; - newLabel = label + ` ver(${version})`; - - } while (taskNameDictionary[newLabel]); - - return newLabel; - } - private getLaunchJsonPath(): string | undefined { return util.getJsonPath("launch.json"); } @@ -341,6 +344,7 @@ export class CppBuildTaskProvider implements TaskProvider { const path: string | undefined = this.getTasksJsonPath(); return util.getRawJson(path); } + } class CustomBuildTaskTerminal implements Pseudoterminal { @@ -354,7 +358,7 @@ class CustomBuildTaskTerminal implements Pseudoterminal { } async open(_initialDimensions: TerminalDimensions | undefined): Promise { - if (this.taskUsesActiveFile && !util.fileIsCOrCppSource(window.activeTextEditor?.document.fileName)) { + if (this.taskUsesActiveFile && !util.isCppOrCFile(window.activeTextEditor?.document.uri)) { this.writeEmitter.fire(localize("cannot.build.non.cpp", 'Cannot build and debug because the active file is not a C or C++ source file.') + this.endOfLine); this.closeEmitter.fire(-1); return; diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index 98b6ed4e54..d528e0f468 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -25,10 +25,14 @@ import { Readable } from 'stream'; import * as nls from 'vscode-nls'; import { CppBuildTaskProvider } from './cppBuildTaskProvider'; import { UpdateInsidersAccess } from '../main'; +import { PlatformInformation } from '../platform'; +import * as semver from 'semver'; nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })(); const localize: nls.LocalizeFunc = nls.loadMessageBundle(); export const cppBuildTaskProvider: CppBuildTaskProvider = new CppBuildTaskProvider(); +export const CppSourceStr: string = "C/C++"; +export const configPrefix: string = "C/C++: "; let prevCrashFile: string; let clients: ClientCollection; @@ -153,11 +157,106 @@ function sendActivationTelemetry(): void { telemetry.logLanguageServerEvent("Activate", activateEvent); } +async function checkVsixCompatibility(): Promise { + const ignoreMismatchedCompatibleVsix: PersistentState = new PersistentState("CPP." + util.packageJson.version + ".ignoreMismatchedCompatibleVsix", false); + let resetIgnoreMismatchedCompatibleVsix: boolean = true; + + // Check to ensure the correct platform-specific VSIX was installed. + const vsixManifestPath: string = path.join(util.extensionPath, ".vsixmanifest"); + // Skip the check if the file does not exist, such as when debugging cpptools. + if (await util.checkFileExists(vsixManifestPath)) { + const content: string = await util.readFileText(vsixManifestPath); + const matches: RegExpMatchArray | null = content.match(/TargetPlatform="(?[^"]*)"/); + if (matches && matches.length > 0 && matches.groups) { + const vsixTargetPlatform: string = matches.groups['platform']; + const platformInfo: PlatformInformation = await PlatformInformation.GetPlatformInformation(); + let isPlatformCompatible: boolean = true; + let isPlatformMatching: boolean = true; + switch (vsixTargetPlatform) { + case "win32-x64": + isPlatformMatching = platformInfo.platform === "win32" && platformInfo.architecture === "x64"; + // x64 binaries can also be run on arm64 Windows 11. + isPlatformCompatible = platformInfo.platform === "win32" && (platformInfo.architecture === "x64" || (platformInfo.architecture === "arm64" && semver.gte(os.release(), "10.0.22000"))); + break; + case "win32-ia32": + isPlatformMatching = platformInfo.platform === "win32" && platformInfo.architecture === "x86"; + // x86 binaries can also be run on x64 and arm64 Windows. + isPlatformCompatible = platformInfo.platform === "win32" && (platformInfo.architecture === "x86" || platformInfo.architecture === "x64" || platformInfo.architecture === "arm64"); + break; + case "win32-arm64": + isPlatformMatching = platformInfo.platform === "win32" && platformInfo.architecture === "arm64"; + isPlatformCompatible = isPlatformMatching; + break; + case "linux-x64": + isPlatformMatching = platformInfo.platform === "linux" && platformInfo.architecture === "x64" && platformInfo.distribution?.name !== "alpine"; + isPlatformCompatible = isPlatformMatching; + break; + case "linux-arm64": + isPlatformMatching = platformInfo.platform === "linux" && platformInfo.architecture === "arm64" && platformInfo.distribution?.name !== "alpine"; + isPlatformCompatible = isPlatformMatching; + break; + case "linux-armhf": + isPlatformMatching = platformInfo.platform === "linux" && platformInfo.architecture === "arm" && platformInfo.distribution?.name !== "alpine"; + // armhf binaries can also be run on aarch64 linux. + isPlatformCompatible = platformInfo.platform === "linux" && (platformInfo.architecture === "arm" || platformInfo.architecture === "arm64") && platformInfo.distribution?.name !== "alpine"; + break; + case "alpine-x64": + isPlatformMatching = platformInfo.platform === "linux" && platformInfo.architecture === "x64" && platformInfo.distribution?.name === "alpine"; + isPlatformCompatible = isPlatformMatching; + break; + case "alpine-arm64": + isPlatformMatching = platformInfo.platform === "linux" && platformInfo.architecture === "arm64" && platformInfo.distribution?.name === "alpine"; + isPlatformCompatible = isPlatformMatching; + break; + case "darwin-x64": + isPlatformMatching = platformInfo.platform === "darwin" && platformInfo.architecture === "x64"; + isPlatformCompatible = isPlatformMatching; + break; + case "darwin-arm64": + isPlatformMatching = platformInfo.platform === "darwin" && platformInfo.architecture === "arm64"; + // x64 binaries can also be run on arm64 macOS. + isPlatformCompatible = platformInfo.platform === "darwin" && (platformInfo.architecture === "x64" || platformInfo.architecture === "arm64"); + break; + default: + console.log("Unrecognized TargetPlatform in .vsixmanifest"); + break; + } + const moreInfoButton: string = localize("more.info.button", "More Info"); + const ignoreButton: string = localize("ignore.button", "Ignore"); + let promise: Thenable | undefined; + if (!isPlatformCompatible) { + promise = vscode.window.showErrorMessage(localize("vsix.platform.incompatible", "The C/C++ extension installed does not match your system.", vsixTargetPlatform), moreInfoButton); + } else if (!isPlatformMatching) { + if (!ignoreMismatchedCompatibleVsix.Value) { + resetIgnoreMismatchedCompatibleVsix = false; + promise = vscode.window.showWarningMessage(localize("vsix.platform.mismatching", "The C/C++ extension installed is compatible with but does not match your system.", vsixTargetPlatform), moreInfoButton, ignoreButton); + } + } + if (promise) { + promise.then(async (value) => { + if (value === moreInfoButton) { + await vscode.commands.executeCommand("markdown.showPreview", vscode.Uri.file(util.getLocalizedHtmlPath("Reinstalling the Extension.md"))); + } else if (value === ignoreButton) { + ignoreMismatchedCompatibleVsix.Value = true; + } + }); + } + } else { + console.log("Unable to find TargetPlatform in .vsixmanifest"); + } + } + if (resetIgnoreMismatchedCompatibleVsix) { + ignoreMismatchedCompatibleVsix.Value = false; + } +} + /** * activate: set up the extension for language services */ export async function activate(): Promise { + await checkVsixCompatibility(); + if (vscode.workspace.workspaceFolders && vscode.workspace.workspaceFolders.length > 0) { for (let i: number = 0; i < vscode.workspace.workspaceFolders.length; ++i) { const config: string = path.join(vscode.workspace.workspaceFolders[i].uri.fsPath, ".vscode/c_cpp_properties.json"); @@ -168,12 +267,56 @@ export async function activate(): Promise { } } + if (new CppSettings((vscode.workspace.workspaceFolders && vscode.workspace.workspaceFolders.length > 0) ? vscode.workspace.workspaceFolders[0]?.uri : undefined).intelliSenseEngine === "Disabled") { + throw new Error(intelliSenseDisabledError); + } else { + console.log("activating extension"); + sendActivationTelemetry(); + const checkForConflictingExtensions: PersistentState = new PersistentState("CPP." + util.packageJson.version + ".checkForConflictingExtensions", true); + if (checkForConflictingExtensions.Value) { + checkForConflictingExtensions.Value = false; + const clangCommandAdapterActive: boolean = vscode.extensions.all.some((extension: vscode.Extension, index: number, array: Readonly[]>): boolean => + extension.isActive && extension.id === "mitaki28.vscode-clang"); + if (clangCommandAdapterActive) { + telemetry.logLanguageServerEvent("conflictingExtension"); + } + } + } + + console.log("starting language server"); + clients = new ClientCollection(); + ui = getUI(); + + // There may have already been registered CustomConfigurationProviders. + // Request for configurations from those providers. + clients.forEach(client => { + getCustomConfigProviders().forEach(provider => client.onRegisterCustomConfigurationProvider(provider)); + }); + + disposables.push(vscode.workspace.onDidChangeConfiguration(onDidChangeSettings)); + disposables.push(vscode.window.onDidChangeActiveTextEditor(onDidChangeActiveTextEditor)); + ui.activeDocumentChanged(); // Handle already active documents (for non-cpp files that we don't register didOpen). + disposables.push(vscode.window.onDidChangeTextEditorSelection(onDidChangeTextEditorSelection)); + disposables.push(vscode.window.onDidChangeVisibleTextEditors(onDidChangeVisibleTextEditors)); + + updateLanguageConfigurations(); + + reportMacCrashes(); + + vcpkgDbPromise = initVcpkgDatabase(); + + clients.ActiveClient.notifyWhenLanguageClientReady(() => { + intervalTimer = global.setInterval(onInterval, 2500); + }); + + registerCommands(); + taskProvider = vscode.tasks.registerTaskProvider(CppBuildTaskProvider.CppBuildScriptType, cppBuildTaskProvider); vscode.tasks.onDidStartTask(event => { getActiveClient().PauseCodeAnalysis(); if (event.execution.task.definition.type === CppBuildTaskProvider.CppBuildScriptType - || event.execution.task.name.startsWith(CppBuildTaskProvider.CppBuildSourceStr)) { + || event.execution.task.name.startsWith(configPrefix)) { telemetry.logLanguageServerEvent('buildTaskStarted'); } }); @@ -181,7 +324,7 @@ export async function activate(): Promise { vscode.tasks.onDidEndTask(event => { getActiveClient().ResumeCodeAnalysis(); if (event.execution.task.definition.type === CppBuildTaskProvider.CppBuildScriptType - || event.execution.task.name.startsWith(CppBuildTaskProvider.CppBuildSourceStr)) { + || event.execution.task.name.startsWith(configPrefix)) { telemetry.logLanguageServerEvent('buildTaskFinished'); if (event.execution.task.scope !== vscode.TaskScope.Global && event.execution.task.scope !== vscode.TaskScope.Workspace) { const folder: vscode.WorkspaceFolder | undefined = event.execution.task.scope; @@ -228,53 +371,11 @@ export async function activate(): Promise { } }); - if (new CppSettings((vscode.workspace.workspaceFolders && vscode.workspace.workspaceFolders.length > 0) ? vscode.workspace.workspaceFolders[0]?.uri : undefined).intelliSenseEngine === "Disabled") { - throw new Error(intelliSenseDisabledError); - } else { - console.log("activating extension"); - sendActivationTelemetry(); - const checkForConflictingExtensions: PersistentState = new PersistentState("CPP." + util.packageJson.version + ".checkForConflictingExtensions", true); - if (checkForConflictingExtensions.Value) { - checkForConflictingExtensions.Value = false; - const clangCommandAdapterActive: boolean = vscode.extensions.all.some((extension: vscode.Extension, index: number, array: Readonly[]>): boolean => - extension.isActive && extension.id === "mitaki28.vscode-clang"); - if (clangCommandAdapterActive) { - telemetry.logLanguageServerEvent("conflictingExtension"); - } - } - } - - console.log("starting language server"); - clients = new ClientCollection(); - ui = getUI(); - // Log cold start. const activeEditor: vscode.TextEditor | undefined = vscode.window.activeTextEditor; if (activeEditor) { clients.timeTelemetryCollector.setFirstFile(activeEditor.document.uri); } - - // There may have already been registered CustomConfigurationProviders. - // Request for configurations from those providers. - clients.forEach(client => { - getCustomConfigProviders().forEach(provider => client.onRegisterCustomConfigurationProvider(provider)); - }); - - disposables.push(vscode.workspace.onDidChangeConfiguration(onDidChangeSettings)); - disposables.push(vscode.window.onDidChangeActiveTextEditor(onDidChangeActiveTextEditor)); - ui.activeDocumentChanged(); // Handle already active documents (for non-cpp files that we don't register didOpen). - disposables.push(vscode.window.onDidChangeTextEditorSelection(onDidChangeTextEditorSelection)); - disposables.push(vscode.window.onDidChangeVisibleTextEditors(onDidChangeVisibleTextEditors)); - - updateLanguageConfigurations(); - - reportMacCrashes(); - - vcpkgDbPromise = initVcpkgDatabase(); - - clients.ActiveClient.notifyWhenLanguageClientReady(() => { - intervalTimer = global.setInterval(onInterval, 2500); - }); } export function updateLanguageConfigurations(): void { @@ -400,14 +501,7 @@ function onInterval(): void { /** * registered commands */ -let commandsRegistered: boolean = false; - export function registerCommands(): void { - if (commandsRegistered) { - return; - } - - commandsRegistered = true; disposables.push(vscode.commands.registerCommand('C_Cpp.SwitchHeaderSource', onSwitchHeaderSource)); disposables.push(vscode.commands.registerCommand('C_Cpp.ResetDatabase', onResetDatabase)); disposables.push(vscode.commands.registerCommand('C_Cpp.ConfigurationSelect', onSelectConfiguration)); @@ -488,14 +582,18 @@ 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 the document is already visible in another column, open it there. - vscode.window.visibleTextEditors.forEach((editor, index, array) => { - if (editor.document === document && !foundEditor) { - foundEditor = true; - vscode.window.showTextDocument(document, editor.viewColumn); - } - }); + 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; + vscode.window.showTextDocument(document, editor.viewColumn); + } + }); + } + if (!foundEditor) { vscode.window.showTextDocument(document); } diff --git a/Extension/src/LanguageServer/settings.ts b/Extension/src/LanguageServer/settings.ts index 33022ca96d..953d82008c 100644 --- a/Extension/src/LanguageServer/settings.ts +++ b/Extension/src/LanguageServer/settings.ts @@ -218,6 +218,7 @@ export class CppSettings extends Settings { public get filesExclude(): vscode.WorkspaceConfiguration | undefined { return super.Section.get("files.exclude"); } public get defaultIncludePath(): string[] | undefined { return super.getWithUndefinedDefault("default.includePath"); } public get defaultDefines(): string[] | undefined { return super.getWithUndefinedDefault("default.defines"); } + public get defaultDotconfig(): string | undefined { return super.Section.get("default.dotConfig"); } public get defaultMacFrameworkPath(): string[] | undefined { return super.getWithUndefinedDefault("default.macFrameworkPath"); } public get defaultWindowsSdkVersion(): string | undefined { return super.Section.get("default.windowsSdkVersion"); } public get defaultCompileCommands(): string | undefined { return super.Section.get("default.compileCommands"); } @@ -711,21 +712,21 @@ export class CppSettings extends Settings { return true; } } - if (editorConfigSettings.root?.toLowerCase() === "true") { - return true; - } - } else { - const clangFormatPath1: string = path.join(parentPath, ".clang-format"); - if (fs.existsSync(clangFormatPath1)) { - return true; - } else { - const clangFormatPath2: string = path.join(parentPath, "_clang-format"); - if (fs.existsSync(clangFormatPath2)) { - return true; - } + switch (typeof editorConfigSettings.root) { + case "boolean": + return editorConfigSettings.root; + case "string": + return editorConfigSettings.root.toLowerCase() === "true"; + default: + return false; } } - return false; + const clangFormatPath1: string = path.join(parentPath, ".clang-format"); + if (fs.existsSync(clangFormatPath1)) { + return true; + } + const clangFormatPath2: string = path.join(parentPath, "_clang-format"); + return fs.existsSync(clangFormatPath2); }; // Scan parent paths to see which we find first, ".clang-format" or ".editorconfig" const fsPath: string = document.uri.fsPath; diff --git a/Extension/src/LanguageServer/settingsPanel.ts b/Extension/src/LanguageServer/settingsPanel.ts index 7396c23cc3..ad27fa2aa1 100644 --- a/Extension/src/LanguageServer/settingsPanel.ts +++ b/Extension/src/LanguageServer/settingsPanel.ts @@ -39,6 +39,7 @@ const elementId: { [key: string]: string } = { windowsSdkVersion: "windowsSdkVersion", macFrameworkPath: "macFrameworkPath", compileCommands: "compileCommands", + dotConfig: "dotConfig", mergeConfigurations: "mergeConfigurations", configurationProvider: "configurationProvider", forcedInclude: "forcedInclude", @@ -326,6 +327,9 @@ export class SettingsPanel { case elementId.compileCommands: this.configValues.compileCommands = message.value; break; + case elementId.dotConfig: + this.configValues.dotConfig = message.value; + break; case elementId.mergeConfigurations: this.configValues.mergeConfigurations = message.value; break; diff --git a/Extension/src/LanguageServer/timeTelemetryCollector.ts b/Extension/src/LanguageServer/timeTelemetryCollector.ts index 17ede8149e..3327000fd0 100644 --- a/Extension/src/LanguageServer/timeTelemetryCollector.ts +++ b/Extension/src/LanguageServer/timeTelemetryCollector.ts @@ -18,7 +18,7 @@ export class TimeTelemetryCollector { private cachedTimeStamps: Map = new Map(); // a map of uri's string to TimeStampSequence public setFirstFile(uri: vscode.Uri): void { - if (util.fileIsCOrCppSource(uri.path)) { + if (util.isCppOrCFile(uri)) { const curTimeStamps: TimeStampSequence = this.getTimeStamp(uri.path); curTimeStamps.firstFile = new Date().getTime(); this.cachedTimeStamps.set(uri.path, curTimeStamps); diff --git a/Extension/src/LanguageServer/ui.ts b/Extension/src/LanguageServer/ui.ts index d64686d5ca..31bfde783b 100644 --- a/Extension/src/LanguageServer/ui.ts +++ b/Extension/src/LanguageServer/ui.ts @@ -122,6 +122,9 @@ export class UI { } private setIsCodeAnalysisPaused(val: boolean): void { + if (!this.isRunningCodeAnalysis) { + return; + } this.isCodeAnalysisPaused = val; const twoStatus: boolean = val && this.isUpdatingIntelliSense; this.intelliSenseStatusBarItem.tooltip = (this.isUpdatingIntelliSense ? this.updatingIntelliSenseTooltip : "") @@ -174,6 +177,9 @@ export class UI { } private setCodeAnalysisProcessed(processed: number): void { + if (!this.isRunningCodeAnalysis) { + return; // Occurs when a multi-root workspace is activated. + } this.codeAnalysisProcessed = processed; if (this.codeAnalysisProcessed > this.codeAnalysisTotal) { this.codeAnalysisTotal = this.codeAnalysisProcessed + 1; @@ -182,6 +188,9 @@ export class UI { } private setCodeAnalysisTotal(total: number): void { + if (!this.isRunningCodeAnalysis) { + return; // Occurs when a multi-root workspace is activated. + } this.codeAnalysisTotal = total; this.updateCodeAnalysisTooltip(); } diff --git a/Extension/src/common.ts b/Extension/src/common.ts index b90df0aab9..ec6cd74894 100644 --- a/Extension/src/common.ts +++ b/Extension/src/common.ts @@ -94,22 +94,6 @@ export async function getRawJson(path: string | undefined): Promise { return rawElement; } -export function fileIsCOrCppSource(file?: string): boolean { - if (file === undefined) { - return false; - } - const fileExtLower: string = path.extname(file).toLowerCase(); - return [".cu", ".c", ".cpp", ".cc", ".cxx", ".c++", ".cp", ".tcc", ".mm", ".ino", ".ipp", ".inl"].some(ext => fileExtLower === ext); -} - -export function isEditorFileCpp(file: string): boolean { - const editor: vscode.TextEditor | undefined = vscode.window.visibleTextEditors.find(e => e.document.uri.toString() === file); - if (!editor) { - return false; - } - return editor.document.languageId === "cpp"; -} - // This function is used to stringify the rawPackageJson. // Do not use with util.packageJson or else the expanded // package.json will be written back. @@ -171,9 +155,37 @@ export function getVcpkgRoot(): string { * For the purposes of this function, a header file has no extension, or an extension that begins with the letter 'h'. * @param document The document to check. */ -export function isHeader(uri: vscode.Uri): boolean { - const ext: string = path.extname(uri.fsPath); - return !ext || ext.startsWith(".h") || ext.startsWith(".H"); +export function isHeaderFile(uri: vscode.Uri): boolean { + const fileExt: string = path.extname(uri.fsPath); + const fileExtLower: string = fileExt.toLowerCase(); + return !fileExt || [".cuh", ".hpp", ".hh", ".hxx", ".h++", ".hp", ".h", ".ii", ".inl", ".idl", ""].some(ext => fileExtLower === ext); +} + +export function isCppFile (uri: vscode.Uri): boolean { + const fileExt: string = path.extname(uri.fsPath); + const fileExtLower: string = fileExt.toLowerCase(); + return (fileExt === ".C") || [".cu", ".cpp", ".cc", ".cxx", ".c++", ".cp", ".ino", ".ipp", ".tcc"].some(ext => fileExtLower === ext); +} + +export function isCFile (uri: vscode.Uri): boolean { + const fileExt: string = path.extname(uri.fsPath); + const fileExtLower: string = fileExt.toLowerCase(); + return (fileExt === ".C") || fileExtLower === ".c"; +} + +export function isCppOrCFile(uri: vscode.Uri | undefined): boolean { + if (!uri) { + return false; + } + return isCppFile(uri) || isCFile(uri); +} + +export function isEditorFileCpp(file: string): boolean { + const editor: vscode.TextEditor | undefined = vscode.window.visibleTextEditors.find(e => e.document.uri.toString() === file); + if (!editor) { + return false; + } + return editor.document.languageId === "cpp"; } let isExtensionNotReadyPromptDisplayed: boolean = false; @@ -1019,11 +1031,13 @@ export function getLocaleId(): string { export function getLocalizedHtmlPath(originalPath: string): string { const locale: string = getLocaleId(); - const localizedFilePath: string = getExtensionFilePath(path.join("dist/html/", locale, originalPath)); - if (!fs.existsSync(localizedFilePath)) { - return getExtensionFilePath(originalPath); + if (!locale.startsWith("en")) { + const localizedFilePath: string = getExtensionFilePath(path.join("dist/html/", locale, originalPath)); + if (fs.existsSync(localizedFilePath)) { + return localizedFilePath; + } } - return localizedFilePath; + return getExtensionFilePath(originalPath); } export interface LocalizeStringParams { diff --git a/Extension/src/logger.ts b/Extension/src/logger.ts index 2c8f7168d7..a3bcfb31e1 100644 --- a/Extension/src/logger.ts +++ b/Extension/src/logger.ts @@ -7,6 +7,7 @@ import * as vscode from 'vscode'; import * as os from 'os'; import { CppSettings } from './LanguageServer/settings'; +import { CppSourceStr } from './LanguageServer/extension'; // This is used for testing purposes let Subscriber: (message: string) => void; @@ -70,7 +71,7 @@ let outputChannel: vscode.OutputChannel | undefined; export function getOutputChannel(): vscode.OutputChannel { if (!outputChannel) { - outputChannel = vscode.window.createOutputChannel("C/C++"); + outputChannel = vscode.window.createOutputChannel(CppSourceStr); const settings: CppSettings = new CppSettings(); const loggingLevel: string | undefined = settings.loggingLevel; if (!!loggingLevel && loggingLevel !== "None" && loggingLevel !== "Error") { diff --git a/Extension/src/main.ts b/Extension/src/main.ts index 414c146771..ab08a4a021 100644 --- a/Extension/src/main.ts +++ b/Extension/src/main.ts @@ -76,7 +76,7 @@ export async function activate(context: vscode.ExtensionContext): Promise +
+
Dot Config
+
A path to a .config file created by Kconfig system. Kconfig system generates a file with all the defines to build a project. Examples of projects that use Kconfig system are the Linux Kernel and NuttX RTOS.
+
+ +
+
+
+
Compile commands
@@ -700,7 +709,7 @@
Browse: database filename
- The path to the generated symbol database. This instructs the extension to save the Tag Parser's symbol database somewhere other than the workspace's default storage location. If a relative path is specified, it will be made relative to the workspace's default storage location, not the workspace folder itself. The ${workspaceFolder} variable can be used to specify a path relative to the workspace folder (e.g. ${workspaceFolder}/.vscode/browse.vc.db) + The path to the generated symbol database. This instructs the extension to save the Tag Parser's symbol database somewhere other than the workspace's default storage location. If a relative path is specified, it will be made relative to the workspace's default storage location, not the workspace folder itself. The ${workspaceFolder} variable can be used to specify a path relative to the workspace folder (e.g. ${workspaceFolder}/.vscode/browse.vc.db).
diff --git a/Extension/ui/settings.ts b/Extension/ui/settings.ts index c925ff5211..3a99cfc0f0 100644 --- a/Extension/ui/settings.ts +++ b/Extension/ui/settings.ts @@ -40,6 +40,8 @@ const elementId: { [key: string]: string } = { forcedInclude: "forcedInclude", forcedIncludeInvalid: "forcedIncludeInvalid", mergeConfigurations: "mergeConfigurations", + dotConfig: "dotConfig", + dotConfigInvalid: "dotConfigInvalid", // Browse properties browsePath: "browsePath", @@ -273,6 +275,7 @@ class SettingsApp { (document.getElementById(elementId.mergeConfigurations)).checked = config.mergeConfigurations; (document.getElementById(elementId.configurationProvider)).value = config.configurationProvider ? config.configurationProvider : ""; (document.getElementById(elementId.forcedInclude)).value = joinEntries(config.forcedInclude); + (document.getElementById(elementId.dotConfig)).value = config.dotConfig ? config.dotConfig : ""; if (config.browse) { (document.getElementById(elementId.browsePath)).value = joinEntries(config.browse.path); @@ -301,6 +304,7 @@ class SettingsApp { this.showErrorWithInfo(elementId.compileCommandsInvalid, errors.compileCommands); this.showErrorWithInfo(elementId.browsePathInvalid, errors.browsePath); this.showErrorWithInfo(elementId.databaseFilenameInvalid, errors.databaseFilename); + this.showErrorWithInfo(elementId.dotConfigInvalid, errors.dotConfig); } finally { this.updating = false; } diff --git a/Extension/yarn.lock b/Extension/yarn.lock index e8383b94fb..7e107d84b6 100644 --- a/Extension/yarn.lock +++ b/Extension/yarn.lock @@ -16,17 +16,17 @@ dependencies: "@babel/highlight" "^7.8.3" -"@babel/helper-validator-identifier@^7.14.0": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288" - integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A== +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== "@babel/highlight@^7.10.4": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.0.tgz#3197e375711ef6bf834e67d0daec88e4f46113cf" - integrity sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg== + version "7.16.10" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" + integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== dependencies: - "@babel/helper-validator-identifier" "^7.14.0" + "@babel/helper-validator-identifier" "^7.16.7" chalk "^2.0.0" js-tokens "^4.0.0" @@ -97,9 +97,9 @@ minimatch "^3.0.4" "@humanwhocodes/object-schema@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" - integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== "@nodelib/fs.scandir@2.1.4": version "2.1.4" @@ -622,17 +622,7 @@ ajv-keywords@^3.5.2: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.10.0, ajv@^6.10.2: - version "6.11.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.11.0.tgz#c3607cbc8ae392d8a5a536f25b21f8e5f3f87fe9" - integrity sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^8.0.1: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -642,16 +632,6 @@ ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.1: - version "8.2.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.2.0.tgz#c89d3380a784ce81b2085f48811c4c101df4c602" - integrity sha512-WSNGFuyWd//XO8n/m/EaOlNLtO0yL8EXT/74LqT4khdhpZjP7lkj/kT5uwRmGitKEVp/Oj7ZUHeGfPtgHhQ5CA== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - ansi-colors@4.1.1, ansi-colors@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" @@ -2447,10 +2427,10 @@ flush-write-stream@^1.0.2: inherits "^2.0.3" readable-stream "^2.3.6" -follow-redirects@1.14.7, follow-redirects@^1.14.4: - version "1.14.7" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.7.tgz#2004c02eb9436eee9a21446a6477debf17e81685" - integrity sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ== +follow-redirects@1.14.8, follow-redirects@^1.14.4: + version "1.14.8" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc" + integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA== for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" @@ -3442,11 +3422,6 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" @@ -3623,11 +3598,6 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= - lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" @@ -3802,11 +3772,16 @@ minimist@0.0.8, minimist@^0.2.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.2.1.tgz#827ba4e7593464e7c221e8c5bed930904ee2c455" integrity sha512-GY8fANSrTMfBVfInqJAY41QkOM+upUTytK1jZ0c8+3HdHrJxBJ3rF5i9moClXTE8uUSnUo8cAsCoxDXvSY4DHg== -minimist@^1.2.0, minimist@^1.2.5: +minimist@^1.2.0: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minimist@^1.2.5, minimist@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== + mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -4676,11 +4651,6 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" @@ -5175,6 +5145,15 @@ string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" +string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string.prototype.trimend@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" @@ -5233,6 +5212,13 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-bom-string@1.X: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" @@ -5312,16 +5298,15 @@ table@^5.2.3: string-width "^3.0.0" table@^6.0.9: - version "6.7.1" - resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" - integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== + version "6.8.0" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" + integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== dependencies: ajv "^8.0.1" - lodash.clonedeep "^4.5.0" lodash.truncate "^4.4.2" slice-ansi "^4.0.0" - string-width "^4.2.0" - strip-ansi "^6.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" tapable@^1.0.0: version "1.1.3" diff --git a/ExtensionPack/CHANGELOG.md b/ExtensionPack/CHANGELOG.md index 2e3bfb9b6b..e96597a69f 100644 --- a/ExtensionPack/CHANGELOG.md +++ b/ExtensionPack/CHANGELOG.md @@ -1,25 +1,9 @@ # C/C++ Extension Pack for Visual Studio Code Change Log -## Version 1.1.0: November 2021 +## Version 1.2.0 ### List of extensions: * C/C++ * C/C++ Themes -* CMake * CMake Tools * Doxygen Documentation Generator * Better C++ Syntax -* Remote Development Extension Pack - -## Version 1.0.0: September 2020 -### List of extensions: -* C/C++ -* C/C++ Themes -* CMake -* CMake Tools -* Remote Development Extension Pack -* GitHub Pull Requests and Issues -* Visual Studio Codespaces -* LiveShare Extension Pack -* Doxygen Documentation Generator -* Better C++ Syntax - diff --git a/ExtensionPack/main.js b/ExtensionPack/main.js new file mode 100644 index 0000000000..3834d8f1a9 --- /dev/null +++ b/ExtensionPack/main.js @@ -0,0 +1,4 @@ +"use strict" +// This file exists so that we can package the extension pack as a workspace-only extension. +// The most important extensions in the pack do not work for the web scenario, so we do not want this pack to appear for web. +console.log('do not activate'); diff --git a/ExtensionPack/package.json b/ExtensionPack/package.json index b6aea4286d..55ce5aa0fa 100644 --- a/ExtensionPack/package.json +++ b/ExtensionPack/package.json @@ -9,13 +9,17 @@ "name": "Microsoft Corporation" }, "license": "SEE LICENSE IN LICENSE.txt", - "version": "1.1.0", + "version": "1.2.0", "engines": { "vscode": "^1.48.0" }, "categories": [ "Extension Packs" ], + "activationEvents": [ + "onCommand:ms-vscode.cpptools-extension-pack.unavailableCommand" + ], + "main": "main.js", "repository": { "type": "git", "url": "https://github.com/microsoft/vscode-cpptools.git", @@ -28,23 +32,13 @@ "Microsoft", "color-theme", "build", - "cmake", - "remote", - "ssh", - "wsl", - "remote", - "codespace", - "liveshare" + "cmake" ], "extensionPack": [ "ms-vscode.cpptools", "ms-vscode.cpptools-themes", - "twxs.cmake", "ms-vscode.cmake-tools", "cschlosser.doxdocgen", - "jeff-hykin.better-cpp-syntax", - "ms-vscode-remote.remote-wsl", - "ms-vscode-remote.remote-containers", - "ms-vscode-remote.remote-ssh" + "jeff-hykin.better-cpp-syntax" ] }