Compare commits

..
31 Commits
Author SHA1 Message Date
Sean McManus c8b7f13c1a Merge pull request #12791 from microsoft/main
Merge for 1.22.7
2024-09-30 16:12:32 -07:00
Sean McManus 911c04b96c Update changelog for 1.22.7. (#12790)
* Update changelog for 1.22.7.
2024-09-30 16:07:05 -07:00
Sean McManus 4c0a9ea3be Update TPN. (#12789) 2024-09-30 16:03:36 -07:00
Ben McMorranandSean McManus a5a748166b Add cancellation token to react to Copilot API changes (#12773)
* Add cancellation token to react to Copilot API changes

* Check for known LSP error code

---------

Co-authored-by: Sean McManus <[email protected]>
2024-09-30 14:56:20 -07:00
Bob Brown 1ec1c9bb94 Use the Microsoft CFS registry instead of npm's registry directly (#12787) 2024-09-30 12:46:12 -07:00
Sean McManus b70f1562c1 Adding vsix signing. (#12758) 2024-09-26 17:14:01 -07:00
Colen Garoutte-Carson c65b11bfb5 Fix an issue preventing use of a full command line in compilerPath (#12774) 2024-09-26 16:40:07 -07:00
Colen Garoutte-Carson 8d0d3601a7 Merge pull request #12770 from microsoft/main 2024-09-25 15:46:38 -07:00
Colen Garoutte-Carson 24314254db Update changelog for 1.22.6 (#12769) 2024-09-25 15:39:41 -07:00
Ben McMorran 5c588fba0c Remove parametersSchema for #cpp (#12768) 2024-09-25 15:04:48 -07:00
Sean McManus e9613ae7ad Merge pull request #12764 from microsoft/main
Merge for 1.22.5
2024-09-24 16:55:39 -07:00
Sean McManus 1e89750b0b 1.22.5 changelog (#12762)
* Update changelog for 1.22.5.
2024-09-24 16:45:58 -07:00
Sean McManus 4079b1e516 Fix Cg build. (#12759)
* Fix Cg build.
2024-09-23 19:49:52 -07:00
Sean McManus cc653f8685 Fix .js signing (#12757)
* Fix .js signing.
2024-09-23 18:55:38 -07:00
Ben McMorran b92dbb40c1 Update lmTools API (#12755) 2024-09-23 11:35:08 -07:00
Sean McManus 1f83dd7715 Add signing for .js files (#12749)
* Sign .js files.
2024-09-20 17:05:37 -07:00
Ben McMorran 8d7668ea88 Check related files API flag when IntelliSense is disabled (#12743) 2024-09-19 20:58:36 -07:00
Colen Garoutte-Carson 3570705b5c Merge pull request #12742 from microsoft/main 2024-09-19 16:12:27 -07:00
Colen Garoutte-Carson 478765f1fc Update changelog for 1.22.4 (again) (#12741) 2024-09-19 16:08:15 -07:00
Colen Garoutte-Carson 096b1463a6 Merge pull request #12740 from microsoft/main 2024-09-19 15:32:11 -07:00
Colen Garoutte-Carson 1f263c50b7 Work around issue with clang 18 and size_t (#12739) 2024-09-19 15:29:14 -07:00
Colen Garoutte-Carson 812318163d Merge pull request #12738 from microsoft/main 2024-09-19 15:04:30 -07:00
Colen Garoutte-Carson 0efda4b1c2 Update changelog for 1.22.4 (again) (#12737) 2024-09-19 14:53:51 -07:00
Ben McMorran ca12b97c37 Migrate to Copilot related files API (#12735) 2024-09-19 14:49:03 -07:00
Colen Garoutte-Carson 225b776d99 Merge pull request #12734 from microsoft/main 2024-09-18 14:30:06 -07:00
Colen Garoutte-Carson e4ae0b7fdf Update version and changelog for 1.22.4 (#12733) 2024-09-18 13:50:29 -07:00
Colen Garoutte-Carson 458ef304e8 Rework custom config requests (#12727) 2024-09-18 11:35:00 -07:00
Sean McManus 970f95bfea Update IntelliSense loc strings. (#12726) 2024-09-18 03:18:14 -07:00
Sean McManus cd4ef2329f Update changelog. (#12710) 2024-09-13 11:38:42 -07:00
Sean McManus ccc07f5adb Enable log diagnostics without a C/C++ file active. (#12701) 2024-09-13 11:33:44 -07:00
Sean McManus 50e0f8685a Show the reload window message when caseSensitiveFileSupport is changed. (#12700)
* Show the reload window message when caseSensitiveFileSupport is changed.
2024-09-13 11:22:51 -07:00
44 changed files with 5151 additions and 5240 deletions
+2
View File
@@ -0,0 +1,2 @@
registry=https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/
always-auth=true
+3292 -3366
View File
File diff suppressed because it is too large Load Diff
+4
View File
@@ -102,6 +102,10 @@ extends:
filename: mkdir
arguments: $(Build.ArtifactStagingDirectory)\Extension
- script: yarn run vsix-prepublish
displayName: Build files
workingDirectory: $(Build.SourcesDirectory)\Extension
- task: CmdLine@1
name: ProcessRunner_12
displayName: Run VSCE to package vsix
+21
View File
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="SignFiles" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="packages\Microsoft.VisualStudioEng.MicroBuild.Core.0.4.1\build\Microsoft.VisualStudioEng.MicroBuild.Core.props" />
<PropertyGroup>
<BaseOutputDirectory>$(BUILD_STAGINGDIRECTORY)/Extension</BaseOutputDirectory>
<!-- These properties are required by MicroBuild, which only signs files that are under these paths -->
<IntermediateOutputPath>$(BaseOutputDirectory)</IntermediateOutputPath>
<OutDir>$(BaseOutputDirectory)</OutDir>
</PropertyGroup>
<ItemGroup>
<!-- Because of Webpack bundling, these are the only shipping Javascript files.
There are no third-party files to sign because they've all been bundled. -->
<FilesToSign Include="$(OutDir)\dist\src\main.js;$(OutDir)\dist\ui\settings.js">
<Authenticode>Microsoft400</Authenticode>
</FilesToSign>
</ItemGroup>
<Import Project="packages\Microsoft.VisualStudioEng.MicroBuild.Core.0.4.1\build\Microsoft.VisualStudioEng.MicroBuild.Core.targets" />
</Project>
+19
View File
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="SignFiles" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="packages\Microsoft.VisualStudioEng.MicroBuild.Core.0.4.1\build\Microsoft.VisualStudioEng.MicroBuild.Core.props" />
<PropertyGroup>
<BaseOutputDirectory>$(BUILD_STAGINGDIRECTORY)</BaseOutputDirectory>
<!-- These properties are required by MicroBuild, which only signs files that are under these paths -->
<IntermediateOutputPath>$(BaseOutputDirectory)</IntermediateOutputPath>
<OutDir>$(BaseOutputDirectory)</OutDir>
</PropertyGroup>
<ItemGroup>
<FilesToSign Include="$(OutDir)\vsix\cpptools-*.signature.p7s">
<Authenticode>VSCodePublisher</Authenticode>
</FilesToSign>
</ItemGroup>
<Import Project="packages\Microsoft.VisualStudioEng.MicroBuild.Core.0.4.1\build\Microsoft.VisualStudioEng.MicroBuild.Core.targets" />
</Project>
+4
View File
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.VisualStudioEng.MicroBuild.Core" version="0.4.1" developmentDependency="true" />
</packages>
+7 -1
View File
@@ -47,4 +47,10 @@ instructions provided by the bot. You will only need to do this once across all
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)
or contact [[email protected]](mailto:[email protected]) with any additional questions or comments.
or contact [[email protected]](mailto:[email protected]) with any additional questions or comments.
### Adding/Updating package.json dependencies
We maintain a public Azure Artifacts feed that we point the package manager to in .npmrc files. If you want to add a dependency or update a version in package.json, you may need to contact us so we can add it to our feed. Please ping our team in a PR or new issue if you experience this issue.
For local development, you can delete the .npmrc file and the matching `yarn.lock` file while you wait for us to update the feed. However, these changes will need to be reverted in your branch before we will accept a PR.
+2
View File
@@ -0,0 +1,2 @@
registry=https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/
always-auth=true
+40
View File
@@ -1,8 +1,48 @@
# C/C++ for Visual Studio Code Changelog
## Version 1.22.7: September 30, 2024
### Enhancement
* The .vsix and .js files are now signed. [#12725](https://github.com/microsoft/vscode-cpptools/issues/12725), [#12744](https://github.com/microsoft/vscode-cpptools/issues/12744)
### Bug Fixes
* Fix some Copilot-related issues. [PR #12773](https://github.com/microsoft/vscode-cpptools/pull/12773)
* Fix an issue preventing use of a full command line in `compilerPath`. [PR #12774](https://github.com/microsoft/vscode-cpptools/pull/12774)
* Fix an infinite loop on shutdown after changing the selected settings.
* Fix a crash (from `insert_lines`).
## Version 1.22.6: September 25, 2024
### Bug Fixes
* Fix an issue with usage of `#cpp` with Copilot chat. [vscode-copilot-release#1634](https://github.com/microsoft/vscode-copilot-release/issues/1634)
* Fix a performance regression with tag parsing.
* Fix a document buffer issue related to edits within files containing multi-byte characters.
## Version 1.22.5: September 24, 2024
### Enhancement
* Add the database path to the `C/C++: Log Diagnostics` output.
### Bug Fixes
* Fix some synchronization and crash issues with `handle_edits`. [#12747](https://github.com/microsoft/vscode-cpptools/issues/12747)
* Fix usage of `#cpp` with Copilot chat. [PR #12755](https://github.com/microsoft/vscode-cpptools/pull/12755)
* Fix some document buffer issues.
## Version 1.22.4: September 19, 2024
### Enhancements
* Performance improvements related to how custom configurations are processed. [#12632](https://github.com/microsoft/vscode-cpptools/issues/12632)
* Performance improvements related to LSP request processing.
### Bug Fixes
* Fix an issue with missing database symbols after a Rename operation. [#12480](https://github.com/microsoft/vscode-cpptools/issues/12480)
* Work around IntelliSense issues with clang 18 due to `size_t` not being defined. [#12618](https://github.com/microsoft/vscode-cpptools/issues/12618)
* Fix some crashes with recursive includes. [#12643](https://github.com/microsoft/vscode-cpptools/issues/12643)
* Possibly fix a crash in `find_existing_intellisense_client`. [#12666](https://github.com/microsoft/vscode-cpptools/issues/12666)
* Fix issues applying `files.exclude` settings when `C_Cpp.caseSensitiveFileSupport` is enabled. [#12672](https://github.com/microsoft/vscode-cpptools/issues/12672)
* Fix an issue with duplicate tag parsing occurring after a Rename operation. [#12728](https://github.com/microsoft/vscode-cpptools/issues/12728)
* Fix an issue causing unnecessary TU updates for files opened during a Rename operation, when `"files.refactoring.autoSave": false` is used.
## Version 1.22.3: September 12, 2024
### Enhancement
* Add support for providing additional context information to Copilot Chat. [PR #12685](https://github.com/microsoft/vscode-cpptools/pull/12685)
* Currently, it requires `"C_Cpp.experimentalFeatures": "enabled"` and typing `#cpp` in the chat.
### Bug Fixes
* Fix the compiler selection control not keeping the list in sync with contents of the textbox. [#7427](https://github.com/microsoft/vscode-cpptools/issues/7427)
+3 -143
View File
@@ -736,78 +736,7 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
---------------------------------------------------------
@microsoft/1ds-core-js 4.3.1 - MIT
https://github.com/microsoft/ApplicationInsights-JS#readme
copyright Microsoft 2018
Copyright (c) Microsoft Corporation
Copyright (c) Microsoft and contributors
Copyright (c) NevWare21 Solutions LLC and contributors
The MIT License (MIT)
Copyright (c) Microsoft Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
---------------------------------------------------------
---------------------------------------------------------
@microsoft/1ds-post-js 4.3.1 - MIT
https://github.com/microsoft/ApplicationInsights-JS#readme
copyright Microsoft 2018
copyright Microsoft 2020
copyright Microsoft 2018-2020
copyright Microsoft 2022 Simple
Copyright (c) Microsoft Corporation
Copyright (c) Microsoft and contributors
Copyright (c) NevWare21 Solutions LLC and contributors
The MIT License (MIT)
Copyright (c) Microsoft Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
---------------------------------------------------------
---------------------------------------------------------
@microsoft/applicationinsights-channel-js 3.3.1 - MIT
@microsoft/applicationinsights-channel-js 3.3.3 - MIT
https://github.com/microsoft/ApplicationInsights-JS#readme
Copyright (c) Microsoft Corporation
@@ -841,7 +770,7 @@ SOFTWARE.
---------------------------------------------------------
@microsoft/applicationinsights-common 3.3.1 - MIT
@microsoft/applicationinsights-common 3.3.3 - MIT
https://github.com/microsoft/ApplicationInsights-JS#readme
Copyright (c) Microsoft Corporation
@@ -875,7 +804,7 @@ SOFTWARE.
---------------------------------------------------------
@microsoft/applicationinsights-core-js 3.3.1 - MIT
@microsoft/applicationinsights-core-js 3.3.3 - MIT
https://github.com/microsoft/ApplicationInsights-JS#readme
Copyright (c) Microsoft Corporation
@@ -938,40 +867,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
---------------------------------------------------------
---------------------------------------------------------
@microsoft/applicationinsights-web-basic 3.3.1 - MIT
https://github.com/microsoft/ApplicationInsights-JS#readme
Copyright (c) Microsoft Corporation
Copyright (c) Microsoft and contributors
Copyright (c) NevWare21 Solutions LLC and contributors
The MIT License (MIT)
Copyright (c) Microsoft Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
---------------------------------------------------------
---------------------------------------------------------
@@ -1041,41 +936,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
---------------------------------------------------------
---------------------------------------------------------
@nevware21/ts-utils 0.11.3 - MIT
https://github.com/nevware21/ts-utils
Copyright (c) 2022 NevWare21 Solutions LLC
Copyright (c) 2023 NevWare21 Solutions LLC
Copyright (c) 2024 NevWare21 Solutions LLC
Copyright (c) NevWare21 Solutions LLC and contributors
MIT License
Copyright (c) 2022 NevWare21 Solutions LLC
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
---------------------------------------------------------
---------------------------------------------------------
+3 -2
View File
@@ -1,5 +1,6 @@
{
"defaults": [
"-D__building_module(x)=0",
"--pack_alignment",
"8",
"-Dunix=1",
@@ -11,5 +12,5 @@
"-D__SIZE_TYPE__=unsigned int",
"-D__WCHAR_TYPE__=long int"
],
"defaults_op" : "merge"
}
"defaults_op": "merge"
}
+3 -2
View File
@@ -1,5 +1,6 @@
{
"defaults": [
"-D__building_module(x)=0",
"--pack_alignment",
"8",
"-Dunix=1",
@@ -11,5 +12,5 @@
"-D__SIZE_TYPE__=long unsigned int",
"-D__WCHAR_TYPE__=int"
],
"defaults_op" : "merge"
}
"defaults_op": "merge"
}
+3 -2
View File
@@ -1,5 +1,6 @@
{
"defaults": [
"-D__building_module(x)=0",
"--pack_alignment",
"8",
"-Dunix=1",
@@ -11,5 +12,5 @@
"-D__SIZE_TYPE__=long unsigned int",
"-D__WCHAR_TYPE__=int"
],
"defaults_op" : "merge"
}
"defaults_op": "merge"
}
+3 -2
View File
@@ -1,5 +1,6 @@
{
"defaults": [
"-D__building_module(x)=0",
"--pack_alignment",
"8",
"-Dunix=1",
@@ -11,5 +12,5 @@
"-D__SIZE_TYPE__=unsigned int",
"-D__WCHAR_TYPE__=long int"
],
"defaults_op" : "merge"
}
"defaults_op": "merge"
}
+3 -2
View File
@@ -1,5 +1,6 @@
{
"defaults": [
"-D__building_module(x)=0",
"--pack_alignment",
"8",
"-D__APPLE__=1",
@@ -10,5 +11,5 @@
"-D__SIZE_TYPE__=unsigned int",
"-D__WCHAR_TYPE__=long int"
],
"defaults_op" : "merge"
}
"defaults_op": "merge"
}
+3 -2
View File
@@ -1,5 +1,6 @@
{
"defaults": [
"-D__building_module(x)=0",
"--pack_alignment",
"8",
"-D__APPLE__=1",
@@ -10,5 +11,5 @@
"-D__SIZE_TYPE__=long unsigned int",
"-D__WCHAR_TYPE__=int"
],
"defaults_op" : "merge"
}
"defaults_op": "merge"
}
+3 -2
View File
@@ -1,5 +1,6 @@
{
"defaults": [
"-D__building_module(x)=0",
"--pack_alignment",
"8",
"-D__APPLE__=1",
@@ -10,5 +11,5 @@
"-D__SIZE_TYPE__=long unsigned int",
"-D__WCHAR_TYPE__=int"
],
"defaults_op" : "merge"
}
"defaults_op": "merge"
}
+3 -2
View File
@@ -1,5 +1,6 @@
{
"defaults": [
"-D__building_module(x)=0",
"--pack_alignment",
"8",
"-D__APPLE__=1",
@@ -10,5 +11,5 @@
"-D__SIZE_TYPE__=unsigned int",
"-D__WCHAR_TYPE__=long int"
],
"defaults_op" : "merge"
}
"defaults_op": "merge"
}
+6 -6
View File
@@ -1410,7 +1410,7 @@
"Striktní režim je nekompatibilní se zpracováním oboru názvů std jako aliasu pro globální obor názvů.",
"v rozšíření makra %s %p",
"<NEZNÁMÝ>",
"",
null,
"[rozšíření makra %d není zobrazené]",
"v rozšíření makra v %p",
"neplatný název symbolického operandu %sq",
@@ -1505,7 +1505,7 @@
"Chyba příkazového řádku",
"vnitřní chyba",
"Vnitřní chyba",
null,
"-D",
null,
"Došlo k dosažení limitu chyb.",
"Smyčka interní chyby",
@@ -1524,7 +1524,7 @@
"převodní jazyk (7)",
"převodní jazyk (8)",
"převodní jazyk (9)",
null,
"PCH",
null,
null,
null,
@@ -1537,7 +1537,7 @@
"neplatný znak pro literál char16_t",
null,
"Nerozpoznaná konvence volání %s, musí být jednou z:",
null,
"%s",
null,
null,
"Nadřízený typ typu výčtu musí být integrální typ.",
@@ -2953,9 +2953,9 @@
"Neplatná hodnota sady pragma %s pro funkci s omezením AMP",
"Překrývající se specifikátory omezení nejsou povolené.",
"Specifikátory omezení destruktoru musejí pokrývat sjednocení specifikátorů omezení všech konstruktorů.",
"<error>",
"error",
"Pro nostdlib se vyžaduje aspoň jedno nucené použití.",
"<error-type>",
"error-type",
null,
null,
null,
+6 -6
View File
@@ -1410,7 +1410,7 @@
"Der Strict-Modus ist mit dem Behandeln des Namespaces \"std\" als Alias für den globalen Namespace inkompatibel.",
"In Erweiterung von Makro \"%s\" %p",
"<UNBEKANNT>",
"",
null,
"[%d Makroerweiterungen werden nicht angezeigt.]",
"In Makroerweiterung bei %p",
"Ungültiger symbolischer Operandname \"%sq\".",
@@ -1505,7 +1505,7 @@
"Befehlszeilenfehler",
"Interner Fehler.",
"Interner Fehler.",
null,
"-D",
null,
"Fehlerlimit erreicht.",
"Interne Fehlerschleife",
@@ -1524,7 +1524,7 @@
"Zwischensprache (7)",
"Zwischensprache (8)",
"Zwischensprache (9)",
null,
"PCH",
null,
null,
null,
@@ -1537,7 +1537,7 @@
"Ungültiges Zeichen für char16_t-Literal.",
null,
"Unbekannte Aufrufkonvention \"%s\", muss eine der folgenden Optionen sein:",
null,
"%s",
null,
null,
"Der zugrunde liegende Typ des Enumerationstyps muss ein integraler Typ sein.",
@@ -2953,9 +2953,9 @@
"Unzulässiger Wert für Pragmapaket \"%s\" für die auf AMP begrenzte Funktion.",
"Überlappende Einschränkungsspezifizierer sind unzulässig.",
"Die Einschränkungsspezifizierer des Destruktors müssen die Union der Einschränkungsspezifizierer für alle Konstruktoren abdecken.",
"<error>",
"Fehler",
"Für \"nostdlib\" ist mindestens eine erzwungene Verwendung erforderlich.",
"<error-type>",
"Fehlertyp",
null,
null,
null,
+6 -6
View File
@@ -1410,7 +1410,7 @@
"el modo strict no es compatible con el trato del espacio de nombres std como alias para el espacio de nombres global",
"en la expansión de macro '%s' %p,",
"<DESCONOCIDO>",
"",
null,
"[ las expansiones de macro %d no se muestran ]",
"en expansión de macro en %p",
"nombre de operando simbólico %sq no válido",
@@ -1505,7 +1505,7 @@
"Error de la línea de comandos",
"Error interno",
"Error interno",
null,
"-D",
null,
"Se ha alcanzado el límite de error.",
"Bucle de error interno",
@@ -1524,7 +1524,7 @@
"lenguaje intermedio (7)",
"lenguaje intermedio (8)",
"lenguaje intermedio (9)",
null,
"PCH",
null,
null,
null,
@@ -1537,7 +1537,7 @@
"carácter no válido para el literal char16_t",
null,
"convención de llamada %s no reconocida, debe ser una de las siguientes:",
null,
"%s",
null,
null,
"el tipo subyacente del tipo de enumeración debe ser un tipo entero",
@@ -2953,9 +2953,9 @@
"valor de pragma pack %s no válido para la función con restricción amp",
"no se permiten especificadores de restricción superpuestos",
"los especificadores de restricción del destructor deben cubrir la unión de los especificadores de restricción de todos los constructores",
"<error>",
"error",
"nostdlib requiere al menos un uso forzado",
"<error-type>",
"error-type",
null,
null,
null,
+6 -6
View File
@@ -1410,7 +1410,7 @@
"le mode strict est incompatible avec le traitement de namespace std en tant qu'alias pour l'espace de noms global",
"dans l'expansion macro '%s' %p",
"<Inconnu>",
"",
null,
"[ %d expansions macro non affichées ]",
"dans l'expansion macro à %p",
"nom d'opérande symbolique non valide %sq",
@@ -1505,7 +1505,7 @@
"Erreur de ligne de commande",
"erreur interne",
"Erreur interne",
null,
"-D",
null,
"Limitation d'erreur atteinte.",
"Boucle d'erreur interne",
@@ -1524,7 +1524,7 @@
"langage intermédiaire (7)",
"langage intermédiaire (8)",
"langage intermédiaire (9)",
null,
"PCH",
null,
null,
null,
@@ -1537,7 +1537,7 @@
"caractère non valide pour le littéral char16_t",
null,
"convention d'appel inconnue %s, doit être l'une des suivantes :",
null,
"%s",
null,
null,
"le type sous-jacent du type enum doit être un type intégral",
@@ -2953,9 +2953,9 @@
"valeur de pragma pack non conforme %s pour la fonction à restriction amp",
"spécificateurs de restriction en chevauchement non autorisés",
"les spécificateurs de restriction du destructeur doivent couvrir l'union des spécificateurs de restriction sur tous les constructeurs",
"<error>",
"erreur",
"nostdlib nécessite au moins un using forcé",
"<error-type>",
"type derreur",
null,
null,
null,
+14 -14
View File
@@ -453,15 +453,15 @@
"omissione di %sq non conforme allo standard",
"impossibile specificare il tipo restituito in una funzione di conversione",
"rilevato durante:",
"creazione di un'istanza del contesto %p1 del modello %nt1",
"generazione implicita del contesto %p1 del modello %nt1",
"creazione di un'istanza del contesto %nt %p",
"generazione implicita del contesto %nt %p",
"ricorsione eccessiva durante la creazione di un'istanza di %n",
"%sq non è una funzione o un membro dati statici",
"l'argomento di tipo %t1 è incompatibile con il parametro del modello di tipo %t2",
"non è possibile eseguire un'inizializzazione che richiede un tipo temporaneo o una conversione",
"se si dichiara %sq, il parametro della funzione verrà nascosto",
"il valore iniziale del riferimento a non const deve essere un lvalue",
"definizione implicita del contesto %p del modello %nt",
"definizione implicita del contesto %nt %p",
"'template' non consentito",
"%t non è un modello di classe",
null,
@@ -526,7 +526,7 @@
"chiamata funzione non const per l'oggetto const (anacronismo)",
"un'istruzione dipendente non può essere una dichiarazione",
"il tipo di un parametro non può essere void",
"creazione di un'istanza del contesto %p1 della classe %na1",
"creazione di un'istanza del contesto %na %p",
"elaborazione dell'elenco degli argomenti di modello per %na %p",
"operatore non consentito in un'espressione di argomento del modello",
"con il blocco try è richiesto almeno un gestore",
@@ -682,11 +682,11 @@
"directory PCH non valida: %s",
"previsto __except o __finally",
"un'istruzione __leave può essere utilizzata solo in un blocco __try",
"rilevato durante la creazione di un'istanza del contesto %p del modello %nt",
"rilevato durante la generazione implicita del contesto %p1 del modello %nt1",
"rilevato durante la creazione di un'istanza del contesto %p della classe %na",
"rilevato durante la creazione di un'istanza del contesto %nt %p",
"rilevato durante la generazione implicita del contesto %nt %p",
"rilevato durante la creazione di un'istanza del contesto %na %p",
"rilevato durante l'elaborazione dell'elenco degli argomenti di modello per %na %p",
"rilevato durante la definizione implicita del contesto %p1 del modello %nt1",
"rilevato durante la definizione implicita del contesto %nt %p",
"%sq non trovato nello stack di allineamento compressione",
"stack di allineamento compressione vuoto",
"è possibile utilizzare l'opzione RTTI solo quando si esegue la compilazione nel linguaggio C++",
@@ -1410,7 +1410,7 @@
"modalità strict incompatibile con lo spazio dei nomi std utilizzato come alias dello spazio dei nomi globale",
"nell'espansione della macro '%s' %p",
"<SCONOSCIUTO>",
"",
null,
"[ espansioni della macro %d non visualizzate ]",
"nell'espansione della macro in %p",
"nome di operando simbolico %sq non valido",
@@ -1505,7 +1505,7 @@
"Errore nella riga di comando",
"errore interno",
"Errore interno",
null,
"-D",
null,
"Limite di errore raggiunto.",
"Ciclo di errore interno",
@@ -1524,7 +1524,7 @@
"linguaggio intermedio (7)",
"linguaggio intermedio (8)",
"linguaggio intermedio (9)",
null,
"PCH",
null,
null,
null,
@@ -1537,7 +1537,7 @@
"carattere non valido per il valore letterale char16_t",
null,
"convenzione di chiamata %s non riconosciuta. Deve essere una delle seguenti:",
null,
"%s",
null,
null,
"il tipo sottostante del tipo enumerazione deve essere un tipo integrale",
@@ -2953,9 +2953,9 @@
"il valore %s del pacchetto pragma per la funzione con restrizioni AMP non è valido",
"gli identificatori di limitazione sovrapposti non sono consentiti",
"gli identificatori di limitazione del distruttore devono coprire l'unione degli identificatori di limitazione in tutti i costruttori",
"<error>",
"errore",
"con nostdlib è richiesta almeno un'opzione Forced Using",
"<error-type>",
"tipo di errore",
null,
null,
null,
+6 -6
View File
@@ -1410,7 +1410,7 @@
"strict モードはグローバル名前空間に対するエイリアスとしての名前空間 std の取り扱いと互換性がありません",
"マクロ '%s' %p の展開で、",
"<不明>",
"",
null,
"[ %d マクロの展開は示されていません ]",
"%p の場所でのマクロの展開で",
"シンボル オペランド名 %sq が無効です",
@@ -1505,7 +1505,7 @@
"コマンド ライン エラー",
"内部エラー",
"内部エラー",
null,
"-D",
null,
"エラーの上限に達しました。",
"内部エラー ループ",
@@ -1524,7 +1524,7 @@
"中間言語 (7)",
"中間言語 (8)",
"中間言語 (9)",
null,
"PCH",
null,
null,
null,
@@ -1537,7 +1537,7 @@
"char16_t リテラルには無効な文字です",
null,
"呼び出し規約 %s は認識されないため、次のいずれかを使用する必要があります:",
null,
"%s",
null,
null,
"列挙型の基になる型は整数型である必要があります",
@@ -2953,9 +2953,9 @@
"amp 制限関数に無効な pragma pack 値 %s ",
"重複した制限指定子は許可されていません",
"デストラクターの制限指定子は、すべてのコンストラクターの制限指定子の和集合を対象とする必要があります",
"<error>",
"エラー",
"nostdlib には少なくとも 1 つの強制された using が必要です",
"<error-type>",
"エラーの種類",
null,
null,
null,
+6 -6
View File
@@ -1410,7 +1410,7 @@
"strict 모드가 std 네임스페이스를 전역 네임스페이스에 대한 별칭으로 처리하는 방식과 호환되지 않습니다.",
"매크로 '%s' %p의 확장,",
"<알 수 없음>",
"",
null,
"[ %d 매크로 확장이 표시되지 않음 ]",
"%p의 매크로 확장",
"기호화된 피연산자 이름 %sq이(가) 잘못되었습니다.",
@@ -1505,7 +1505,7 @@
"명령줄 오류",
"내부 오류",
"내부 오류",
null,
"-D",
null,
"오류 한계에 도달했습니다.",
"내부 오류 루프",
@@ -1524,7 +1524,7 @@
"중간 언어 (7)",
"중간 언어 (8)",
"중간 언어 (9)",
null,
"PCH",
null,
null,
null,
@@ -1537,7 +1537,7 @@
"char16_t 리터럴에 대한 잘못된 문자",
null,
"인식할 수 없는 호출 규칙 %s, 다음 중 하나여야 함:",
null,
"%s",
null,
null,
"열거형 형식의 내부 형식은 정수 계열 형식이어야 합니다.",
@@ -2953,9 +2953,9 @@
"amp 제한 함수의 pragma pack 값 %s이(가) 잘못되었습니다.",
"겹치는 제한 지정자는 사용할 수 없습니다.",
"소멸자의 제한 지정자는 모든 생성자에 대한 제한 지정자의 공용 구조체를 지정해야 합니다.",
"<error>",
"오류",
"nostdlib에는 한 번 이상의 강제 사용이 필요합니다.",
"<error-type>",
"error-type",
null,
null,
null,
+6 -6
View File
@@ -1410,7 +1410,7 @@
"tryb z ograniczeniami jest niezgodny z traktowaniem przestrzeni nazw std jako aliasu dla globalnej przestrzeni nazw",
"w rozwinięciu makra „%s” %p",
"<NIEZNANE>",
"",
null,
"[liczba niewyświetlanych rozwinięć makr: %d]",
"w rozszerzeniu makra w położeniu %p",
"nieprawidłowa nazwa symboliczna argumentu operacji %sq",
@@ -1505,7 +1505,7 @@
"Błąd wiersza polecenia",
"błąd wewnętrzny",
"Błąd wewnętrzny",
null,
"-D",
null,
"Osiągnięto limit błędów.",
"Pętla błędu wewnętrznego",
@@ -1524,7 +1524,7 @@
"język pośredni (7)",
"język pośredni (8)",
"język pośredni (9)",
null,
"PCH",
null,
null,
null,
@@ -1537,7 +1537,7 @@
"nieprawidłowy znak dla literału char16_t",
null,
"nierozpoznana konwencja wywoływania %s. Musi ona być jedną z następujących:",
null,
"%s",
null,
null,
"typ bazowy typu wyliczenia musi być typem całkowitoliczbowym",
@@ -2953,9 +2953,9 @@
"niedozwolona wartość dyrektywy pragma pack %s dla funkcji z ograniczeniem amp",
"nakładające się specyfikatory ograniczenia są niedozwolone",
"specyfikatory ograniczenia destruktora muszą obejmować unię specyfikatorów ograniczenia na wszystkich konstruktorach",
"<error>",
"błąd",
"element nostdlib wymaga co najmniej jednego wymuszonego użycia",
"<error-type>",
"error-type",
null,
null,
null,
+6 -6
View File
@@ -1410,7 +1410,7 @@
"o modo estrito é incompatível com o tratamento do namespace padrão como um alias para o namespace global",
"na expansão da macro '%s' %p",
"<DESCONHECIDO>",
"",
null,
"[ %d expansões de macro não mostradas ]",
"na expansão da macro em %p",
"nome de operando simbólico inválido %sq",
@@ -1505,7 +1505,7 @@
"Erro de linha de comando",
"erro interno",
"Erro interno",
null,
"-D",
null,
"Limite de erro atingido.",
"Laço de erro interno",
@@ -1524,7 +1524,7 @@
"linguagem intermediária (7)",
"linguagem intermediária (8)",
"linguagem intermediária (9)",
null,
"PCH",
null,
null,
null,
@@ -1537,7 +1537,7 @@
"caractere inválido para literal char16_t",
null,
"convenção de chamadas não reconhecida %s, deve ser um dos:",
null,
"%s",
null,
null,
"o tipo subjacente da enumeração deve ser integral",
@@ -2953,9 +2953,9 @@
"valor do pacote pragma %s ilícito para a função restrita por amp",
"não é permitido sobrepor especificadores restritos",
"os especificadores restritos do destruidor devem conter a união dos especificadores restritos em todos os construtores",
"<error>",
"erro",
"o nostdlib exige pelo menos um uso forçado",
"<error-type>",
"tipo de erro",
null,
null,
null,
+6 -6
View File
@@ -1410,7 +1410,7 @@
"строгий режим несовместим с обработкой пространства имен std в качестве псевдонима для глобального пространства имен",
"в расширении макроса \"%s\" %p",
"<НЕТ ДАННЫХ>",
"",
null,
"[ расширение макроса \"%d\" не показано ]",
"в расширении макроса в %p",
"недопустимое имя символьного операнда %sq",
@@ -1505,7 +1505,7 @@
"Ошибка в командной строке",
"внутренняя ошибка",
"Внутренняя ошибка",
null,
"-D",
null,
"Достигнут предел ошибок.",
"Внутренний цикл ошибки",
@@ -1524,7 +1524,7 @@
"промежуточный язык (7)",
"промежуточный язык (8)",
"промежуточный язык (9)",
null,
"PCH",
null,
null,
null,
@@ -1537,7 +1537,7 @@
"недопустимый знак для литерала char16_t",
null,
"нераспознанное соглашение о вызовах %s; необходимо использовать одно из следующих:",
null,
"%s",
null,
null,
"базовый тип для перечисляемого типа должен быть целочисленным",
@@ -2953,9 +2953,9 @@
"Недопустимое значение pragma pack %s для функции со спецификатором ограничения amp.",
"перекрывающиеся описатели restrict запрещены",
"описатели restrict деструктора должны охватывать объединение описателей restrict всех конструкторов",
"<error>",
"ошибка",
"для nostdlib требуется по меньшей мере одна директива forced using",
"<error-type>",
"тип ошибки",
null,
null,
null,
+6 -6
View File
@@ -1410,7 +1410,7 @@
"katı mod, std ad uzayının genel ad uzayı için bir diğer ad olarak değerlendirilmesi ile uyumsuz",
"makro '%s' genişletilmesinde %p,",
"<UNKNOWN>",
"",
null,
"[%d makro genişletmesi gösterilmiyor ]",
"%p konumunda makro genişletmesinde",
"geçersiz sembolik işlenen adı %sq",
@@ -1505,7 +1505,7 @@
"Komut satırı hatası",
"iç hata",
"İç hata",
null,
"-D",
null,
"Hata sınırına ulaşıldı.",
"İç hata döngüsü",
@@ -1524,7 +1524,7 @@
"ara dil (7)",
"ara dil (8)",
"ara dil (9)",
null,
"PCH",
null,
null,
null,
@@ -1537,7 +1537,7 @@
"char16_t sabit değeri için geçersiz karakter",
null,
"çağrı kuralı %s tanınmıyor, şunlardan biri olmalıdır:",
null,
"%s",
null,
null,
"Sabit listesi türünün temel alınan türü bir tam sayı türü olmalıdır",
@@ -2953,9 +2953,9 @@
"AMP ile sınırlı işlev için pragma paket değeri (%s) geçersiz",
"örtüşen kısıtlama tanımlayıcılarına izin verilmiyor",
"yıkıcının kısıtlama tanımlayıcıları, tüm oluşturuculardaki kısıtlama tanımlayıcılarının birleşimini kapsamalıdır",
"<error>",
"hata",
"nostdlib en az bir zorunlu kullanım gerektirir",
"<error-type>",
"error-type",
null,
null,
null,
+6 -6
View File
@@ -1410,7 +1410,7 @@
"严格模式与将命名空间标准视为全局命名空间的别名不兼容",
"在宏“%s”%p 的扩展中",
"<未知>",
"",
null,
"[ %d 宏扩展未显示]",
"在 %p 的宏扩展中",
"符号操作数名称 %sq 无效",
@@ -1505,7 +1505,7 @@
"命令行错误",
"内部错误",
"内部错误",
null,
"-D",
null,
"达到错误限制。",
"内部错误循环",
@@ -1524,7 +1524,7 @@
"中间语言(7)",
"中间语言(8)",
"中间语言(9)",
null,
"PCH",
null,
null,
null,
@@ -1537,7 +1537,7 @@
"char16_t 文本的无效字符",
null,
"无法识别的调用约定 %s,必须为以下内容之一:",
null,
"%s",
null,
null,
"枚举类型的基础类型必须是整型",
@@ -2953,9 +2953,9 @@
"受 AMP 限制的函数的 pragma 包值 %s 非法",
"限制说明符不可重叠",
"析构函数的限制说明符必须包含所有构造函数的限制说明符的联合部分",
"<error>",
"错误",
"nostdlib 要求至少使用一个强制 using",
"<error-type>",
"error-type",
null,
null,
null,
+6 -6
View File
@@ -1410,7 +1410,7 @@
"strict 模式不相容,因為將命名空間 std 視為全域命名空間的別名",
"在巨集 '%s' %p 的展開中",
"<未知>",
"",
null,
"[ 未顯示 %d 個巨集展開 ]",
"在 %p 的巨集展開中",
"無效的符號運算元名稱 %sq",
@@ -1505,7 +1505,7 @@
"命令列錯誤",
"內部錯誤",
"內部錯誤",
null,
"-D",
null,
"已達錯誤限制。",
"內部錯誤迴圈",
@@ -1524,7 +1524,7 @@
"中繼語言 (7)",
"中繼語言 (8)",
"中繼語言 (9)",
null,
"PCH",
null,
null,
null,
@@ -1537,7 +1537,7 @@
"char16_t literal 的字元無效",
null,
"無法辨認的呼叫慣例 %s,必須是下列其中一個: ",
null,
"%s",
null,
null,
"列舉類型的基礎類型必須是整數類型",
@@ -2953,9 +2953,9 @@
"AMP 限制涵式中有不合法的 pragma 套件值 %s",
"不允許重疊的限制指定名稱",
"解構函式的限制規範必須涵蓋所有建構函式的限制規範聯集",
"<error>",
"error",
"nostdlib 至少需要一個強制 Using",
"<error-type>",
"error-type",
null,
null,
null,
+2 -1
View File
@@ -1,7 +1,8 @@
{
"defaults": [
"-D__building_module(x)=0",
"--pack_alignment",
"8"
],
"defaults_op": "merge"
}
}
+2 -1
View File
@@ -1,7 +1,8 @@
{
"defaults": [
"-D__building_module(x)=0",
"--pack_alignment",
"8"
],
"defaults_op": "merge"
}
}
+2 -1
View File
@@ -1,7 +1,8 @@
{
"defaults": [
"-D__building_module(x)=0",
"--pack_alignment",
"8"
],
"defaults_op": "merge"
}
}
+2 -1
View File
@@ -1,7 +1,8 @@
{
"defaults": [
"-D__building_module(x)=0",
"--pack_alignment",
"8"
],
"defaults_op": "merge"
}
}
+7 -5
View File
@@ -2,7 +2,7 @@
"name": "cpptools",
"displayName": "C/C++",
"description": "C/C++ IntelliSense, debugging, and code browsing.",
"version": "1.22.3-main",
"version": "1.22.7-main",
"publisher": "ms-vscode",
"icon": "LanguageCCPP_color_128x.png",
"readme": "README.md",
@@ -5864,7 +5864,7 @@
},
{
"command": "C_Cpp.LogDiagnostics",
"when": "editorLangId =~ /^(c|(cuda-)?cpp)$/ && !(config.C_Cpp.intelliSenseEngine =~ /^[dD]isabled$/)"
"when": "!(config.C_Cpp.intelliSenseEngine =~ /^[dD]isabled$/)"
},
{
"command": "C_Cpp.RescanWorkspace",
@@ -6451,8 +6451,10 @@
"userDescription": "%c_cpp.languageModelTools.configuration.userDescription%",
"modelDescription": "For the active C or C++ file, this tool provides: the language (C, C++, or CUDA), the language standard version (such as C++11, C++14, C++17, or C++20), the compiler (such as GCC, Clang, or MSVC), the target platform (such as x86, x64, or ARM), and the target architecture (such as 32-bit or 64-bit).",
"icon": "$(file-code)",
"parametersSchema": {},
"when": "(config.C_Cpp.experimentalFeatures =~ /^[eE]nabled$/)"
"when": "(config.C_Cpp.experimentalFeatures =~ /^[eE]nabled$/)",
"supportedContentTypes": [
"text/plain"
]
}
]
},
@@ -6468,7 +6470,7 @@
"compile": "yarn install && (yarn verify prep --quiet || yarn prep) && yarn build",
"watch": "yarn install && (yarn verify prep --quiet || yarn prep) && tsc --build tsconfig.json --watch",
"rebuild": "yarn install && yarn clean && yarn prep && yarn build",
"vscode:prepublish": "yarn install && yarn clean && yarn webpack",
"vsix-prepublish": "yarn install && yarn clean && yarn webpack",
"webpack": "yarn install && (yarn verify prep --quiet || yarn prep) && tsc --build ui.tsconfig.json && webpack --mode production --env vscode_nls",
"generate-native-strings": "ts-node -T ./.scripts/generateNativeStrings.ts",
"generate-options-schema": "ts-node -T ./.scripts/generateOptionsSchema.ts",
@@ -144,7 +144,7 @@ export class CodeActionProvider implements vscode.CodeActionProvider {
if (codeActionCodeInfo !== undefined) {
if (codeActionCodeInfo.fixAllTypeCodeAction !== undefined &&
(codeActionCodeInfo.uriToInfo.size > 1 ||
codeActionCodeInfo.uriToInfo.values().next().value.numValidWorkspaceEdits > 1)) {
(codeActionCodeInfo.uriToInfo.values().next().value?.numValidWorkspaceEdits ?? 0) > 1)) {
// Only show the "fix all type" if there is more than one fix for the type.
fixCodeActions.push(codeActionCodeInfo.fixAllTypeCodeAction);
}
@@ -161,7 +161,7 @@ export class CodeActionProvider implements vscode.CodeActionProvider {
if (codeActionCodeInfo.removeAllTypeCodeAction !== undefined &&
codeActionCodeInfo.uriToInfo.size > 0 &&
(codeActionCodeInfo.uriToInfo.size > 1 ||
codeActionCodeInfo.uriToInfo.values().next().value.identifiers.length > 1)) {
(codeActionCodeInfo.uriToInfo.values().next().value?.identifiers?.length ?? 0) > 1)) {
// Only show the "clear all type" if there is more than one fix for the type.
removeAllTypeAvailable = true;
}
+84 -113
View File
@@ -246,15 +246,6 @@ interface CompileCommandsPaths extends WorkspaceFolderParams {
paths: string[];
}
interface QueryTranslationUnitSourceParams extends WorkspaceFolderParams {
uri: string;
ignoreExisting: boolean;
}
interface QueryTranslationUnitSourceResult {
candidates: string[];
}
interface GetDiagnosticsResult {
diagnostics: string;
}
@@ -554,7 +545,6 @@ export interface ChatContextResult {
const PreInitializationRequest: RequestType<void, string, void> = new RequestType<void, string, void>('cpptools/preinitialize');
const InitializationRequest: RequestType<CppInitializationParams, void, void> = new RequestType<CppInitializationParams, void, void>('cpptools/initialize');
const QueryCompilerDefaultsRequest: RequestType<QueryDefaultCompilerParams, configs.CompilerDefaults, void> = new RequestType<QueryDefaultCompilerParams, configs.CompilerDefaults, void>('cpptools/queryCompilerDefaults');
const QueryTranslationUnitSourceRequest: RequestType<QueryTranslationUnitSourceParams, QueryTranslationUnitSourceResult, void> = new RequestType<QueryTranslationUnitSourceParams, QueryTranslationUnitSourceResult, void>('cpptools/queryTranslationUnitSource');
const SwitchHeaderSourceRequest: RequestType<SwitchHeaderSourceParams, string, void> = new RequestType<SwitchHeaderSourceParams, string, void>('cpptools/didSwitchHeaderSource');
const GetDiagnosticsRequest: RequestType<void, GetDiagnosticsResult, void> = new RequestType<void, GetDiagnosticsResult, void>('cpptools/getDiagnostics');
export const GetDocumentSymbolRequest: RequestType<GetDocumentSymbolRequestParams, GetDocumentSymbolResult, void> = new RequestType<GetDocumentSymbolRequestParams, GetDocumentSymbolResult, void>('cpptools/getDocumentSymbols');
@@ -744,7 +734,7 @@ export interface Client {
onRegisterCustomConfigurationProvider(provider: CustomConfigurationProvider1): Thenable<void>;
updateCustomConfigurations(requestingProvider?: CustomConfigurationProvider1): Thenable<void>;
updateCustomBrowseConfiguration(requestingProvider?: CustomConfigurationProvider1): Thenable<void>;
provideCustomConfiguration(docUri: vscode.Uri, requestFile?: string, replaceExisting?: boolean): Promise<void>;
provideCustomConfiguration(docUri: vscode.Uri): Promise<void>;
logDiagnostics(): Promise<void>;
rescanFolder(): Promise<void>;
toggleReferenceResultsView(): void;
@@ -800,7 +790,7 @@ export interface Client {
getShowConfigureIntelliSenseButton(): boolean;
setShowConfigureIntelliSenseButton(show: boolean): void;
addTrustedCompiler(path: string): Promise<void>;
getIncludes(maxDepth: number): Promise<GetIncludesResult>;
getIncludes(maxDepth: number, token: vscode.CancellationToken): Promise<GetIncludesResult>;
getChatContext(token: vscode.CancellationToken): Promise<ChatContextResult>;
}
@@ -838,6 +828,7 @@ export class DefaultClient implements Client {
public lastCustomBrowseConfiguration: PersistentFolderState<WorkspaceBrowseConfiguration | undefined> | undefined;
public lastCustomBrowseConfigurationProviderId: PersistentFolderState<string | undefined> | undefined;
public lastCustomBrowseConfigurationProviderVersion: PersistentFolderState<Version> | undefined;
public currentCaseSensitiveFileSupport: PersistentWorkspaceState<boolean> | undefined;
private registeredProviders: PersistentFolderState<string[]> | undefined;
private configStateReceived: ConfigStateReceived = { compilers: false, compileCommands: false, configProviders: undefined, timeout: false };
@@ -1457,6 +1448,9 @@ export class DefaultClient implements Client {
const workspaceSettings: CppSettings = new CppSettings();
const workspaceOtherSettings: OtherSettings = new OtherSettings();
const workspaceFolderSettingsParams: WorkspaceFolderSettingsParams[] = this.getAllWorkspaceFolderSettings();
if (this.currentCaseSensitiveFileSupport && workspaceSettings.isCaseSensitiveFileSupportEnabled !== this.currentCaseSensitiveFileSupport.Value) {
void util.promptForReloadWindowDueToSettingsChange();
}
return {
filesAssociations: workspaceOtherSettings.filesAssociations,
workspaceFallbackEncoding: workspaceOtherSettings.filesEncoding,
@@ -1484,7 +1478,7 @@ export class DefaultClient implements Client {
}
private async createLanguageClient(): Promise<void> {
const currentCaseSensitiveFileSupport: PersistentWorkspaceState<boolean> = new PersistentWorkspaceState<boolean>("CPP.currentCaseSensitiveFileSupport", false);
this.currentCaseSensitiveFileSupport = new PersistentWorkspaceState<boolean>("CPP.currentCaseSensitiveFileSupport", false);
let resetDatabase: boolean = false;
const serverModule: string = getLanguageServerFileName();
const exeExists: boolean = fs.existsSync(serverModule);
@@ -1527,9 +1521,9 @@ export class DefaultClient implements Client {
}
const workspaceSettings: CppSettings = new CppSettings();
if (workspaceSettings.isCaseSensitiveFileSupportEnabled !== currentCaseSensitiveFileSupport.Value) {
if (workspaceSettings.isCaseSensitiveFileSupportEnabled !== this.currentCaseSensitiveFileSupport.Value) {
resetDatabase = true;
currentCaseSensitiveFileSupport.Value = workspaceSettings.isCaseSensitiveFileSupportEnabled;
this.currentCaseSensitiveFileSupport.Value = workspaceSettings.isCaseSensitiveFileSupportEnabled;
}
const cacheStoragePath: string = util.getCacheStoragePath();
@@ -1867,9 +1861,6 @@ export class DefaultClient implements Client {
}
await this.clearCustomConfigurations();
await Promise.all([
...[...this.trackedDocuments].map(([_uri, document]) => this.provideCustomConfiguration(document.uri, undefined, true))
]);
}
public async updateCustomBrowseConfiguration(requestingProvider?: CustomConfigurationProvider1): Promise<void> {
@@ -2019,68 +2010,42 @@ export class DefaultClient implements Client {
return this.languageClient.sendNotification(RescanFolderNotification);
}
public async provideCustomConfiguration(docUri: vscode.Uri, requestFile?: string, replaceExisting?: boolean): Promise<void> {
public async provideCustomConfiguration(docUri: vscode.Uri): Promise<void> {
const onFinished: () => void = () => {
if (requestFile) {
void this.languageClient.sendNotification(FinishedRequestCustomConfig, { uri: requestFile });
}
void this.languageClient.sendNotification(FinishedRequestCustomConfig, { uri: docUri.toString() });
};
const providerId: string | undefined = this.configurationProvider;
if (!providerId) {
onFinished();
return;
}
const provider: CustomConfigurationProvider1 | undefined = getCustomConfigProviders().get(providerId);
if (!provider || !provider.isReady) {
onFinished();
return;
}
try {
DefaultClient.isStarted.reset();
const resultCode = await this.provideCustomConfigurationAsync(docUri, requestFile, replaceExisting, provider);
const providerId: string | undefined = this.configurationProvider;
if (!providerId) {
return;
}
const provider: CustomConfigurationProvider1 | undefined = getCustomConfigProviders().get(providerId);
if (!provider || !provider.isReady) {
return;
}
const resultCode = await this.provideCustomConfigurationAsync(docUri, provider);
telemetry.logLanguageServerEvent('provideCustomConfiguration', { providerId, resultCode });
} finally {
onFinished();
DefaultClient.isStarted.resolve();
}
}
private async provideCustomConfigurationAsync(docUri: vscode.Uri, requestFile: string | undefined, replaceExisting: boolean | undefined, provider: CustomConfigurationProvider1): Promise<string> {
private async provideCustomConfigurationAsync(docUri: vscode.Uri, provider: CustomConfigurationProvider1): Promise<string> {
const tokenSource: vscode.CancellationTokenSource = new vscode.CancellationTokenSource();
const params: QueryTranslationUnitSourceParams = {
uri: docUri.toString(),
ignoreExisting: !!replaceExisting,
workspaceFolderUri: this.RootUri?.toString()
};
const response: QueryTranslationUnitSourceResult = await this.languageClient.sendRequest(QueryTranslationUnitSourceRequest, params);
if (!response.candidates || response.candidates.length === 0) {
// If we didn't receive any candidates, no configuration is needed.
return "noCandidates";
}
// 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<SourceFileConfigurationItem[] | undefined> = async () => {
const uris: vscode.Uri[] = [];
for (let i: number = 0; i < response.candidates.length; ++i) {
const candidate: string = response.candidates[i];
const tuUri: vscode.Uri = vscode.Uri.parse(candidate);
try {
if (await provider.canProvideConfiguration(tuUri, tokenSource.token)) {
uris.push(tuUri);
}
} catch (err) {
console.warn("Caught exception from canProvideConfiguration");
try {
if (!await provider.canProvideConfiguration(docUri, tokenSource.token)) {
return [];
}
}
if (!uris.length) {
return [];
} catch (err) {
console.warn("Caught exception from canProvideConfiguration");
}
let configs: util.Mutable<SourceFileConfigurationItem>[] = [];
try {
configs = await provider.provideConfigurations(uris, tokenSource.token);
configs = await provider.provideConfigurations([docUri], tokenSource.token);
} catch (err) {
console.warn("Caught exception from provideConfigurations");
}
@@ -2128,39 +2093,42 @@ export class DefaultClient implements Client {
try {
const configs: SourceFileConfigurationItem[] | undefined = await this.callTaskWithTimeout(provideConfigurationAsync, configProviderTimeout, tokenSource);
if (configs && configs.length > 0) {
this.sendCustomConfigurations(configs, provider.version, requestFile !== undefined);
this.sendCustomConfigurations(configs, provider.version);
} else {
result = "noConfigurations";
}
} catch (err) {
result = "timeout";
if (!requestFile) {
const settings: CppSettings = new CppSettings(this.RootUri);
if (settings.isConfigurationWarningsEnabled && !this.isExternalHeader(docUri) && !vscode.debug.activeDebugSession) {
const dismiss: string = localize("dismiss.button", "Dismiss");
const disable: string = localize("disable.warnings.button", "Disable Warnings");
const configName: string | undefined = this.configuration.CurrentConfiguration?.name;
if (!configName) {
return "noConfigName";
}
let message: string = localize("unable.to.provide.configuration",
"{0} is unable to provide IntelliSense configuration information for '{1}'. Settings from the '{2}' configuration will be used instead.",
provider.name, docUri.fsPath, configName);
if (err) {
message += ` (${err})`;
}
const settings: CppSettings = new CppSettings(this.RootUri);
if (settings.isConfigurationWarningsEnabled && !this.isExternalHeader(docUri) && !vscode.debug.activeDebugSession) {
const dismiss: string = localize("dismiss.button", "Dismiss");
const disable: string = localize("disable.warnings.button", "Disable Warnings");
const configName: string | undefined = this.configuration.CurrentConfiguration?.name;
if (!configName) {
return "noConfigName";
}
let message: string = localize("unable.to.provide.configuration",
"{0} is unable to provide IntelliSense configuration information for '{1}'. Settings from the '{2}' configuration will be used instead.",
provider.name, docUri.fsPath, configName);
if (err) {
message += ` (${err})`;
}
if (await vscode.window.showInformationMessage(message, dismiss, disable) === disable) {
settings.toggleSetting("configurationWarnings", "enabled", "disabled");
}
if (await vscode.window.showInformationMessage(message, dismiss, disable) === disable) {
settings.toggleSetting("configurationWarnings", "enabled", "disabled");
}
}
}
return result;
}
private async handleRequestCustomConfig(requestFile: string): Promise<void> {
await this.provideCustomConfiguration(vscode.Uri.file(requestFile), requestFile);
private handleRequestCustomConfig(file: string): void {
const uri: vscode.Uri = vscode.Uri.file(file);
const client: Client = clients.getClientFor(uri);
if (client instanceof DefaultClient) {
const defaultClient: DefaultClient = client as DefaultClient;
void defaultClient.provideCustomConfiguration(uri).catch(logAndReturn.undefined);
}
}
private isExternalHeader(uri: vscode.Uri): boolean {
@@ -2238,29 +2206,17 @@ export class DefaultClient implements Client {
await this.languageClient.sendNotification(DidOpenNotification, params);
}
public async getIncludes(maxDepth: number): Promise<GetIncludesResult> {
public async getIncludes(maxDepth: number, token: vscode.CancellationToken): Promise<GetIncludesResult> {
const params: GetIncludesParams = { maxDepth: maxDepth };
await this.ready;
return this.languageClient.sendRequest(IncludesRequest, params);
return DefaultClient.withLspCancellationHandling(
() => this.languageClient.sendRequest(IncludesRequest, params, token), token);
}
public async getChatContext(token: vscode.CancellationToken): Promise<ChatContextResult> {
await withCancellation(this.ready, token);
let result: ChatContextResult;
try {
result = await this.languageClient.sendRequest(CppContextRequest, null, token);
} catch (e: any) {
if (e instanceof ResponseError && (e.code === RequestCancelled || e.code === ServerCancelled)) {
throw new vscode.CancellationError();
}
throw e;
}
if (token.isCancellationRequested) {
throw new vscode.CancellationError();
}
return result;
return DefaultClient.withLspCancellationHandling(
() => this.languageClient.sendRequest(CppContextRequest, null, token), token);
}
/**
@@ -2342,6 +2298,26 @@ export class DefaultClient implements Client {
this.dispatching.resolve();
}
private static async withLspCancellationHandling<T>(task: () => Promise<T>, token: vscode.CancellationToken): Promise<T> {
let result: T;
try {
result = await task();
} catch (e: any) {
if (e instanceof ResponseError && (e.code === RequestCancelled || e.code === ServerCancelled)) {
throw new vscode.CancellationError();
} else {
throw e;
}
}
if (token.isCancellationRequested) {
throw new vscode.CancellationError();
}
return result;
}
private callTaskWithTimeout<T>(task: () => Thenable<T>, ms: number, cancelToken?: vscode.CancellationTokenSource): Promise<T> {
let timer: NodeJS.Timeout;
@@ -2382,13 +2358,7 @@ export class DefaultClient implements Client {
this.languageClient.onNotification(CompileCommandsPathsNotification, (e) => void this.promptCompileCommands(e));
this.languageClient.onNotification(ReferencesNotification, (e) => this.processReferencesPreview(e));
this.languageClient.onNotification(ReportReferencesProgressNotification, (e) => this.handleReferencesProgress(e));
this.languageClient.onNotification(RequestCustomConfig, (requestFile: string) => {
const client: Client = clients.getClientFor(vscode.Uri.file(requestFile));
if (client instanceof DefaultClient) {
const defaultClient: DefaultClient = client as DefaultClient;
void defaultClient.handleRequestCustomConfig(requestFile);
}
});
this.languageClient.onNotification(RequestCustomConfig, (e) => this.handleRequestCustomConfig(e));
this.languageClient.onNotification(IntelliSenseResultNotification, (e) => this.handleIntelliSenseResult(e));
this.languageClient.onNotification(PublishRefactorDiagnosticsNotification, publishRefactorDiagnostics);
RegisterCodeAnalysisNotifications(this.languageClient);
@@ -3074,7 +3044,7 @@ export class DefaultClient implements Client {
util.isOptionalArrayOfString(input.configuration.forcedInclude);
}
private sendCustomConfigurations(configs: any, providerVersion: Version, wasRequested: boolean): void {
private sendCustomConfigurations(configs: any, providerVersion: Version): void {
// configs is marked as 'any' because it is untrusted data coming from a 3rd-party. We need to sanitize it before sending it to the language server.
if (!configs || !(configs instanceof Array)) {
console.warn("discarding invalid SourceFileConfigurationItems[]: " + configs);
@@ -3140,9 +3110,10 @@ export class DefaultClient implements Client {
workspaceFolderUri: this.RootUri?.toString()
};
if (wasRequested) {
void this.languageClient.sendNotification(CustomConfigurationHighPriorityNotification, params).catch(logAndReturn.undefined);
}
// We send the higher priority notification to ensure we don't deadlock if the request is blocking the queue.
// We send the normal priority notification to avoid a race that could result in a redundant request when racing with
// the reset of custom configurations.
void this.languageClient.sendNotification(CustomConfigurationHighPriorityNotification, params).catch(logAndReturn.undefined);
void this.languageClient.sendNotification(CustomConfigurationNotification, params).catch(logAndReturn.undefined);
}
@@ -4088,7 +4059,7 @@ class NullClient implements Client {
onRegisterCustomConfigurationProvider(provider: CustomConfigurationProvider1): Thenable<void> { return Promise.resolve(); }
updateCustomConfigurations(requestingProvider?: CustomConfigurationProvider1): Thenable<void> { return Promise.resolve(); }
updateCustomBrowseConfiguration(requestingProvider?: CustomConfigurationProvider1): Thenable<void> { return Promise.resolve(); }
provideCustomConfiguration(docUri: vscode.Uri, requestFile?: string, replaceExisting?: boolean): Promise<void> { return Promise.resolve(); }
provideCustomConfiguration(docUri: vscode.Uri): Promise<void> { return Promise.resolve(); }
logDiagnostics(): Promise<void> { return Promise.resolve(); }
rescanFolder(): Promise<void> { return Promise.resolve(); }
toggleReferenceResultsView(): void { }
@@ -4147,6 +4118,6 @@ class NullClient implements Client {
getShowConfigureIntelliSenseButton(): boolean { return false; }
setShowConfigureIntelliSenseButton(show: boolean): void { }
addTrustedCompiler(path: string): Promise<void> { return Promise.resolve(); }
getIncludes(): Promise<GetIncludesResult> { return Promise.resolve({} as GetIncludesResult); }
getIncludes(maxDepth: number, token: vscode.CancellationToken): Promise<GetIncludesResult> { return Promise.resolve({} as GetIncludesResult); }
getChatContext(token: vscode.CancellationToken): Promise<ChatContextResult> { return Promise.resolve({} as ChatContextResult); }
}
@@ -594,7 +594,7 @@ export class CppProperties {
configuration.intelliSenseMode === "${default}") {
return "";
}
const resolvedCompilerPath: string = this.resolvePath(configuration.compilerPath);
const resolvedCompilerPath: string = this.resolvePath(configuration.compilerPath, false, false);
const settings: CppSettings = new CppSettings(this.rootUri);
const compilerPathAndArgs: util.CompilerPathAndArgs = util.extractCompilerPathAndArgs(!!settings.legacyCompilerArgsBehavior, resolvedCompilerPath);
@@ -1877,8 +1877,7 @@ export class CppProperties {
// Check for path-related squiggles.
const paths: string[] = [];
let compilerPath: string | undefined;
for (const pathArray of [currentConfiguration.browse ? currentConfiguration.browse.path : undefined,
currentConfiguration.includePath, currentConfiguration.macFrameworkPath]) {
for (const pathArray of [currentConfiguration.browse ? currentConfiguration.browse.path : undefined, currentConfiguration.includePath, currentConfiguration.macFrameworkPath]) {
if (pathArray) {
for (const curPath of pathArray) {
paths.push(`${curPath}`);
+51 -4
View File
@@ -33,6 +33,13 @@ import { CppSettings } from './settings';
import { LanguageStatusUI, getUI } from './ui';
import { makeLspRange, rangeEquals, showInstallCompilerWalkthrough } from './utils';
interface CopilotApi {
registerRelatedFilesProvider(
providerId: { extensionId: string; languageId: string },
callback: (uri: vscode.Uri, token: vscode.CancellationToken) => Promise<{ entries: vscode.Uri[]; traits?: { name: string; value: string }[] }>
): vscode.Disposable;
}
nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })();
const localize: nls.LocalizeFunc = nls.loadMessageBundle();
export const CppSourceStr: string = "C/C++";
@@ -183,7 +190,8 @@ export async function activate(): Promise<void> {
void clients.ActiveClient.ready.then(() => intervalTimer = global.setInterval(onInterval, 2500));
registerCommands(true);
const isRelatedFilesApiEnabled = await telemetry.isExperimentEnabled("CppToolsRelatedFilesApi");
registerCommands(true, isRelatedFilesApiEnabled);
vscode.tasks.onDidStartTask(() => getActiveClient().PauseCodeAnalysis());
@@ -254,6 +262,23 @@ export async function activate(): Promise<void> {
const tool = vscode.lm.registerTool('cpptools-lmtool-configuration', new CppConfigurationLanguageModelTool());
disposables.push(tool);
}
if (isRelatedFilesApiEnabled) {
const api = await getCopilotApi();
if (util.extensionContext && api) {
try {
for (const languageId of ['c', 'cpp', 'cuda-cpp']) {
api.registerRelatedFilesProvider(
{ extensionId: util.extensionContext.extension.id, languageId },
async (_uri: vscode.Uri, token: vscode.CancellationToken) =>
({ entries: (await clients.ActiveClient.getIncludes(1, token))?.includedFiles.map(file => vscode.Uri.file(file)) ?? [] })
);
}
} catch {
console.log("Failed to register Copilot related files provider.");
}
}
}
}
export function updateLanguageConfigurations(): void {
@@ -350,7 +375,7 @@ function onInterval(): void {
/**
* registered commands
*/
export function registerCommands(enabled: boolean): void {
export function registerCommands(enabled: boolean, isRelatedFilesApiEnabled: boolean): void {
commandDisposables.forEach(d => d.dispose());
commandDisposables.length = 0;
commandDisposables.push(vscode.commands.registerCommand('C_Cpp.SwitchHeaderSource', enabled ? onSwitchHeaderSource : onDisabledCommand));
@@ -408,7 +433,10 @@ export function registerCommands(enabled: boolean): void {
commandDisposables.push(vscode.commands.registerCommand('C_Cpp.ExtractToFreeFunction', enabled ? () => onExtractToFunction(true, false) : onDisabledCommand));
commandDisposables.push(vscode.commands.registerCommand('C_Cpp.ExtractToMemberFunction', enabled ? () => onExtractToFunction(false, true) : onDisabledCommand));
commandDisposables.push(vscode.commands.registerCommand('C_Cpp.ExpandSelection', enabled ? (r: Range) => onExpandSelection(r) : onDisabledCommand));
commandDisposables.push(vscode.commands.registerCommand('C_Cpp.getIncludes', enabled ? (maxDepth: number) => getIncludes(maxDepth) : () => Promise.resolve()));
if (!isRelatedFilesApiEnabled) {
commandDisposables.push(vscode.commands.registerCommand('C_Cpp.getIncludes', enabled ? (maxDepth: number) => getIncludes(maxDepth) : () => Promise.resolve()));
}
}
function onDisabledCommand() {
@@ -1375,6 +1403,25 @@ export async function preReleaseCheck(): Promise<void> {
}
export async function getIncludes(maxDepth: number): Promise<any> {
const includes = await clients.ActiveClient.getIncludes(maxDepth);
const tokenSource = new vscode.CancellationTokenSource();
const includes = await clients.ActiveClient.getIncludes(maxDepth, tokenSource.token);
tokenSource.dispose();
return includes;
}
async function getCopilotApi(): Promise<CopilotApi | undefined> {
const copilotExtension = vscode.extensions.getExtension<CopilotApi>('github.copilot');
if (!copilotExtension) {
return undefined;
}
if (!copilotExtension.isActive) {
try {
return await copilotExtension.activate();
} catch {
return undefined;
}
} else {
return copilotExtension.exports;
}
}
+7 -6
View File
@@ -44,14 +44,15 @@ const knownValues: { [Property in keyof ChatContextResult]?: { [id: string]: str
}
};
class StringLanguageModelToolResult implements vscode.LanguageModelToolResult {
public constructor(public readonly value: string) { }
public toString(): string { return this.value; }
}
const plainTextContentType = 'text/plain';
export class CppConfigurationLanguageModelTool implements vscode.LanguageModelTool {
public async invoke(_parameters: any, token: vscode.CancellationToken): Promise<vscode.LanguageModelToolResult> {
return new StringLanguageModelToolResult(await this.getContext(token));
public async invoke(options: vscode.LanguageModelToolInvocationOptions, token: vscode.CancellationToken): Promise<vscode.LanguageModelToolResult> {
const result: vscode.LanguageModelToolResult = {};
if (options.requestedContentTypes.includes(plainTextContentType)) {
result[plainTextContentType] = await this.getContext(token);
}
return result;
}
private async getContext(token: vscode.CancellationToken): Promise<string> {
@@ -43,7 +43,6 @@ export function createProtocolFilter(): Middleware {
client.sendDidChangeSettings();
document = await vscode.languages.setTextDocumentLanguage(document, "cpp");
}
await client.provideCustomConfiguration(document.uri, undefined);
// client.takeOwnership() will call client.TrackedDocuments.add() again, but that's ok. It's a Set.
client.onDidOpenTextDocument(document);
client.takeOwnership(document);
@@ -52,8 +51,7 @@ export function createProtocolFilter(): Middleware {
// For a file already open when we activate, sometimes we don't get any notifications about visible
// or active text editors, visible ranges, or text selection. As a workaround, we trigger
// onDidChangeVisibleTextEditors here, only for the first file opened.
if (!anyFileOpened)
{
if (!anyFileOpened) {
anyFileOpened = true;
const cppEditors: vscode.TextEditor[] = vscode.window.visibleTextEditors.filter(e => util.isCpp(e.document));
await client.onDidChangeVisibleTextEditors(cppEditors);
+2 -1
View File
@@ -146,7 +146,8 @@ export async function activate(context: vscode.ExtensionContext): Promise<CppToo
if (shouldActivateLanguageServer) {
await LanguageServer.activate();
} else if (isIntelliSenseEngineDisabled) {
LanguageServer.registerCommands(false);
const isRelatedFilesApiEnabled = await Telemetry.isExperimentEnabled("CppToolsRelatedFilesApi");
LanguageServer.registerCommands(false, isRelatedFilesApiEnabled);
// The check here for isIntelliSenseEngineDisabled avoids logging
// the message on old Macs that we've already displayed a warning for.
log(localize("intellisense.disabled", "intelliSenseEngine is disabled"));
+1483 -1487
View File
File diff suppressed because it is too large Load Diff