Compare commits

..
Author SHA1 Message Date
Sean McManus 248788d4f6 Merge pull request #13542 from microsoft/main
Merge for 1.25.1
2025-04-22 09:41:05 -07:00
Luca 92a34d51b1 codesnippets v2 changes (#13525) 2025-04-22 03:00:49 -07:00
Sean McManus 964bc5b6bd Update version and changelog for 1.25.1. (#13524)
* Update version and changelog for 1.25.1.
2025-04-21 18:56:11 -07:00
Sean McManus ab79eedf6f Localization update (#13540)
* Localization - Translated Strings
* Fixes.
2025-04-21 17:20:19 -07:00
Sean McManus c21a214fc4 Fix translations export. (#13539) 2025-04-21 13:58:34 -07:00
Bob Brown 97ef1aa99d Don't show bogus errors for compilerPath + args in config UI (#13531) 2025-04-17 16:52:55 -07:00
Sean McManus 799d09f41f Fix some loc bugs. (#13522)
* Fix some loc bugs.
* Fix newlines at end of files in json.
2025-04-17 12:51:30 -07:00
Bob Brown 04bc6c8294 No error message shown in config UI for invalid compilerPath (#13529) 2025-04-17 11:12:26 -07:00
Sean McManus 4355f92dd8 Merge pull request #13488 from microsoft/main
Merge for 1.25.0 (2nd time)
2025-04-10 16:09:14 -07:00
Sean McManus 86332db0ed Merge pull request #13482 from microsoft/main
Merger for 1.25.0 (pre-release)
2025-04-10 08:37:52 -07:00
Sean McManus ee2fb39cb8 Merge pull request #13429 from microsoft/main
Merge for 1.24.4 (2nd time)
2025-03-26 14:20:09 -07:00
Sean McManus 7d58a314d9 Merge pull request #13419 from microsoft/main
Merge for 1.24.4
2025-03-26 11:10:08 -07:00
Colen Garoutte-Carson 2acdea1cc9 Merge pull request #13387 from microsoft/main 2025-03-18 15:14:59 -07:00
Sean McManus d24f781721 Merge pull request #13384 from microsoft/main
Merge for 1.24.3 (pre-release)
2025-03-18 13:23:26 -07:00
Colen Garoutte-Carson 399d558522 Merge pull request #13346 from microsoft/main 2025-03-06 15:21:29 -08:00
Sean McManus 0fd436f3ef Merge pull request #13280 from microsoft/main
Merge for 1.24.1
2025-02-13 15:03:59 -08:00
Sean McManus b6e18b00a9 Merge pull request #13271 from microsoft/main
Merge for 1.24.0 (2nd time)
2025-02-11 06:55:18 -08:00
Sean McManus cb3964f78e Merge pull request #13267 from microsoft/main
Fix Copilot hover reprompting. (#13266)
2025-02-10 11:51:03 -08:00
Sean McManus 50b4cd3bd5 Merge pull request #13257 from microsoft/main
Merge for 1.24.0 (2nd time)
2025-02-07 16:22:41 -08:00
Sean McManus 161f02dc49 Merge pull request #13250 from microsoft/seanmcm/1_24_0_insiders
Merge for 1.24.0
2025-02-07 13:42:21 -08:00
Sean McManus c48729b0e4 Merge branch 'main' into seanmcm/1_24_0_insiders 2025-02-06 21:18:02 -08:00
Sean McManus e7dff799fd Merge pull request #13179 from microsoft/seanmcm/1_23_4_cherrypicks2
More cherry picks for 1.23.4
2025-01-21 16:31:21 -08:00
Sean McManus ec41c3e481 Add a changelog entry. (#13177) 2025-01-21 16:30:13 -08:00
[email protected] 71cf89ce70 [Auto] Localization - Translated Strings (#13027) 2025-01-21 16:14:44 -08:00
Sean McManus f7863066f3 Merge pull request #13168 from microsoft/seanmcm/cherryPick1_23_4
Cherry-pick for 1.23.4
2025-01-17 18:21:21 -08:00
Sean McManus 0c2862c379 Update changelog for 1.23.4 (3rd time) (#13164)
* Update changelog (3rd time).
* Minor TPN changes.
2025-01-17 18:13:23 -08:00
Sean McManus 6026c84c6f Merge pull request #13163 from microsoft/main
Merge for 1.23.4 (2nd time)
2025-01-16 10:46:23 -08:00
Sean McManus e3ee2ee76a Merge pull request #13156 from microsoft/main
Merge for 1.23.4 (pre-release)
2025-01-15 15:44:30 -08:00
Sean McManus ff1cd88466 Merge pull request #13136 from microsoft/main
Merge for 1.23.3 (pre-release)
2025-01-08 14:04:36 -08:00
Colen Garoutte-Carson 98696368f4 Merge pull request #13025 from microsoft/main 2024-12-05 12:45:31 -08:00
Sean McManus 99d98afcec Merge pull request #13021 from microsoft/main
Merge to insiders for 1.23.2
2024-12-04 20:04:33 -08:00
Sean McManus 784f1450c0 Merge pull request #12939 from microsoft/main
Update changelog. (#12938)
2024-11-06 13:56:23 -08:00
Sean McManus 7d26dd1c4f Merge pull request #12932 from microsoft/main
Merge for 1.23.1
2024-11-05 17:29:22 -08:00
Sean McManus 381d69646b Merge pull request #12900 from microsoft/main
Merge for 1.23.0 (2nd time)
2024-10-29 13:02:21 -07:00
Sean McManus bfa36bc662 Merge pull request #12886 from microsoft/main
Merge for 1.23.0 (2nd time)
2024-10-24 16:59:12 -07:00
Sean McManus 5cbe83ec44 Merge pull request #12877 from microsoft/main
Preliminary merge for 1.23.0
2024-10-22 17:02:44 -07:00
Colen Garoutte-Carson d41ccfd497 Merge pull request #12818 from microsoft/main 2024-10-07 18:05:23 -07:00
Sean McManus c8b7f13c1a Merge pull request #12791 from microsoft/main
Merge for 1.22.7
2024-09-30 16:12:32 -07:00
Colen Garoutte-Carson 8d0d3601a7 Merge pull request #12770 from microsoft/main 2024-09-25 15:46:38 -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
Colen Garoutte-Carson 3570705b5c Merge pull request #12742 from microsoft/main 2024-09-19 16:12:27 -07:00
Colen Garoutte-Carson 096b1463a6 Merge pull request #12740 from microsoft/main 2024-09-19 15:32:11 -07:00
Colen Garoutte-Carson 812318163d Merge pull request #12738 from microsoft/main 2024-09-19 15:04:30 -07:00
Colen Garoutte-Carson 225b776d99 Merge pull request #12734 from microsoft/main 2024-09-18 14:30:06 -07:00
Colen Garoutte-Carson 12d95f4708 Merge pull request #12707 from microsoft/main 2024-09-12 12:23:00 -07:00
Sean McManus 317df57496 Merge pull request #12658 from microsoft/main
Merge for 1.22.2
2024-08-29 19:31:09 -07:00
Sean McManus f63c3652f8 Merge pull request #12654 from microsoft/main
Merge for 1.22.1
2024-08-29 13:36:59 -07:00
Sean McManus 5d62607760 Merge pull request #12633 from microsoft/main
Merge for 1.22.0 (2nd time)
2024-08-26 15:23:50 -07:00
Sean McManus 26d0932972 Merge pull request #12610 from microsoft/main
Merge for 1.22.0 (pre-release)
2024-08-21 14:05:26 -07:00
Sean McManus 825033f768 Merge pull request #12467 from microsoft/main
Merge for 1.21.1 (pre-release)
2024-07-12 11:50:25 -07:00
Sean McManus d8426caacc Merge pull request #12389 from microsoft/main
Fix crash from loc message mismatch. (#12388)
2024-06-17 14:36:02 -07:00
Sean McManus 8942530744 Merge pull request #12386 from microsoft/main
Update changelog date. (#12385)
2024-06-17 11:03:29 -07:00
Sean McManus e663939e56 Merge pull request #12374 from microsoft/seanmcm/1_21_0_insiders
Merge for 1.21.0
2024-06-13 19:22:14 -07:00
Sean McManus 1fb5b63ab7 Merge branch 'main' into seanmcm/1_21_0_insiders 2024-06-13 14:47:55 -07:00
Sean McManus fd482d2169 Merge pull request #12274 from microsoft/seanmcm/1_20_4_cherrypick
Updates for 1.20.4 (#12273)
2024-05-02 11:16:42 -07:00
Sean McManus 2fafd831e5 Updates for 1.20.4 (#12273)
* Don't use the crash handler on macOS < 19.
* Update version and changelog.
2024-05-02 10:14:49 -07:00
Sean McManus 1ceae9d4ed Merge pull request #12266 from microsoft/seanmcm/1_20_3_cherryPicks
Cherry-picks for 1.20.3
2024-04-30 16:18:52 -07:00
Sean McManus d4d5d4551f Update version and changelog for 1.20.3 (#12245)
* Update version and changelog for 1.20.3
2024-04-30 13:11:53 -07:00
Sean McManus 0ef77b5616 Improvements to crash call stack logging. (#12247)
* Updates to crash call stack logging.
* Move crash logging to its own channel.
2024-04-30 13:11:10 -07:00
Sean McManus efdc8e90f6 Merge pull request #12235 from microsoft/seanmcm/1_20_2_cherryPicks2
Cherry-picks for 1.20.2
2024-04-19 17:17:01 -07:00
Sean McManus 9f020e9258 Update changelog for 1.20.2 (2nd time) (#12228)
* Update changelog
2024-04-19 16:57:13 -07:00
Bob Brown c058568767 rename the property again (#12233)
* rename the property again

* fail
2024-04-19 16:57:00 -07:00
browntarik 8809e69e91 Remove redundant variable resolution in handleSquiggles and fix error messaging for env and delimited paths under include paths in c_cpp_properties.json (#12188)
* remove redundant variable resolution

* fix lint

* remove resolveVariable redundancies

* change when resolve and split happens

* fix lint

* Resolve error checking for environment vars and delimited paths

* remove "path" from error messaging

* Adjust error messaging

* remove stray comment

* refactor error messaging + minor fix

* resolve lint

* Fix multi path squiggle regression

* Remove resolvedPath redundancies

* Refactor error messaging and squiggling

* Revert and improve error squiggling behavior

* fix linting

* properly proccess glob patterns + minor fixes

* fix comment positions

* Refactor error message + minor fix

* Fix telemetry metric + minor fix
2024-04-19 16:56:46 -07:00
Sean McManus 7af5c40dd0 Handle multiple cpptools-srv crashes. (#12225) 2024-04-19 16:56:33 -07:00
Sean McManus 1d2bd10691 Merge pull request #12223 from microsoft/main
Fix SettingsTracking treating numerical loggingLevel as invalid. (#12…
2024-04-18 15:11:30 -07:00
Sean McManus dac96fe852 Merge pull request #12209 from microsoft/main
Merge for 1.20.2
2024-04-16 18:43:48 -07:00
Sean McManus a1487e5e79 Merge pull request #12185 from microsoft/main
Merge for 1.20.1
2024-04-09 17:07:29 -07:00
Sean McManus 6f19496172 Merge pull request #12138 from microsoft/main
Merge for 1.20.0
2024-03-26 14:12:18 -07:00
Colen Garoutte-Carson 76ccb791ff Merge pull request #11947 from microsoft/main 2024-02-09 17:16:17 -08:00
Colen Garoutte-Carson a5a5735089 Merge pull request #11942 from microsoft/main 2024-02-08 17:07:45 -08:00
Sean McManus 5077edf585 Merge pull request #11886 from microsoft/main
Merge for 1.19.2 (2nd time)
2024-01-19 18:08:55 -08:00
Colen Garoutte-Carson f38926f8b1 Merge pull request #11874 from microsoft/main 2024-01-16 17:41:23 -08:00
Sean McManus 30de9bcc27 Merge pull request #11725 from microsoft/main
Update for 1.19.1 (#11724)
2023-11-21 17:12:17 -08:00
Sean McManus 100e2e0828 Merge pull request #11699 from microsoft/main
Merge for 1.19.0
2023-11-16 18:39:02 -08:00
Sean McManus e3b41771c6 Merge pull request #11639 from microsoft/main
Merge for 1.18.2 (2nd time)
2023-11-08 12:34:50 -08:00
Sean McManus 3f7f3090f6 Merge pull request #11633 from microsoft/main
Merge for 1.18.2
2023-11-07 15:59:34 -08:00
Sean McManus 4149493f2c Merge pull request #11607 from microsoft/main
Merge for 1.18.1
2023-11-01 17:55:01 -07:00
Sean McManus 43aad3f65c Merge pull request #11528 from microsoft/main
Update changelog (2nd time) (#11527)
2023-10-12 17:21:18 -07:00
Sean McManus bedcacb0a1 Merge pull request #11526 from microsoft/main
Merge for 1.18.0
2023-10-12 14:58:49 -07:00
Sean McManus a5f8f84b43 Merge pull request #11303 from microsoft/main
Merge for 1.17.1
2023-08-08 17:51:04 -07:00
Sean McManus e53b190380 Merge pull request #11253 from microsoft/main
Merge (again) for 1.17.0
2023-07-26 16:56:43 -07:00
Michelle Matias 1846fd4001 Merge pull request #11250 from microsoft/main 2023-07-26 14:15:17 -07:00
Colen Garoutte-Carson 62e09945e3 Merge pull request #11241 from microsoft/main 2023-07-24 17:32:28 -07:00
Michelle Matias c9b0db02fd Merge pull request #11230 from microsoft/main
Merge 1.17.0
2023-07-21 14:08:21 -07:00
Michelle Matias 51da619eec Merge pull request #11099 from microsoft/main
1.16.1 pre-release
2023-06-15 21:19:13 -07:00
Michelle Matias 3eb50568e9 Merge pull request #10986 from microsoft/main
[Auto] Localization - Translated Strings (#10889)
2023-05-22 13:53:52 -07:00
Michelle Matias 866b145645 Merge pull request #10975 from microsoft/main
1.16.0 pre-release
2023-05-19 15:52:02 -07:00
Sean McManus 9762fe5397 Merge pull request #10862 from microsoft/main
Merge for 1.15.3 (2nd time)
2023-04-21 19:00:16 -07:00
Sean McManus 377896c30a Merge pull request #10846 from microsoft/main
Merge for 1.15.3
2023-04-20 18:55:05 -07:00
Michelle Matias 98f13a6f11 Merge pull request #10815 from microsoft/main
Don't put the compiler selection in the global settings if using the …
2023-04-12 17:57:26 -07:00
Michelle Matias 0d85aea687 Merge pull request #10813 from microsoft/main
Revert walkthrough doc links until walkthrough is published (#10812)
2023-04-12 15:51:05 -07:00
Sean McManus 25d2b76514 Merge pull request #10811 from microsoft/main
Merge for 1.15.2
2023-04-12 11:03:43 -07:00
Sean McManus 42dfef3f6b Merge pull request #10728 from microsoft/main
Merge for 1.15.1
2023-03-22 11:43:15 -07:00
Sean McManus 1ce1e9cd71 Merge pull request #10716 from microsoft/main
Update changelog for 1.15.1. (#10708)
2023-03-21 09:53:45 -07:00
Sean McManus 65163966d5 Merge pull request #10679 from microsoft/main
Merge for 1.15.0
2023-03-15 17:17:35 -07:00
Sean McManus edf8e0a155 Merge pull request #10504 from microsoft/main
Merge for 1.14.2 (2nd time)
2023-02-09 16:30:37 -08:00
Sean McManus 4083075476 Merge pull request #10501 from microsoft/main
Merge for 1.14.2
2023-02-09 14:26:59 -08:00
Michelle Matias b745ebc218 Merge pull request #10453 from microsoft/main
1.14.1 pre-release merge
2023-02-01 14:29:00 -08:00
Michelle Matias b69d17a0f5 Merge pull request #10378 from microsoft/seanmcm/1_14_0_insiders
Merge for 1.14.0
2023-01-11 20:00:38 -08:00
Sean McManus be8b6fb693 Merge branch 'main' into seanmcm/1_14_0_insiders 2023-01-11 19:07:54 -08:00
42 changed files with 236 additions and 482 deletions
+1 -1
View File
@@ -27,7 +27,7 @@
"editor.formatOnSave": true,
"editor.defaultFormatter": "vscode.json-language-features",
"editor.tabSize": 4,
"files.insertFinalNewline": true
"files.insertFinalNewline": false
},
"[jsonc]": {
"editor.formatOnSave": true,
+12 -1
View File
@@ -1,11 +1,22 @@
# C/C++ for Visual Studio Code Changelog
## Version 1.25.1: April 22, 2025
### Enhancement
* Add a configuration warning message explaining why paths in quotes can't be found. [#11955](https://github.com/microsoft/vscode-cpptools/issues/11955)
### Bug Fixes
* Fix no error appearing in the configuration UI when an invalid `compilerPath` is used. [#12661](https://github.com/microsoft/vscode-cpptools/issues/12661)
* Fix the 'Debug C/C++ File' button sometimes disappearing. [#13400](https://github.com/microsoft/vscode-cpptools/issues/13400)
* Fix some cases of a tag parser crash with `read_double`. [#13435](https://github.com/Microsoft/vscode-cpptools/issues/13435)
* Fix issues with the `recursiveIncludes` properties in the configuration UI editor. [PR #13498](https://github.com/microsoft/vscode-cpptools/pull/13498)
* Update clang-tidy and clang-format from 20.1.2 to 20.1.3 (which has some bug fixes).
* Fix some translation issues.
## Version 1.25.0: April 10, 2025
### Enhancement
* Improve the description of the `C_Cpp.copilotHover` setting. [PR #13461](https://github.com/microsoft/vscode-cpptools/pull/13461)
### Bug Fixes
* Fix a crash during tag parsing (in `read_double`). [#13435](https://github.com/Microsoft/vscode-cpptools/issues/13435)
* Fix the handling of default file associations for certain file extensions. [PR #13455](https://github.com/microsoft/vscode-cpptools/pull/13455)
* Fix shell parsing of the arguments of a full command line in `compilerPath`. [PR #13468](https://github.com/microsoft/vscode-cpptools/pull/13468)
* Fix C and CUDA files being interpreted as C++ in `compile_commands.json`. [#13471](https://github.com/microsoft/vscode-cpptools/issues/13471)
@@ -14,6 +14,7 @@
"cannot.find": "无法找到: {0}",
"cannot.resolve.compiler.path": "输入无效,无法解析编译器路径",
"path.is.not.a.file": "路径不是文件: {0}",
"wrapped.with.quotes": "Do not add extra quotes around paths.",
"path.is.not.a.directory": "路径不是目录: {0}",
"duplicate.name": "{0} 重复。配置名称应是唯一的。",
"multiple.paths.not.allowed": "不允许使用多个路径。",
@@ -13,7 +13,7 @@
"edit.configurations.json": "C/C++: 编辑配置(JSON)",
"check.the.schema": "转到 {0},详细了解 C/C++ 属性。",
"cpp.properties.schema.reference": "C/C++ 属性架构参考",
"view.schema.reference": "属性架构引用",
"view.schema.reference": "属性架构参考",
"intellisense.configurations": "IntelliSense 配置",
"intellisense.configurations.description": "使用此编辑器编辑在基础 {0} 文件中定义的 IntelliSense 设置。在此编辑器中所做的更改仅适用于所选的配置。要一次编辑多个配置,请转到 {1}。",
"configuration.name": "配置名称",
@@ -67,10 +67,10 @@
"limit.symbols.checkbox": "如果为 {0} (或已勾选),则标记分析器将仅分析在 {1} 中由源文件直接或间接包含的代码文件。如果为 {2} (或未选中),标记分析器将分析在 {3} 列表内指定路径中找到的所有代码文件。",
"database.filename": "浏览: 数据库文件名",
"database.filename.description": "所生成的符号数据库的路径。这指示扩展将标记分析器的符号数据库保存在工作区默认存储位置以外的其他位置。如果指定了相对路径,则它将相对于工作区的默认存储位置(而不是工作区文件夹本身)。{0} 变量可用于指定相对于工作区文件夹的路径(例如 {1})。",
"recursiveIncludes.reduce": "Recursive includes: reduce",
"recursiveIncludes.reduce": "递归包括: 缩减",
"recursiveIncludes.reduce.description": "设置为 {0} 可将提供给 IntelliSense 的递归包含路径数减少到仅限当前由 #include 语句引用的路径。这需要首先分析文件以确定包含哪些文件。设置为 {1} 可将所有递归包含路径提供给 IntelliSense。当涉及到大量递归包含路径时,减少递归包含路径的数量可能会提高 IntelliSense 性能。如果不减少递归包含路径的数量,则可以通过避免需要分析文件以确定要提供的包含路径来提高 IntelliSense 性能。",
"recursiveIncludes.priority": "递归包括: 优先级",
"recursiveIncludes.priority.description": "递归包含路径的优先级。如果设置为 {0},则将在系统包含路径之前搜索递归包含路径。如果设置为 {1},则将在系统包含路径之后搜索递归包含路径。",
"recursiveIncludes.order": "Recursive includes: order",
"recursiveIncludes.order": "递归包括: 顺序",
"recursiveIncludes.order.description": "搜索递归包含路径下子目录的顺序。"
}
@@ -14,6 +14,7 @@
"cannot.find": "找不到: {0}",
"cannot.resolve.compiler.path": "輸入無效,無法解析編譯器路徑",
"path.is.not.a.file": "路徑不是檔案: {0}",
"wrapped.with.quotes": "Do not add extra quotes around paths.",
"path.is.not.a.directory": "路徑不是目錄: {0}",
"duplicate.name": "{0} 重複。組態名稱應該是唯一的。",
"multiple.paths.not.allowed": "不允許使用多個路徑。",
@@ -67,10 +67,10 @@
"limit.symbols.checkbox": "若為 {0} (或已選取),標籤剖析器只會剖析 {1} 中原始程式檔直接或間接包含的程式碼檔。若為 {2} (或未選取),標籤剖析器會剖析在 {3} 清單中的指定路徑找到的所有程式碼檔。",
"database.filename": "瀏覽: 資料庫檔案名稱",
"database.filename.description": "產生符號資料庫路徑。這會指示延伸模組將標籤剖析器的符號資料庫儲存在工作區預設儲存位置以外的某處。如果指定了相對路徑,就會是相對於工作區預設儲存位置 (非工作區資料夾本身) 的路徑。{0} 變數可用於指定相對於工作區資料夾的路徑 (例如 {1})。",
"recursiveIncludes.reduce": "Recursive includes: reduce",
"recursiveIncludes.reduce": "遞迴包含: 減少",
"recursiveIncludes.reduce.description": "設定為 {0},可使 IntelliSense 僅提供目前由 #include 陳述式參考的遞迴包含路徑。這需要先剖析檔案,以確定包含哪些檔案。設定為 {1} 以將所有遞迴包含路徑提供給 IntelliSense。當涉及非常大量的遞迴包含路徑時,減少遞迴包含路徑數目可能會改善 IntelliSense 的效能。不減少遞迴包含路徑的數量,可避免需要剖析檔案以決定要提供哪些包含路徑,從而 IntelliSense 效能。",
"recursiveIncludes.priority": "遞迴包含: 優先順序",
"recursiveIncludes.priority.description": "遞迴包含路徑的優先順序。如果設定為 {0},則會在系統包含路徑之前搜尋遞迴包含路徑。如果設定為 {1},則會在系統包含路徑之後搜尋遞迴包含路徑。",
"recursiveIncludes.order": "Recursive includes: order",
"recursiveIncludes.order": "遞迴包含: 順序",
"recursiveIncludes.order.description": "搜尋遞迴包含路徑下子目錄的順序。"
}
@@ -14,6 +14,7 @@
"cannot.find": "Nepovedlo se najít: {0}",
"cannot.resolve.compiler.path": "Neplatný vstup, nedá se přeložit cesta ke kompilátoru.",
"path.is.not.a.file": "Cesta není soubor: {0}",
"wrapped.with.quotes": "Do not add extra quotes around paths.",
"path.is.not.a.directory": "Cesta není adresář: {0}",
"duplicate.name": "{0} je duplicitní. Název konfigurace by měl být jedinečný.",
"multiple.paths.not.allowed": "Více cest není povoleno.",
@@ -67,10 +67,10 @@
"limit.symbols.checkbox": "Když se nastaví na {0} (nebo zaškrtne), analyzátor značek bude parsovat jen soubory kódů, které přímo nebo nepřímo zahrnul zdrojový soubor v {1}. Když se nastaví na {2} (nebo nezaškrtne), analyzátor značek bude parsovat všechny soubory kódů nalezené na cestách zadaných v seznamu {3}.",
"database.filename": "Procházení: název souboru databáze",
"database.filename.description": "Cesta k vygenerované databázi symbolů. Na základě této možnosti bude rozšíření ukládat databázi symbolů analyzátoru značek někam jinam než do výchozího umístění úložiště pracovního prostoru. Pokud se zadá relativní cesta, bude relativní vzhledem k výchozímu umístění úložiště pracovního prostoru, nikoli k samotné složce pracovního prostoru. Pokud chcete zadat cestu relativní ke složce pracovního prostoru (třeba {1}), dá se použít proměnná {0}.",
"recursiveIncludes.reduce": "Recursive includes: reduce",
"recursiveIncludes.reduce": "Rekurzivní soubory k zahrnutí: snížení",
"recursiveIncludes.reduce.description": "Nastavením na {0} se počet cest rekurzivních souborů k zahrnutí poskytovaných funkci IntelliSense vždy sníží pouze na ty cesty, na které aktuálně odkazují příkazy #include. K tomu je potřeba nejdříve analyzovat soubory a zjistit, které soubory jsou zahrnuty. Nastavením na {1} poskytnete funkci IntelliSense všechny cesty rekurzivních souborů k zahrnutí. Snížení počtu cest rekurzivních souborů k zahrnutí může zlepšit výkon funkce IntelliSense, pokud se jedná o velmi velký počet cest souborů k zahrnutí. Nesnižování počtu cest rekurzivních souborů k zahrnutí může zlepšit výkon funkce IntelliSense, protože se vyhnete nutnosti analyzovat soubory a určit, které cesty souborů k zahrnutí je třeba poskytnout.",
"recursiveIncludes.priority": "Rekurzivní soubory k zahrnutí: priorita",
"recursiveIncludes.priority.description": "Priorita cest rekurzivních souborů zahrnutí Pokud je nastavená hodnota {0}, budou se cesty rekurzivních souborů k zahrnutí prohledávat před cestami systémových souborů k zahrnutí. Pokud je nastavená hodnota {1}, budou se cesty rekurzivních souborů k zahrnutí prohledávat po cestách systémových souborů k zahrnutí.",
"recursiveIncludes.order": "Recursive includes: order",
"recursiveIncludes.order.description": "Pořadí, ve kterém se prohledávají podadresáře v cestách rekurzivních souborů k zahrnutí"
"recursiveIncludes.order": "Rekurzivní soubory k zahrnutí: pořadí",
"recursiveIncludes.order.description": "Pořadí, ve kterém se prohledávají podadresáře v cestách rekurzivních souborů k zahrnutí."
}
@@ -14,6 +14,7 @@
"cannot.find": "Nicht gefunden: {0}",
"cannot.resolve.compiler.path": "Ungültige Eingabe, Compilerpfad kann nicht aufgelöst werden.",
"path.is.not.a.file": "Der Pfad ist keine Datei: {0}",
"wrapped.with.quotes": "Do not add extra quotes around paths.",
"path.is.not.a.directory": "Der Pfad ist kein Verzeichnis: {0}",
"duplicate.name": "\"{0}\" ist ein Duplikat. Der Konfigurationsname muss eindeutig sein.",
"multiple.paths.not.allowed": "Mehrere Pfade sind nicht zulässig.",
@@ -67,10 +67,10 @@
"limit.symbols.checkbox": "Wenn {0} (oder aktiviert) ist, analysiert der Tagparser nur Codedateien, die direkt oder indirekt von einer Quelldatei in {1} eingeschlossen wurden. Wenn {2} (oder nicht aktiviert) ist, analysiert der Tagparser alle Codedateien, die in den in der {3} Liste angegebenen Pfaden gefunden wurden.",
"database.filename": "Durchsuchen: Datenbankdateiname",
"database.filename.description": "Der Pfad zur generierten Symboldatenbank. Hiermit wird die Erweiterung angewiesen, die Symboldatenbank des Tagparsers an einem anderen Speicherort als dem Standardspeicherort des Arbeitsbereichs zu speichern. Bei Angabe eines relativen Pfads wird dieser relativ zum Standardspeicherort des Arbeitsbereichs und nicht zum Arbeitsbereichsordner selbst erstellt. Die Variable „{0}“ kann verwendet werden, um einen Pfad relativ zum Arbeitsbereichsordner (Beispiel: {1}) anzugeben.",
"recursiveIncludes.reduce": "Recursive includes: reduce",
"recursiveIncludes.reduce": "Rekursive Umfasst: Reduzieren",
"recursiveIncludes.reduce.description": "Legen Sie diese Option auf „{0}“ fest, um die Anzahl der rekursiven Includepfade, die für IntelliSense bereitgestellt werden, auf die Pfade zu verringern, auf die derzeit von #include-Anweisungen verwiesen wird. Dazu müssen zuerst die Dateien analysiert werden, um zu bestimmen, welche Dateien eingeschlossen werden. Legen Sie diese Option auf „{1}“ fest, um alle rekursiven Includepfade für IntelliSense bereitzustellen. Wenn Sie die Anzahl rekursiver Includepfade verringern, kann sich die Leistung von IntelliSense verbessern, wenn eine sehr große Anzahl rekursiver Includepfade betroffen ist. Wenn Sie die Anzahl rekursiver Includepfade nicht verringern, kann die Leistung von IntelliSense verbessert werden, da die Dateien nicht analysiert werden müssen, um zu bestimmen, welche Includepfade bereitgestellt werden sollen.",
"recursiveIncludes.priority": "„Rekursiv“ umfasst: Priorität",
"recursiveIncludes.priority.description": "Die Priorität rekursiver Includepfade. Wenn sie auf „{0}“ festgelegt ist, werden die rekursiven Includepfade vor den systemseitigen Includepfaden durchsucht. Wenn sie auf „{1}“ festgelegt ist, werden die rekursiven Includepfade nach den systemseitigen Includepfaden durchsucht.",
"recursiveIncludes.order": "Recursive includes: order",
"recursiveIncludes.order": "Rekursiv umfasst: Reihenfolge",
"recursiveIncludes.order.description": "Die Reihenfolge, in der Unterverzeichnisse unter rekursiven Includepfaden durchsucht werden."
}
@@ -14,6 +14,7 @@
"cannot.find": "No se encuentra {0}",
"cannot.resolve.compiler.path": "Entrada no válida. No se puede resolver la ruta de acceso del compilador.",
"path.is.not.a.file": "La ruta de acceso no es un archivo: {0}",
"wrapped.with.quotes": "Do not add extra quotes around paths.",
"path.is.not.a.directory": "La ruta de acceso no es un directorio: {0}",
"duplicate.name": "{0} es un duplicado. El nombre de la configuración debe ser único.",
"multiple.paths.not.allowed": "No se permiten varias rutas de acceso.",
@@ -67,10 +67,10 @@
"limit.symbols.checkbox": "Cuando {0} (o activado), el analizador de etiquetas solo analizará los archivos de código que un archivo de código fuente haya incluido directa o indirectamente en {1}. Cuando {2} (o no está activado), el analizador de etiquetas analizará todos los archivos de código que se encuentran en las rutas de acceso especificadas en la lista de {3} .",
"database.filename": "Examinar: nombre del archivo de base de datos",
"database.filename.description": "La ruta de acceso a la base de datos de símbolos generada. Esto indica a la extensión que guarde la base de datos de símbolos del analizador de etiquetas en una ubicación distinta de la ubicación de almacenamiento predeterminada del área de trabajo. Si se especifica una ruta de acceso relativa, será relativa a la ubicación de almacenamiento predeterminada del área de trabajo, no a la carpeta del área de trabajo en sí. La variable {0} se puede usar para especificar una ruta de acceso relativa a la carpeta del área de trabajo (por ejemplo, {1}).",
"recursiveIncludes.reduce": "Recursive includes: reduce",
"recursiveIncludes.reduce": "Inclusiones recursivas: orden: reducción",
"recursiveIncludes.reduce.description": "Establézcalo en {0} para reducir siempre el número de rutas de inclusión recursivas proporcionadas a IntelliSense solo a aquellas rutas a las que hacen referencia actualmente las instrucciones #include. Esto requiere primero analizar los archivos para determinar qué archivos se incluyen. Establézcalo en {1} para proporcionar todas las rutas de inclusión recursivas a IntelliSense. Reducir el número de rutas de inclusiones recursivas puede mejorar el rendimiento de IntelliSense cuando hay un gran número de rutas de inclusión recursivas involucradas. No reducir el número de rutas de inclusión recursivas puede mejorar el rendimiento de IntelliSense al evitar la necesidad de analizar archivos para determinar qué rutas de inclusión proporcionar.",
"recursiveIncludes.priority": "Inclusión recursiva: prioridad",
"recursiveIncludes.priority.description": "La prioridad de las rutas de acceso de inclusión recursivas. Si se establece en {0}, se buscarán las rutas de inclusión recursivas antes que las rutas de inclusión del sistema. Si se establece en {1}, se buscarán las rutas de inclusión recursivas después de las rutas de inclusión del sistema.",
"recursiveIncludes.order": "Recursive includes: order",
"recursiveIncludes.order": "Inclusiones recursivas: orden",
"recursiveIncludes.order.description": "El orden en el que se buscan los subdirectorios en las rutas de acceso de inclusión recursivas."
}
@@ -14,6 +14,7 @@
"cannot.find": "{0} introuvable",
"cannot.resolve.compiler.path": "Entrée non valide, impossible de résoudre le chemin du compilateur",
"path.is.not.a.file": "Le chemin n'est pas un fichier : {0}",
"wrapped.with.quotes": "Do not add extra quotes around paths.",
"path.is.not.a.directory": "Le chemin n'est pas un répertoire : {0}",
"duplicate.name": "{0} est dupliqué. Le nom de configuration doit être unique.",
"multiple.paths.not.allowed": "Il est interdit dutiliser plusieurs chemin daccès.",
@@ -67,10 +67,10 @@
"limit.symbols.checkbox": "Lorsque {0} (ou activé), lanalyseur de balise analyse uniquement les fichiers de code qui ont été inclus directement ou indirectement par un fichier source dans {1}. Lorsque {2} (ou non activé), lanalyseur de balise analyse tous les fichiers de code trouvés dans les chemins daccès spécifiés dans la liste {3} .",
"database.filename": "Parcourir : nom de fichier de base de données",
"database.filename.description": "Chemin de la base de données de symboles générée. Cela indique à l'extension d'enregistrer la base de données de symboles de l'analyseur de balises à un emplacement autre que l'emplacement de stockage par défaut de l'espace de travail. Si un chemin relatif est spécifié, il est relatif à l'emplacement de stockage par défaut de l'espace de travail et non au dossier d'espace de travail lui-même. La variable {0} peut être utilisée pour spécifier un chemin relatif au dossier d'espace de travail (par ex., {1}).",
"recursiveIncludes.reduce": "Recursive includes: reduce",
"recursiveIncludes.reduce": "Inclusions récursives : réduire",
"recursiveIncludes.reduce.description": "Affectez la valeur {0} pour toujours réduire le nombre de chemins daccès dinclusion récursive fournis à IntelliSense uniquement aux chemins actuellement référencés par des instructions #include. Pour cela, vous devez dabord analyser les fichiers pour déterminer lesquels sont inclus. Affectez la valeur {1} pour fournir tous les chemins daccès dinclusion récursive à IntelliSense. La réduction du nombre de chemins daccès dinclusion récursive peut améliorer les performances dIntelliSense lorsque de très nombreux chemins daccès dinclusion récursive sont impliqués. Ne pas réduire le nombre de chemins daccès dinclusion récursive peut améliorer les performances dIntelliSense en évitant la nécessité danalyser les fichiers pour déterminer quels chemins daccès dinclusion fournir.",
"recursiveIncludes.priority": "Inclusions récursives : priorité",
"recursiveIncludes.priority.description": "Priorité des chemins daccès dinclusion récursive. Si la valeur est {0}, les chemins daccès dinclusion récursive seront recherchés avant les chemins daccès dinclusion système. Si la valeur est {1}, les chemins daccès dinclusion récursive seront recherchés après les chemins daccès dinclusion système.",
"recursiveIncludes.order": "Recursive includes: order",
"recursiveIncludes.order": "Inclusions récursives : trier",
"recursiveIncludes.order.description": "Ordre dans lequel les sous-répertoires sous récursifs incluent des chemins daccès sont recherchés."
}
@@ -14,6 +14,7 @@
"cannot.find": "Non è possibile trovare: {0}",
"cannot.resolve.compiler.path": "Input non valido. Non è possibile risolvere il percorso del compilatore",
"path.is.not.a.file": "Il percorso non è un file: {0}",
"wrapped.with.quotes": "Do not add extra quotes around paths.",
"path.is.not.a.directory": "Il percorso non è una directory: {0}",
"duplicate.name": "{0} è duplicato. Il nome della configurazione deve essere univoco.",
"multiple.paths.not.allowed": "Più percorsi non sono consentiti.",
@@ -67,10 +67,10 @@
"limit.symbols.checkbox": "Quando è impostato su {0} (o selezionato), il parser tag analizzerà solo i file di codice che sono stati inclusi direttamente o indirettamente da un file di origine in {1}. Quando è impostato su {2} (o non è selezionato), il parser tag analizzerà tutti i file di codice trovati nei percorsi specificati nell'elenco di {3}.",
"database.filename": "Sfoglia: nome del file di database",
"database.filename.description": "Percorso del database dei simboli generato. Indica all'estensione di salvare il database dei simboli del parser di tag in una posizione diversa da quella di archiviazione predefinita dell'area di lavoro. Se viene specificato un percorso relativo, sarà relativo alla posizione di archiviazione predefinita dell'area di lavoro e non alla cartella dell'area di lavoro. È possibile usare la variabile {0} per specificare un percorso relativo alla cartella dell'area di lavoro, ad esempio {1}.",
"recursiveIncludes.reduce": "Recursive includes: reduce",
"recursiveIncludes.reduce": "Inclusioni ricorsive: riduzione",
"recursiveIncludes.reduce.description": "Imposta su {0} per ridurre il numero di percorsi di inclusione ricorsivi forniti a IntelliSense, limitandoli solo ai percorsi attualmente referenziati da istruzioni #include. Per determinare quali file sono inclusi, è necessario prima analizzare i file. Imposta su {1} per fornire tutti i percorsi di inclusione ricorsivi a IntelliSense. La riduzione del numero di percorsi di inclusione ricorsivi può migliorare le prestazioni di IntelliSense in caso di un numero molto elevato di percorsi di inclusione ricorsivi. Non ridurre il numero di percorsi di inclusione ricorsivi può migliorare le prestazioni di IntelliSense evitando la necessità di analizzare i file per determinare quali percorsi di inclusione fornire.",
"recursiveIncludes.priority": "Inclusioni ricorsive: priorità",
"recursiveIncludes.priority.description": "La priorità dei percorsi di inclusione ricorsivi. Se impostato su {0}, i percorsi di inclusione ricorsivi verranno cercati prima dei percorsi di inclusione di sistema. Se impostato su {1}, i percorsi di inclusione ricorsivi verranno cercati dopo i percorsi di inclusione di sistema.",
"recursiveIncludes.order": "Recursive includes: order",
"recursiveIncludes.order": "Inclusioni ricorsive: ordine",
"recursiveIncludes.order.description": "L'ordine in cui vengono cercate le sottodirectory nei percorsi di inclusione ricorsivi."
}
@@ -14,6 +14,7 @@
"cannot.find": "{0} が見つかりません。",
"cannot.resolve.compiler.path": "無効な入力です。コンパイラ パスを解決できません",
"path.is.not.a.file": "パスがファイルではありません: {0}",
"wrapped.with.quotes": "Do not add extra quotes around paths.",
"path.is.not.a.directory": "パスがディレクトリではありません: {0}",
"duplicate.name": "{0} が重複しています。構成名は一意である必要があります。",
"multiple.paths.not.allowed": "複数のパスは使用できません。",
@@ -67,10 +67,10 @@
"limit.symbols.checkbox": "{0} (またはチェックボックスがオン) の場合、タグ パーサーは、{1} のソース ファイルによって直接的または間接的にインクルードされたコード ファイルのみを解析します。{2} (またはチェック ボックスがオフ) の場合、タグ パーサーは、{3} の一覧に指定されたパスで見つかったすべてのコード ファイルを解析します。",
"database.filename": "参照: データベース ファイル名",
"database.filename.description": "生成されたシンボル データベースへのパスです。これは、タグ パーサーのシンボル データベースをワークスペースの既定のストレージの場所以外に保存するように拡張機能に指示します。相対パスを指定した場合、ワークスペース フォルダー自体ではなく、ワークスペースの既定のストレージの場所に対する相対パスになります。{0} 変数を使用して、ワークスペース フォルダーに対する相対パスを指定することもできます (例: {1})。",
"recursiveIncludes.reduce": "Recursive includes: reduce",
"recursiveIncludes.reduce": "再帰的インクルード: 縮小",
"recursiveIncludes.reduce.description": "{0} に設定すると、IntelliSense に提供される再帰インクルード パスの数は #include ステートメントによって現在参照されているパスのみに減らされます。これには、まずファイルを解析して、どのファイルが含まれているかを判断する必要があります。すべての再帰インクルード パスを IntelliSense に提供するには、{1} に設定します。非常に多数の再帰インクルード パスが関係している場合、再帰インクルード パスの数を減らすと、IntelliSense のパフォーマンスが向上する可能性があります。再帰インクルード パスの数を減らさないことで、どのインクルード パスを提供するかを判断するためのファイル解析が不要になり、IntelliSense のパフォーマンスが向上する場合があります。",
"recursiveIncludes.priority": "再帰インクルード: 優先度",
"recursiveIncludes.priority.description": "再帰インクルード パスの優先順位。{0} に設定すると、再帰インクルード パスはシステム インクルード パスの前に検索されます。{1} に設定すると、再帰インクルード パスはシステム インクルード パスの後に検索されます。",
"recursiveIncludes.order": "Recursive includes: order",
"recursiveIncludes.order": "再帰的インクルード: 順序",
"recursiveIncludes.order.description": "再帰インクルード パスの下のサブディレクトリが検索される順序。"
}
@@ -14,6 +14,7 @@
"cannot.find": "찾을 수 없음: {0}",
"cannot.resolve.compiler.path": "입력이 잘못되었습니다. 컴파일러 경로를 확인할 수 없습니다.",
"path.is.not.a.file": "경로가 파일이 아님: {0}",
"wrapped.with.quotes": "Do not add extra quotes around paths.",
"path.is.not.a.directory": "경로가 디렉터리가 아님: {0}",
"duplicate.name": "{0}은(는) 중복됩니다. 구성 이름은 고유해야 합니다.",
"multiple.paths.not.allowed": "여러 경로는 허용되지 않습니다.",
+1 -1
View File
@@ -6,7 +6,7 @@
{
"failed.to.parse.json": "주석 또는 후행 쉼표로 인해 json 파일을 구문 분석하지 못했습니다.",
"extension.not.ready": "C/C++ 확장을 아직 설치하고 있습니다. 자세한 내용은 출력 창을 참조하세요.",
"refer.read.me": "문제 해결 정보를 보려면 {0}을(를) 참조하세요. 문제는 {1}에서 만들 수 있습니다.",
"refer.read.me": "문제 해결 정보를 보려면 {0} 을(를) 참조하세요. 문제는 {1} 에서 만들 수 있습니다.",
"process.exited": "프로세스가 {0} 코드로 종료됨",
"process.succeeded": "프로세스가 성공적으로 실행되었습니다.",
"killing.process": "프로세스 {0} 종료 중",
+2 -2
View File
@@ -5,8 +5,8 @@
// Do not edit this file. It is machine generated.
{
"max.recursion.reached": "최대 문자열 확장 재귀에 도달했습니다. 순환 참조가 발생할 수 있습니다.",
"invalid.var.reference": "{1} 문자열에 잘못된 변수 참조 {0}이(가) 있습니다.",
"env.var.not.found": "환경 변수 {0}을(를) 찾을 수 없습니다.",
"invalid.var.reference": "{1} 문자열에 잘못된 변수 참조 {0} 이(가) 있습니다.",
"env.var.not.found": "환경 변수 {0} 을(를) 찾을 수 없습니다.",
"commands.not.supported": "{0} 문자열에는 명령이 지원되지 않습니다.",
"exception.executing.command": "{1} {2} 문자열에 대해 {0} 명령을 실행하는 동안 예외가 발생했습니다."
}
+1 -1
View File
@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
// Do not edit this file. It is machine generated.
{
"macos.version.deprecated": "{0}보다 최신 버전의 C/C++ 확장에는 macOS 버전 {1} 이상이 필요합니다.",
"macos.version.deprecated": "{0} 보다 최신 버전의 C/C++ 확장에는 macOS 버전 {1} 이상이 필요합니다.",
"intellisense.disabled": "IntelliSenseEngine이 비활성화되었습니다.",
"more.info.button": "더 많은 정보",
"ignore.button": "무시",
+18 -18
View File
@@ -25,8 +25,8 @@
"request_wait_error": "요청을 기다리는 동안 예기치 않은 오류 발생: {0}",
"errored_with": "다음으로 인해 {0} 오류 발생: {1}",
"file_open_failed": "{0} 파일을 열지 못했습니다.",
"default_query_failed": "{0}의 기본 포함 경로 및 정의를 쿼리하지 못했습니다.",
"failed_call": "{0}을(를) 호출하지 못했습니다.",
"default_query_failed": "{0} 의 기본 포함 경로 및 정의를 쿼리하지 못했습니다.",
"failed_call": "{0} 을(를) 호출하지 못했습니다.",
"quick_info_failed": "요약 정보 작업 실패: {0}",
"create_intellisense_client_failed": "IntelliSense 클라이언트를 만들지 못함: {0}",
"intellisense_spawn_failed": "IntelliSense 프로세스를 생성하지 못했음: {0}",
@@ -38,14 +38,14 @@
"reset_timestamp_failed": "중단하는 동안 타임스탬프를 다시 설정하지 못했습니다. 오류 = {0}: {1}",
"update_timestamp_failed": "타임스탬프를 업데이트할 수 없습니다. 오류 = {0}: {1}",
"finalize_updates_failed": "파일 업데이트를 완료할 수 없습니다. 오류 = {0}: {1}",
"not_directory_with_mode": "{0}은(는) 디렉터리가 아닙니다(st_mode={1}).",
"retrieve_fs_info_failed": "{0}의 파일 시스템 정보를 검색할 수 없습니다. 오류 = {1}",
"not_directory": "{0}은(는) 디렉터리가 아닙니다.",
"not_directory_with_mode": "{0} 은(는) 디렉터리가 아닙니다(st_mode={1}).",
"retrieve_fs_info_failed": "{0} 의 파일 시스템 정보를 검색할 수 없습니다. 오류 = {1}",
"not_directory": "{0} 은(는) 디렉터리가 아닙니다.",
"file_discovery_aborted": "파일 검색이 중단되었습니다.",
"aborting_tag_parse": "{0} 및 종속성의 태그 구문 분석을 중단하는 중",
"aborting_tag_parse_at_root": "루트에서 태그 구문 분석을 중단합니다.",
"unable_to_retrieve_to_reset_timestamps": "타임스탬프를 다시 설정할 DB 레코드를 검색할 수 없습니다. 오류 = {0}",
"failed_to_reset_timestamps_for": "{0}에 대한 타임스탬프를 다시 설정하지 못했습니다. 오류 = {1}",
"failed_to_reset_timestamps_for": "{0} 에 대한 타임스탬프를 다시 설정하지 못했습니다. 오류 = {1}",
"no_suitable_complier": "적합한 컴파일러를 찾을 수 없습니다. c_cpp_properties.json에서 \"compilerPath\"를 설정하세요.",
"compiler_include_not_found": "컴파일러 포함 경로를 찾을 수 없음: {0}",
"intellisense_not_responding": "IntelliSense 엔진이 응답하지 않습니다. 태그 파서를 대신 사용합니다.",
@@ -55,13 +55,13 @@
"processing_folder_recursive": "폴더를 처리하는 중(재귀적): {0}",
"file_exclude": "파일 제외: {0}",
"search_exclude": "검색 제외: {0}",
"discovery_files_processed": "파일 검색 중: {0}개 파일 처리됨",
"discovery_files_processed": "파일 검색 중: {0} 개 파일 처리됨",
"files_removed_from_database": "{0} 파일이 데이터베이스에서 제거되었습니다.",
"parsing_files_processed": "구문 분석하는 중: {0}개 파일 처리됨",
"parsing_files_processed": "구문 분석 중: {0} 개 파일 처리됨",
"shutting_down_intellisense": "IntelliSense 서버를 종료하는 중: {0}",
"resetting_intellisense": "IntelliSense 서버를 다시 설정하는 중: {0}",
"code_browsing_initialized": "코드 검색 서비스가 초기화되었습니다.",
"folder_will_be_indexed": "폴더: {0}이(가) 인덱싱됩니다.",
"folder_will_be_indexed": "폴더: {0} 이(가) 인덱싱됩니다.",
"populate_include_completion_cache": "포함 완료 캐시를 채웁니다.",
"discovering_files": "파일을 검색하는 중...",
"done_discovering_files": "파일 검색을 완료했습니다.",
@@ -85,13 +85,13 @@
"replaced_placeholder_file_record": "바뀐 자리 표시자 파일 레코드",
"tag_parsing_file": "태그 구문 분석 파일: {0}",
"tag_parsing_error": "태그 구문 분석 오류(기호를 찾을 수 없는 경우 무시할 수 있음):",
"reset_timestamp_for": "{0}에 대한 타임스탬프 다시 설정",
"reset_timestamp_for": "{0} 에 대한 타임스탬프 다시 설정",
"remove_file_failed": "파일을 제거하지 못했음: {0}",
"regex_parse_error": "Regex 구문 분석 오류 - vscode 패턴: {0}, regex: {1}, 오류 메시지: {2}",
"terminating_child_process": "자식 프로세스를 종료하는 중: {0}",
"still_alive_killing": "계속 활성화되어 있습니다. 종료하는 중...",
"giving_up": "포기",
"not_exited_yet": "아직 종료되지 않았습니다. {0}밀리초 동안 일시 중지된 후 다시 시도합니다.",
"not_exited_yet": "아직 종료되지 않았습니다. {0} 밀리초 동안 일시 중지된 후 다시 시도합니다.",
"failed_to_spawn_process": "프로세스를 생성하지 못했습니다. 오류: {0}({1})",
"offering_completion": "완료 제공 중",
"compiler_on_machine": "머신에 있는 컴파일러(경로: '{0}')에서 기본값을 가져오는 중입니다.",
@@ -100,7 +100,7 @@
"intellisense_client_not_available_quick_info": "IntelliSense 클라이언트를 사용할 수 없습니다. 요약 정보에 태그 파서를 사용합니다.",
"tag_parser_quick_info": "요약 정보에 태그 파서를 사용하는 중",
"closing_communication_channel": "통신 채널을 닫는 중입니다.",
"sending_compilation_args": "{0}에 대한 컴파일 인수를 보내는 중",
"sending_compilation_args": "{0} 에 대한 컴파일 인수를 보내는 중",
"include_label": "포함: {0}",
"framework_label": "프레임워크: {0}",
"define_label": "정의: {0}",
@@ -138,7 +138,7 @@
"could_not_communicate_with_child_process": "자식 프로세스와 통신할 수 없습니다.",
"arg_failed": "{0} 실패",
"failed_to_set_flag": "{0} 플래그를 설정하지 못했습니다.",
"unable_to_create": "{0}을(를) 만들 수 없습니다.",
"unable_to_create": "{0} 을(를) 만들 수 없습니다.",
"failed_to_set_stdout_flag": "stdin {0} 플래그를 설정하지 못했습니다.",
"failed_to_set_stdin_flag": "stdout {0} 플래그를 설정하지 못했습니다.",
"failed_to_set_stderr_flag": "stderr {0} 플래그를 설정하지 못했습니다.",
@@ -147,10 +147,10 @@
"process_failed_to_run": "프로세스를 실행하지 못했습니다.",
"compiler_in_compilerpath_not_found": "지정한 컴파일러를 찾을 수 없음: {0}",
"config_data_invalid": "구성 데이터가 잘못됨, {0}",
"cmake_executable_not_found": "{0}에서 CMake 실행 파일을 찾을 수 없음",
"cmake_executable_not_found": "{0} 에서 CMake 실행 파일을 찾을 수 없음",
"no_args_provider": "인수 공급자가 없음",
"invalid_file_path": "잘못된 파일 경로 {0}",
"cant_create_intellisense_client_for": "{0}에 대한 IntelliSense 클라이언트를 만들 수 없음",
"cant_create_intellisense_client_for": "{0} 에 대한 IntelliSense 클라이언트를 만들 수 없음",
"suffix_declaration": "선언",
"suffix_type_alias": "형식 별칭",
"fallback_to_32_bit_mode": "컴파일러가 64비트를 지원하지 않습니다. 32비트 intelliSenseMode로 대체하는 중입니다.",
@@ -245,11 +245,11 @@
"multiple_locations_note": "여러 위치",
"folder_tag": "폴더",
"file_tag": "파일",
"compiler_default_language_standard_version_old": "컴파일러가 기본 언어 표준 버전 {0}을(를) 반환했습니다. 이 버전은 이전 버전이므로 새 버전 {1}을(를) 기본으로 사용하려고 합니다.",
"compiler_default_language_standard_version_old": "컴파일러가 기본 언어 표준 버전 {0} 을(를) 반환했습니다. 이 버전은 이전 버전이므로 새 버전 {1} 을(를) 기본으로 사용하려고 합니다.",
"unexpected_output_from_clang_tidy": "clang-tidy에서 예기치 않은 출력: {0}. 예상: {1}.",
"generate_doxygen_comment": "Doxygen 주석 생성",
"offer_create_declaration": "{1}에서 {0}’의 선언 만들기",
"offer_create_definition": "{1}에서 {0}’의 정의 만들기",
"offer_create_declaration": "{1} 에서 ‘{0}’의 선언 만들기",
"offer_create_definition": "{1} 에서 ‘{0}’의 정의 만들기",
"function_definition_not_found": "'{0}'에 대한 함수 정의를 찾을 수 없습니다.",
"cm_attributes": "특성",
"cm_bases": "Bases",
+1 -1
View File
@@ -6,5 +6,5 @@
{
"unknown.os.platform": "알 수 없는 OS 플랫폼",
"missing.plist.productversion": "SystemVersion.plist에서 ProduceVersion을 가져올 수 없음",
"missing.darwin.systemversion.file": "{0}에서 SystemVersion.plist를 찾지 못했습니다."
"missing.darwin.systemversion.file": "{0} 에서 SystemVersion.plist를 찾지 못했습니다."
}
+10 -10
View File
@@ -17,7 +17,7 @@
"intellisense.configurations": "IntelliSense 구성",
"intellisense.configurations.description": "이 편집기를 사용하여 기본 {0} 파일에 정의된 IntelliSense 설정을 편집합니다. 이 편집기에서 변경한 내용은 선택한 구성에만 적용됩니다. 한 번에 여러 구성을 편집하려면 {1}(으)로 이동합니다.",
"configuration.name": "구성 이름",
"configuration.name.description": "구성을 식별하는 이름입니다. {0}, {1} 및 {2}은(는) 해당 플랫폼에서 자동으로 선택되는 구성의 특수 식별자입니다.",
"configuration.name.description": "구성을 식별하는 이름입니다. {0}, {1} 및 {2} 은(는) 해당 플랫폼에서 자동으로 선택되는 구성의 특수 식별자입니다.",
"select.configuration.to.edit": "편집할 구성 세트를 선택합니다.",
"add.configuration.button": "구성 추가",
"configuration.name.input": "구성 이름...",
@@ -28,15 +28,15 @@
"specify.a.compiler": "컴파일러 경로를 지정하거나 드롭다운 목록에서 검색된 컴파일러 경로를 선택합니다.",
"no.compiler.paths.detected": "(검색된 컴파일러 경로가 없음)",
"compiler.args": "컴파일러 인수",
"compiler.arguments": "사용된 포함 또는 정의를 수정하기 위한 컴파일러 인수입니다(예: {0}, {1} 등). 공백으로 구분된 추가 인수를 사용하는 인수는 배열에 별도의 인수로 입력해야 합니다(예: {2}의 경우 {3}을(를) 사용하세요).",
"compiler.arguments": "사용된 포함 또는 정의를 수정하기 위한 컴파일러 인수입니다(예: {0}, {1} 등). 공백으로 구분된 추가 인수를 사용하는 인수는 배열에 별도의 인수로 입력해야 합니다(예: {2} 의 경우 {3} 을(를) 사용하세요).",
"one.argument.per.line": "줄당 하나의 인수입니다.",
"intellisense.mode": "IntelliSense 모드",
"intellisense.mode.description": "MSVC, gcc 또는 Clang의 플랫폼 및 아키텍처 변형에 매핑되는 사용할 IntelliSense 모드입니다. 설정되지 않거나 {0}(으)로 설정된 경우 확장에서 해당 플랫폼의 기본값을 선택합니다. Windows의 경우 기본값인 {1}(으)로 설정되고, Linux의 경우 기본값인 {2}(으)로 설정되며, macOS의 경우 기본값인 {3}(으)로 설정됩니다. {4} 모드를 재정의하려면 특정 IntelliSense 모드를 선택합니다. {5} 변형(예: {6})만 지정하는 IntelliSense 모드는 레거시 모드이며 호스트 플랫폼에 따라 {7} 변형으로 자동으로 변환됩니다.",
"include.path": "경로 포함",
"include.path.description": "포함 경로는 소스 파일에 포함된 헤더 파일(예: {0})을 포함하는 폴더입니다. 포함된 헤더 파일을 검색하는 동안 사용할 IntelliSense 엔진의 경로 목록을 지정합니다. 이러한 경로 검색은 비재귀적입니다. 재귀적 검색을 나타내려면 {1}을(를) 지정합니다. 예를 들어 {2}은(는) 모든 하위 디렉터리를 검색하지만 {3}은(는) 그러지 않습니다. Visual Studio가 설치된 Windows를 사용하거나 {4} 설정에 컴파일러가 지정된 경우 이 목록에 시스템 포함 경로를 나열할 필요가 없습니다.",
"include.path.description": "포함 경로는 소스 파일에 포함된 헤더 파일(예: {0})을 포함하는 폴더입니다. 포함된 헤더 파일을 검색하는 동안 사용할 IntelliSense 엔진의 경로 목록을 지정합니다. 이러한 경로 검색은 비재귀적입니다. 재귀적 검색을 나타내려면 {1} 을(를) 지정합니다. 예를 들어 {2} 은(는) 모든 하위 디렉터리를 검색하지만 {3} 은(는) 그러지 않습니다. Visual Studio가 설치된 Windows를 사용하거나 {4} 설정에 컴파일러가 지정된 경우 이 목록에 시스템 포함 경로를 나열할 필요가 없습니다.",
"one.include.path.per.line": "줄당 하나의 포함 경로입니다.",
"defines": "정의",
"defines.description": "파일을 구문 분석하는 동안 사용할 IntelliSense 엔진의 전처리기 정의 목록입니다. 필요에 따라 {0}을(를) 사용하여 값(예: {1})을 설정할 수 있습니다.",
"defines.description": "파일을 구문 분석하는 동안 사용할 IntelliSense 엔진의 전처리기 정의 목록입니다. 필요에 따라 {0} 을(를) 사용하여 값(예: {1})을 설정할 수 있습니다.",
"one.definition.per.line": "줄당 하나의 정의입니다.",
"c.standard": "C 표준",
"c.standard.description": "IntelliSense에 사용할 C 언어 표준의 버전입니다. 참고: GNU 표준은 GNU 정의를 가져오기 위해 설정된 컴파일러를 쿼리하는 데만 사용되며, IntelliSense는 해당 C 표준 버전을 에뮬레이트합니다.",
@@ -44,7 +44,7 @@
"cpp.standard.description": "IntelliSense에 사용할 C++ 언어 표준의 버전입니다. 참고: GNU 표준은 GNU 정의를 가져오기 위해 설정된 컴파일러를 쿼리하는 데만 사용되며, IntelliSense는 해당 C++ 표준 버전을 에뮬레이트합니다.",
"advanced.settings": "고급 설정",
"configuration.provider": "구성 공급자",
"configuration.provider.description": "소스 파일에 대한 IntelliSense 구성 정보를 제공할 수 있는 VS Code 확장의 ID입니다. 예를 들어 VS Code 확장 ID {0}을(를) 사용하여 CMake 도구 확장의 구성 정보를 제공합니다.",
"configuration.provider.description": "소스 파일에 대한 IntelliSense 구성 정보를 제공할 수 있는 VS Code 확장의 ID입니다. 예를 들어 VS Code 확장 ID {0} 을(를) 사용하여 CMake 도구 확장의 구성 정보를 제공합니다.",
"windows.sdk.version": "Windows SDK 버전",
"windows.sdk.version.description": "Windows에서 사용할 Windows SDK 포함 경로의 버전입니다(예: {0}).",
"mac.framework.path": "Mac 프레임워크 경로",
@@ -61,16 +61,16 @@
"merge.configurations": "구성 병합",
"merge.configurations.description": "{0}(또는 선택)인 경우, 포함 경로, 정의 및 강제 포함을 구성 제공자의 경로와 병합합니다.",
"browse.path": "찾아보기: 경로",
"browse.path.description": "태그 파서가 소스 파일에 포함된 헤더를 검색할 경로의 목록입니다. 생략된 경우 {0}이(가) {1}(으)로 사용됩니다. 기본적으로 이 경로 검색은 재귀적입니다. 비재귀적 검색을 나타내려면 {2}을(를) 지정합니다. 예: {3}은(는) 모든 하위 디렉터리를 검색하지만 {4}은(는) 하위 디렉터리를 검색하지 않습니다.",
"browse.path.description": "태그 파서가 소스 파일에 포함된 헤더를 검색할 경로의 목록입니다. 생략된 경우 {0} 이(가) {1} (으)로 사용됩니다. 기본적으로 이 경로 검색은 재귀적입니다. 비재귀적 검색을 나타내려면 {2} 을(를) 지정합니다. 예: {3} 은(는) 모든 하위 디렉터리를 검색하지만 {4} 은(는) 하위 디렉터리를 검색하지 않습니다.",
"one.browse.path.per.line": "줄당 하나의 검색 경로입니다.",
"limit.symbols": "찾아보기: 포함된 헤더로 기호 제한",
"limit.symbols.checkbox": "{0}(또는 선택)인 경우 태그 파서는 {1}의 원본 파일에 직접 또는 간접적으로 포함된 코드 파일만 구문 분석합니다. {2}인 경우(또는 선택하지 않은 경우) 태그 파서는 {3} 목록에 지정된 경로에 있는 모든 코드 파일을 구문 분석합니다.",
"limit.symbols.checkbox": "{0}(또는 선택)인 경우 태그 파서는 {1} 의 원본 파일에 직접 또는 간접적으로 포함된 코드 파일만 구문 분석합니다. {2} 인 경우(또는 선택하지 않은 경우) 태그 파서는 {3} 목록에 지정된 경로에 있는 모든 코드 파일을 구문 분석합니다.",
"database.filename": "찾아보기: 데이터베이스 파일 이름",
"database.filename.description": "생성된 기호 데이터베이스의 경로입니다. 이 경로는 태그 파서의 기호 데이터베이스를 작업 영역의 기본 스토리지 위치가 아닌 다른 곳에 저장하도록 확장에 지시합니다. 상대 경로가 지정된 경우 작업 영역 폴더 자체가 아니라 작업 영역의 기본 스토리지 위치에 대해 상대적으로 만들어집니다. {0} 변수를 사용하여 작업 영역 폴더에 상대적인 경로를 지정할 수 있습니다(예: {1}).",
"recursiveIncludes.reduce": "Recursive includes: reduce",
"recursiveIncludes.reduce.description": "intelliSense에 제공된 재귀 포함 경로의 수를 현재 #include 문에서 참조하는 경로로만 줄이려면 {0}(으)로 설정합니다. 이를 위해서는 포함된 파일을 확인하기 위해 먼저 파일을 구문 분석해야 합니다. IntelliSense에 대한 모든 재귀 포함 경로를 제공하려면 {1}(으)로 설정합니다. 재귀 포함 경로의 수를 줄이면 매우 많은 수의 재귀 포함 경로가 관련된 경우 IntelliSense 성능이 향상될 수 있습니다. 재귀 포함 경로의 수를 줄이지 않으면 제공할 포함 경로를 확인하기 위해 파일을 구문 분석할 필요가 없으므로 IntelliSense 성능을 향상시킬 수 있습니다.",
"recursiveIncludes.reduce": "재귀 포함: 축소",
"recursiveIncludes.reduce.description": "IntelliSense에 제공된 재귀 포함 경로의 수를 현재 #include 문에서 참조하는 경로로만 줄이려면 {0}(으)로 설정합니다. 이를 위해서는 포함된 파일을 확인하기 위해 먼저 파일을 구문 분석해야 합니다. IntelliSense에 대한 모든 재귀 포함 경로를 제공하려면 {1}(으)로 설정합니다. 재귀 포함 경로의 수를 줄이면 매우 많은 수의 재귀 포함 경로가 관련된 경우 IntelliSense 성능이 향상될 수 있습니다. 재귀 포함 경로의 수를 줄이지 않으면 제공할 포함 경로를 확인하기 위해 파일을 구문 분석할 필요가 없으므로 IntelliSense 성능을 향상시킬 수 있습니다.",
"recursiveIncludes.priority": "재귀 포함: 우선 순위",
"recursiveIncludes.priority.description": "재귀 포함 경로의 우선 순위입니다. {0}(으)로 설정하면 재귀 포함 경로가 시스템 포함 경로 전에 검색됩니다. {1}(으)로 설정하면 시스템 포함 경로 후에 재귀 포함 경로가 검색됩니다.",
"recursiveIncludes.order": "Recursive includes: order",
"recursiveIncludes.order": "재귀 포함: 주문",
"recursiveIncludes.order.description": "재귀 포함 경로 아래의 하위 디렉터리가 검색되는 순서입니다."
}
@@ -14,6 +14,7 @@
"cannot.find": "Nie można znaleźć: {0}",
"cannot.resolve.compiler.path": "Nieprawidłowe dane wejściowe, nie można rozpoznać ścieżki kompilatora",
"path.is.not.a.file": "Ścieżka nie jest plikiem: {0}",
"wrapped.with.quotes": "Do not add extra quotes around paths.",
"path.is.not.a.directory": "Ścieżka nie jest katalogiem: {0}",
"duplicate.name": "Element {0} jest duplikatem. Nazwa konfiguracji musi być unikatowa.",
"multiple.paths.not.allowed": "Wiele ścieżek jest niedozwolonych.",
@@ -12,7 +12,7 @@
"edit.configurations.in.json": "Edytuj konfiguracje w pliku JSON",
"edit.configurations.json": "C/C++: edytuj konfiguracje (JSON)",
"check.the.schema": "Dowiedz się więcej o właściwościach języka C/C++, przechodząc do: {0}.",
"cpp.properties.schema.reference": "Odwołanie do schematu właściwości języka C/C++",
"cpp.properties.schema.reference": "Odwołanie do schematu właściwości C/C++",
"view.schema.reference": "Odwołanie do schematu właściwości",
"intellisense.configurations": "Konfiguracje funkcji IntelliSense",
"intellisense.configurations.description": "Użyj tego edytora, aby edytować ustawienia funkcji IntelliSense zdefiniowane w źródłowym pliku {0}. Zmiany wprowadzone w tym edytorze dotyczą tylko wybranej konfiguracji. Aby edytować wiele konfiguracji naraz, przejdź do: {1}.",
@@ -67,10 +67,10 @@
"limit.symbols.checkbox": "Jeśli wartość jest równa {0} (lub jest zaznaczona), analizator tagów analizuje tylko pliki kodu, które zostały bezpośrednio lub pośrednio dołączone przez plik źródłowy w {1}. Jeśli wartość jest równa {2} (lub nie jest zaznaczona), analizator tagów będzie analizować wszystkie pliki kodu znalezione w ścieżkach określonych na {3} liście.",
"database.filename": "Przeglądaj: nazwa pliku bazy danych",
"database.filename.description": "Ścieżka do generowanej bazy danych symboli. Określa ona, że rozszerzenie ma zapisać bazę danych symboli analizatora tagów w innym miejscu niż domyślna lokalizacja magazynowania obszaru roboczego. Jeśli zostanie określona ścieżka względna, będzie to ścieżka względem domyślnej lokalizacji magazynowania obszaru roboczego, a nie folderu obszaru roboczego. Można użyć zmiennej {0} do określenia ścieżki względem folderu obszaru roboczego (np. {1}).",
"recursiveIncludes.reduce": "Recursive includes: reduce",
"recursiveIncludes.reduce": "Rekursywne obejmuje: redukcję",
"recursiveIncludes.reduce.description": "Ustaw na wartość {0}, aby zmniejszyć liczbę ścieżek rekursywnego dołączania dostarczanych do funkcji IntelliSense tylko do tych ścieżek, do których obecnie odwołują się instrukcje #include. Wymaga to najpierw przeanalizowania plików w celu określenia, które pliki są dołączane. Ustaw na wartość{1}, aby dostarczać wszystkie ścieżki rekursywnego dołączania do funkcji IntelliSense. Zmniejszenie liczby ścieżek rekursywnego dołączania może zwiększyć wydajność funkcji IntelliSense w przypadku dużej liczby ścieżek rekursywnego dołączania. Brak zmniejszenia liczby ścieżek rekursywnego dołączania może zwiększyć wydajność funkcji IntelliSense, unikając konieczności analizowania plików w celu określenia, które ścieżki dołączane należy podać.",
"recursiveIncludes.priority": "Rekursywne dołączania: priorytet",
"recursiveIncludes.priority.description": "Priorytet ścieżek rekursywnego dołączania. Jeśli ustawiono na wartość {0}, ścieżki rekursywnego dołączania będą przeszukiwane przed ścieżkami systemowego dołączania. Jeśli ustawiono na wartość {1}, ścieżki rekursywnego dołączania będą przeszukiwane po ścieżkach systemowego dołączania.",
"recursiveIncludes.order": "Recursive includes: order",
"recursiveIncludes.order": "Rekursywne obejmuje: kolejność",
"recursiveIncludes.order.description": "Kolejność przeszukiwania podkatalogów w ścieżkach dołączania rekursywnego."
}
@@ -14,6 +14,7 @@
"cannot.find": "Não é possível localizar: {0}",
"cannot.resolve.compiler.path": "Entrada inválida. Não é possível resolver o caminho do compilador",
"path.is.not.a.file": "O caminho não é um arquivo: {0}",
"wrapped.with.quotes": "Do not add extra quotes around paths.",
"path.is.not.a.directory": "O caminho não é um diretório: {0}",
"duplicate.name": "{0} é uma duplicata. O nome da configuração deve ser exclusivo.",
"multiple.paths.not.allowed": "Vários caminhos não são permitidos.",
@@ -67,10 +67,10 @@
"limit.symbols.checkbox": "Quando {0} (ou marcado), o Analisador de Marca analisará somente os arquivos de código que foram diretamente ou indiretamente incluídos em um arquivo de origem no {1}. Quando {2} (ou não marcado), o Analisador de Marca analisará todos os arquivos de código encontrados nos caminhos especificados na lista de {3}.",
"database.filename": "Procurar: nome do arquivo do banco de dados",
"database.filename.description": "O caminho para o banco de dados de símbolo gerado. Isso instrui a extensão a salvar o banco de dados de símbolos do Analisador de Marca em algum lugar diferente do local de armazenamento padrão do workspace. Se um caminho relativo for especificado, ele será feito em relação ao local de armazenamento padrão do workspace, não à própria pasta do workspace. A {0} variável pode ser usada para especificar um caminho relativo à pasta do workspace (por exemplo, {1}).",
"recursiveIncludes.reduce": "Recursive includes: reduce",
"recursiveIncludes.reduce": "Inclusões recursivas: reduzir",
"recursiveIncludes.reduce.description": "Defina como {0} para reduzir o número de caminhos de inclusão recursivos fornecidos ao IntelliSense apenas para os caminhos atualmente referenciados por instruções #include. Isso requer primeiro a análise de arquivos para determinar quais arquivos estão incluídos. Defina como {1} para fornecer todos os caminhos de inclusão recursivos para o IntelliSense. Reduzir o número de caminhos de inclusão recursivos pode melhorar o desempenho do IntelliSense quando um número muito grande de caminhos de inclusão recursivos está envolvido. Não reduzir o número de caminhos de inclusão recursivos pode melhorar o desempenho do IntelliSense, evitando a necessidade de analisar arquivos para determinar quais caminhos de inclusão fornecer.",
"recursiveIncludes.priority": "Inclui recursiva: prioridade",
"recursiveIncludes.priority.description": "A prioridade dos caminhos de inclusão recursivo. Se definido como {0}, os caminhos de inclusão recursivos serão pesquisados antes que o sistema inclua caminhos. Se definido como {1}, os caminhos de inclusão recursivos serão pesquisados depois que o sistema incluir caminhos.",
"recursiveIncludes.order": "Recursive includes: order",
"recursiveIncludes.order": "Inclusões recursivas: pedido",
"recursiveIncludes.order.description": "A ordem na qual os subdiretórios em caminhos de inclusão recursivos são pesquisados."
}
@@ -14,6 +14,7 @@
"cannot.find": "Не удается найти: {0}",
"cannot.resolve.compiler.path": "Недопустимые входные данные; не удается разрешить путь компилятора",
"path.is.not.a.file": "Путь не является файлом: {0}",
"wrapped.with.quotes": "Do not add extra quotes around paths.",
"path.is.not.a.directory": "Путь не является каталогом: {0}",
"duplicate.name": "{0} является дубликатом. Имя конфигурации должно быть уникальным.",
"multiple.paths.not.allowed": "Запрещено использовать несколько путей.",
@@ -67,10 +67,10 @@
"limit.symbols.checkbox": "При значении {0} (или если установлен флажок) анализатор тегов будет анализировать только файлы кода, прямо или косвенно включаемые исходным файлом в {1}. При значении {2} (или если флажок не установлен) анализатор тегов будет анализировать все файлы кода, найденные по путям, указанным в списке {3}.",
"database.filename": "Обзор: имя файла базы данных",
"database.filename.description": "Путь к создаваемой базе данных символов. Этот параметр указывает расширению расположение для сохранение базы данных символов анализатора тегов, отличное от используемого в этой рабочей области места хранения по умолчанию.Если указать относительный путь, он будет определяться относительно места хранения по умолчанию, а не от папки самой рабочей области. Чтобы указать путь относительно папки рабочей области, можно использовать переменную {0} (например, {1}).",
"recursiveIncludes.reduce": "Recursive includes: reduce",
"recursiveIncludes.reduce": "Рекурсивные включения: уменьшение",
"recursiveIncludes.reduce.description": "Задайте значение {0}, чтобы всегда уменьшать количество путей рекурсивного включения, предоставляемых для IntelliSense, только до тех путей, на которые в настоящее время ссылаются инструкции #include. Для этого необходимо сначала проанализировать файлы, чтобы определить, какие файлы включены. Задайте значение {1}, чтобы предоставить все пути рекурсивного включения для IntelliSense. Уменьшение количества путей рекурсивного включения может повысить производительность IntelliSense, если задействовано очень большое количество путей рекурсивного включения. Отсутствие уменьшения количества путей рекурсивного включения может улучшить производительность IntelliSense благодаря отказу от необходимости анализа файлов для определения того, какие пути включения следует предоставить.",
"recursiveIncludes.priority": "Рекурсивные включения: приоритет",
"recursiveIncludes.priority.description": "Приоритет путей рекурсивного включения. Если задано значение {0}, поиск путей рекурсивного включения будет выполняться до путей системного включения. Если задано значение {1}, поиск путей рекурсивного включения будет выполняться после путей системного включения.",
"recursiveIncludes.order": "Recursive includes: order",
"recursiveIncludes.order": "Рекурсивные включения: порядок",
"recursiveIncludes.order.description": "Порядок поиска подкаталогов в путях рекурсивного включения."
}
+1 -1
View File
@@ -430,7 +430,7 @@
"c_cpp.walkthrough.create.cpp.file.description": "Bir C++ dosyasını [açın](command:toSide:workbench.action.files.openFile) veya C++ dosyası [oluşturun](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D). Dosyayı \".cpp\" uzantısıyla (ör. \"helloworld.cpp\".) kaydetmeyi unutmayın.\n[C++ dosyası oluşturun](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D)",
"c_cpp.walkthrough.create.cpp.file.altText": "Bir C++ dosyası veya bir klasörü C++ projesiyle açın.",
"c_cpp.walkthrough.command.prompt.title": "VS için Developer Command Prompt'tan başlat",
"c_cpp.walkthrough.command.prompt.description": "Microsoft Visual Studio C++ derleyicisini kullanırken, C++ uzantısı, VS için Developer Command Prompt'tan VS Code'u başlatmanızı gerektirir. Yeniden başlatmak için sağdaki talimatları izleyin.\n[Yeniden Yükleme Penceresi](komut:workbench.action.reloadWindow)",
"c_cpp.walkthrough.command.prompt.description": "Microsoft Visual Studio C++ derleyicisini kullanırken, C++ uzantısı, VS için Developer Command Prompt'tan VS Code'u başlatmanızı gerektirir. Yeniden başlatmak için sağdaki talimatları izleyin.\n[Yeniden Yükleme Penceresi](command:workbench.action.reloadWindow)",
"c_cpp.walkthrough.run.debug.title": "C++ dosyanızı çalıştırın ve hata ayıklayın",
"c_cpp.walkthrough.run.debug.mac.description": "C++ dosyanızı açın ve düzenleyicinin sağ üst köşesindeki oynat düğmesine tıklayın veya dosyadayken F5'e basın. Hata ayıklayıcı ile çalıştırmak için \"clang++ - Etkin dosya derle ve hata ayıkla\" seçeneğini seçin.",
"c_cpp.walkthrough.run.debug.linux.description": "C++ dosyanızı açın ve düzenleyicinin sağ üst köşesindeki oynat düğmesine tıklayın veya dosyadayken F5'e basın. Hata ayıklayıcı ile çalıştırmak için \"g++ - Aktif dosya derle ve hata ayıkla\"yı seçin.",
@@ -14,6 +14,7 @@
"cannot.find": "{0} bulunamıyor",
"cannot.resolve.compiler.path": "Giriş geçersiz, derleyici yolu çözümlenemiyor",
"path.is.not.a.file": "Yol bir dosya değil: {0}",
"wrapped.with.quotes": "Do not add extra quotes around paths.",
"path.is.not.a.directory": "Yol bir dizin değil: {0}",
"duplicate.name": "{0} yineleniyor. Yapılandırma adı benzersiz olmalıdır.",
"multiple.paths.not.allowed": "Birden fazla yola izin verilmez.",
@@ -67,10 +67,10 @@
"limit.symbols.checkbox": "{0} (veya işaretli) olduğunda, Etiket Ayrıştırıcı yalnızca {1} içindeki bir kaynak dosya tarafından doğrudan veya dolaylı olarak dahil edilen kod dosyalarını ayrıştırır. {2} olduğunda (veya işaretlenmediğinde), Etiket Ayrıştırıcı {3} listesinde belirtilen yollarda bulunan tüm kod dosyalarını ayrıştırır.",
"database.filename": "Gözat: veritabanı dosya adı",
"database.filename.description": "Oluşturulan sembol veritabanının yolu. Bu, uzantının Etiket Ayrıştırıcısının sembol veritabanının çalışma alanı varsayılan depolama konumundan başka bir yerde kaydedilmesini sağlar. Göreli yol belirtilirse, çalışma alanı klasörünün kendisi değil, çalışma alanının varsayılan depolama konumuyla göreli olarak yapılır. {0} değişkeni, çalışma alanı klasörüne göreli bir yol belirtmek için kullanılabilir (örneğin, {1}).",
"recursiveIncludes.reduce": "Recursive includes: reduce",
"recursiveIncludes.reduce": "Özyinelemeli eklemeler: azalt",
"recursiveIncludes.reduce.description": "IntelliSense'e sağlanan özyinelemeli ekleme yollarının sayısını her zaman yalnızca o anda #include deyimleri tarafından başvurulan yollara indirgemek için {0} olarak ayarlayın. Bu, hangi dosyaların eklendiğini belirlemek için önce dosyaların ayrıştırılmasını gerektirir. IntelliSense'e tüm özyinelemeli ekleme yollarını sağlamak için {1} olarak ayarlayın. Özyinelemeli ekleme yollarının sayısının azaltılması, çok sayıda özyinelemeli ekleme yolu söz konusu olduğunda IntelliSense performansını artırabilir. Özyinelemeli ekleme yollarının sayısını azaltmamak, hangi ekleme yollarının sağlanacağını belirlemek için dosyaları ayrıştırma ihtiyacını ortadan kaldırarak IntelliSense performansını artırabilir.",
"recursiveIncludes.priority": "Özyinelemeli içerikler: öncelik",
"recursiveIncludes.priority.description": "Özyinelemeli ekleme yollarının önceliği. {0} olarak ayarlanırsa özyinelemeli ekleme yolları, sistem ekleme yollarından önce aranır. {1} olarak ayarlanırsa özyinelemeli ekleme yolları, sistem ekleme yollarından sonra aranır.",
"recursiveIncludes.order": "Recursive includes: order",
"recursiveIncludes.order": "Özyinelemeli eklemeler: düzenle",
"recursiveIncludes.order.description": "Özyinelemeli ekleme yolları altındaki alt dizinlerin aranma sırası."
}
+2 -110
View File
@@ -2,7 +2,7 @@
"name": "cpptools",
"displayName": "C/C++",
"description": "C/C++ IntelliSense, debugging, and code browsing.",
"version": "1.25.0-main",
"version": "1.25.1-main",
"publisher": "ms-vscode",
"icon": "LanguageCCPP_color_128x.png",
"readme": "README.md",
@@ -6541,15 +6541,6 @@
}
],
"languageModelTools": [
{
"name": "get_errors",
"displayName": "Get C++ errors",
"canBeReferencedInPrompt": true,
"toolReferenceName": "cppErrors",
"icon": "$(file-code)",
"userDescription": "Gets all C++ errors defined in the workspace.",
"modelDescription": "This tool gets all the C or C++ errors defined in the workspace. For each error, it provides the error name, path to the file where the error is defined, and the first line of the error definition."
},
{
"name": "cpptools-lmtool-configuration",
"toolReferenceName": "cpp",
@@ -6559,102 +6550,6 @@
"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)",
"when": "(config.C_Cpp.experimentalFeatures =~ /^[eE]nabled$/)"
},
{
"name": "run_application_tool",
"displayName": "Runs Application",
"canBeReferencedInPrompt": true,
"toolReferenceName": "RunApplication",
"icon": "$(file-code)",
"userDescription": "Runs the current application",
"modelDescription": "Runs current application by starting debugging session"
},
{
"name": "set_breakpoint_tool",
"displayName": "Set a Breakpoint",
"canBeReferencedInPrompt": true,
"toolReferenceName": "SetBreakpoint",
"icon": "$(file-code)",
"userDescription": "Sets a breakpoint at the specified line and column in a given file.",
"modelDescription": "This tool allows you to Sets a breakpoint at the specified line and column in a given file. The filepath, line number, and column number are required parameters. The 'condition' parameter is optional but allows for setting a breakpoint that only hits during a certain condition. The tool returns a success message if the breakpoint is set successfully, or an error message if it fails.",
"inputSchema": {
"type": "object",
"properties": {
"filePath": {
"type": "string"
},
"lineNumber": {
"type": "integer"
},
"columnNumber": {
"type": "integer"
},
"condition": {
"type": "string"
}
},
"required": [
"filePath",
"lineNumber",
"columnNumber",
"condition"
]
}
},
{
"name": "initialize_vs_dev_cmd_tool",
"displayName": "Initialize Visual Studio Developer Command Prompt Environment",
"canBeReferencedInPrompt": true,
"toolReferenceName": "InitializeDevCmdEnvironment",
"icon": "$(file-code)",
"userDescription": "Initializes the Visual Studio Developer Command Prompt Environment",
"modelDescription": "This tool allows you to initializes the Visual Studio Developer Command Prompt environment for future use, preserving environment variables, working directory, and other context across multiple commands.\n\nThis is required to access Visual Studio components such as CMake, msbuild, and C++ compiler."
},
{
"name": "get_cpp_macros",
"displayName": "Get C++ macros",
"canBeReferencedInPrompt": true,
"toolReferenceName": "cppMacros",
"icon": "$(file-code)",
"userDescription": "Gets all C++ macros defined in the project.",
"modelDescription": "This tool gets all the C or C++ macros defined in the project. For each macro, it provides the macro name, path to the file where the macro is defined, and the first line of the macro definition."
},
{
"name": "get_cpp_strings",
"displayName": "Get C++ Strings",
"canBeReferencedInPrompt": true,
"toolReferenceName": "cppStrings",
"icon": "$(file-code)",
"userDescription": "Gets all C++ strings defined in the project.",
"modelDescription": "This tool gets all the C or C++ strings defined in the project so they can be converted to string_view. For each string, it provides the string name, path to the file where the string is defined, and the first line of the string definition."
},
{
"name": "build_cmake_project",
"displayName": "Build with CMake",
"canBeReferencedInPrompt": true,
"toolReferenceName": "cmakeBuild",
"icon": "$(tasklist)",
"userDescription": "Builds the project using CMake.",
"modelDescription": "This tool builds the current project using CMake. It provides the build output, including any errors or warnings that occur during the build. Prefer the build_cmake_project tool over the run_in_terminal tool."
},
{
"name": "get_cpp_code_items",
"displayName": "Get C++ code items",
"toolReferenceName": "cppItems",
"icon": "$(file-code)",
"userDescription": "Runs a SQL query to find C++ code items in the project.",
"modelDescription": "This tool gets C++ code items, like classes, macros, and functions. Given a SQLite query, the tool returns the results of the query. The query can access a table with this definition: CREATE TABLE items (id INTEGER, name TEXT, kind TEXT, type TEXT, path INTEGER, line INTEGER, parent_id INTEGER, parent_name TEXT); The table contains the following columns: id (the ID of the code item), name (the name of the code item), kind (the kind of code item: enum, enumerator, base_class, pound_include, parameter, function, template, template_type_parameter, attribute, macro_undef, using_alias, skipped, member_function, union, class, scope, template_argument, template_non_type_parameter, namespace, concept, unknown_decl, using_decl, template_template_parameter, attribute_argument, interface, pound_import, property), type (the C++ type of the code item), path (the path to the file where the code item is defined), line (the line number where the code item is defined), parent_id (the ID of the parent code item, if applicable), and parent_name (the name of the parent code item, if applicable).",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string"
}
},
"required": [
"query"
]
}
}
]
},
@@ -6732,7 +6627,6 @@
"dependencies": {
"@github/copilot-language-server": "^1.266.0",
"@vscode/extension-telemetry": "^0.9.6",
"child_process": "^1.0.2",
"chokidar": "^3.6.0",
"comment-json": "^4.2.3",
"escape-string-regexp": "^2.0.0",
@@ -6745,7 +6639,6 @@
"plist": "^3.1.0",
"posix-getopt": "^1.2.1",
"shell-quote": "^1.8.1",
"sqlite3": "^5.1.7",
"ssh-config": "^4.4.4",
"tmp": "^0.2.3",
"vscode-cpptools": "^6.1.0",
@@ -6757,6 +6650,5 @@
"resolutions": {
"postcss": "^8.4.31",
"gulp-typescript/**/glob-parent": "^5.1.2"
},
"packageManager": "[email protected]+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
}
}
+3 -1
View File
@@ -880,7 +880,9 @@
"c_cpp.debuggers.showDisplayString.description": "When a visualizerFile is specified, showDisplayString will enable the display string. Turning this option on can cause slower performance during debugging.",
"c_cpp.debuggers.environment.description": {
"message": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].",
"comment": "{Locked=\"[ { \\\"name\": \\\"\"} {Locked=\"\\\", \\\"value\\\": \\\"\"} {Locked=\"\\\" } ]\"} {Locked=\"[ { \\\"\"} {Locked=\"\\\": \\\"\"} {Locked=\"\\\" } ]\"}"
"comment": [
"{Locked=\"[ { \\\"name\": \\\"\"} {Locked=\"\\\", \\\"value\\\": \\\"\"} {Locked=\"\\\" } ]\"} {Locked=\"[ { \\\"\"} {Locked=\"\\\": \\\"\"} {Locked=\"\\\" } ]\"}"
]
},
"c_cpp.debuggers.envFile.description": "Absolute path to a file containing environment variable definitions. This file has key value pairs separated by an equals sign per line. E.g. KEY=VALUE.",
"c_cpp.debuggers.additionalSOLibSearchPath.description": "Semicolon separated list of directories to use to search for .so files. Example: \"c:\\dir1;c:\\dir2\".",
+7 -3
View File
@@ -585,6 +585,9 @@ export interface CopilotCompletionContextParams {
uri: string;
caretOffset: number;
featureFlag: CopilotCompletionContextFeatures;
maxSnippetCount: number;
maxSnippetLength: number;
doAggregateSnippets: boolean;
}
// Requests
@@ -843,7 +846,7 @@ export interface Client {
getIncludes(uri: vscode.Uri, maxDepth: number): Promise<GetIncludesResult>;
getChatContext(uri: vscode.Uri, token: vscode.CancellationToken): Promise<ChatContextResult>;
filesEncodingChanged(filesEncodingChanged: FilesEncodingChanged): void;
getCompletionContext(fileName: vscode.Uri, caretOffset: number, featureFlag: CopilotCompletionContextFeatures, token: vscode.CancellationToken): Promise<CopilotCompletionContextResult>;
getCompletionContext(fileName: vscode.Uri, caretOffset: number, featureFlag: CopilotCompletionContextFeatures, maxSnippetCount: number, maxSnippetLength: number, doAggregateSnippets: boolean, token: vscode.CancellationToken): Promise<CopilotCompletionContextResult>;
}
export function createClient(workspaceFolder?: vscode.WorkspaceFolder): Client {
@@ -2352,11 +2355,12 @@ export class DefaultClient implements Client {
}
public async getCompletionContext(file: vscode.Uri, caretOffset: number, featureFlag: CopilotCompletionContextFeatures,
maxSnippetCount: number, maxSnippetLength: number, doAggregateSnippets: boolean,
token: vscode.CancellationToken): Promise<CopilotCompletionContextResult> {
await withCancellation(this.ready, token);
return DefaultClient.withLspCancellationHandling(
() => this.languageClient.sendRequest(CopilotCompletionContextRequest,
{ uri: file.toString(), caretOffset, featureFlag }, token), token);
{ uri: file.toString(), caretOffset, featureFlag, maxSnippetCount, maxSnippetLength, doAggregateSnippets }, token), token);
}
/**
@@ -4277,5 +4281,5 @@ class NullClient implements Client {
getIncludes(uri: vscode.Uri, maxDepth: number): Promise<GetIncludesResult> { return Promise.resolve({} as GetIncludesResult); }
getChatContext(uri: vscode.Uri, token: vscode.CancellationToken): Promise<ChatContextResult> { return Promise.resolve({} as ChatContextResult); }
filesEncodingChanged(filesEncodingChanged: FilesEncodingChanged): void { }
getCompletionContext(file: vscode.Uri, caretOffset: number, featureFlag: CopilotCompletionContextFeatures, token: vscode.CancellationToken): Promise<CopilotCompletionContextResult> { return Promise.resolve({} as CopilotCompletionContextResult); }
getCompletionContext(file: vscode.Uri, caretOffset: number, featureFlag: CopilotCompletionContextFeatures, maxSnippetCount: number, maxSnippetLength: number, doAggregateSnippets: boolean, token: vscode.CancellationToken): Promise<CopilotCompletionContextResult> { return Promise.resolve({} as CopilotCompletionContextResult); }
}
@@ -1612,12 +1612,16 @@ export class CppProperties {
resolvedCompilerPath = which.sync(config.compilerPath, { nothrow: true });
}
if (resolvedCompilerPath === undefined) {
if (!resolvedCompilerPath) {
resolvedCompilerPath = this.resolvePath(config.compilerPath);
}
const settings: CppSettings = new CppSettings(this.rootUri);
const compilerPathAndArgs: util.CompilerPathAndArgs = util.extractCompilerPathAndArgs(!!settings.legacyCompilerArgsBehavior, resolvedCompilerPath);
// compilerPath + args in the same string isn't working yet.
const skipFullCommandString = !compilerPathAndArgs.compilerName && resolvedCompilerPath.includes(" ");
if (resolvedCompilerPath
&& !skipFullCommandString
// Don't error cl.exe paths because it could be for an older preview build.
&& compilerPathAndArgs.compilerName.toLowerCase() !== "cl.exe"
&& compilerPathAndArgs.compilerName.toLowerCase() !== "cl") {
@@ -1795,7 +1799,7 @@ export class CppProperties {
if (!this.configurationJson) {
return;
}
if ((this.configurationJson.enableConfigurationSquiggles !== undefined && !this.configurationJson.enableConfigurationSquiggles) ||
if ((this.configurationJson.enableConfigurationSquiggles === false) ||
(this.configurationJson.enableConfigurationSquiggles === undefined && !settings.defaultEnableConfigurationSquiggles)) {
this.diagnosticCollection.clear();
return;
@@ -6,7 +6,7 @@ import { ContextResolver, ResolveRequest, SupportedContextItem } from '@github/c
import { randomUUID } from 'crypto';
import * as vscode from 'vscode';
import { DocumentSelector } from 'vscode-languageserver-protocol';
import { isNumber, isString } from '../common';
import { isBoolean, isNumber, isString } from '../common';
import { getOutputChannelLogger, Logger } from '../logger';
import * as telemetry from '../telemetry';
import { CopilotCompletionContextResult } from './client';
@@ -75,11 +75,21 @@ export class CopilotCompletionContextProvider implements ContextResolver<Support
private static readonly providerId = 'ms-vscode.cpptools';
private readonly completionContextCache: Map<string, CacheEntry> = new Map();
private static readonly defaultCppDocumentSelector: DocumentSelector = [{ language: 'cpp' }, { language: 'c' }, { language: 'cuda-cpp' }];
// A percentage expressed as an integer number, i.e. 50 means 50%.
private static readonly defaultTimeBudgetFactor: number = 50;
private static readonly defaultMaxCaretDistance = 4096;
// The default time budget for providing a value from resolve().
private static readonly defaultTimeBudgetMs: number = 7;
// Assume the cache is stale when the distance to the current caret is greater than this value.
private static readonly defaultMaxCaretDistance = 8192;
private static readonly defaultMaxSnippetCount = 15;
private static readonly defaultMaxSnippetLength = 10 * 1024; // 10KB
private static readonly defaultDoAggregateSnippets = true;
private completionContextCancellation = new vscode.CancellationTokenSource();
private contextProviderDisposable: vscode.Disposable | undefined;
static readonly CppContextProviderEnabledFeatures = 'enabledFeatures';
static readonly CppContextProviderTimeBudgetMs = 'timeBudgetMs';
static readonly CppContextProviderMaxSnippetCount = 'maxSnippetCount';
static readonly CppContextProviderMaxSnippetLength = 'maxSnippetLength';
static readonly CppContextProviderMaxDistanceToCaret = 'maxDistanceToCaret';
static readonly CppContextProviderDoAggregateSnippets = 'doAggregateSnippets';
constructor(private readonly logger: Logger) {
}
@@ -125,7 +135,8 @@ export class CopilotCompletionContextProvider implements ContextResolver<Support
// Get the completion context with a timeout and a cancellation token.
// The cancellationToken indicates that the value should not be returned nor cached.
private async getCompletionContextWithCancellation(context: ResolveRequest, featureFlag: CopilotCompletionContextFeatures,
startTime: number, telemetry: CopilotCompletionContextTelemetry, internalToken: vscode.CancellationToken):
maxSnippetCount: number, maxSnippetLength: number, doAggregateSnippets: boolean, startTime: number, telemetry: CopilotCompletionContextTelemetry,
internalToken: vscode.CancellationToken):
Promise<CopilotCompletionContextResult | undefined> {
const documentUri = context.documentContext.uri;
const caretOffset = context.documentContext.offset;
@@ -143,7 +154,7 @@ export class CopilotCompletionContextProvider implements ContextResolver<Support
const getCompletionContextStartTime = performance.now();
const copilotCompletionContext: CopilotCompletionContextResult =
await client.getCompletionContext(docUri, caretOffset, snippetsFeatureFlag, internalToken);
await client.getCompletionContext(docUri, caretOffset, snippetsFeatureFlag, maxSnippetCount, maxSnippetLength, doAggregateSnippets, internalToken);
telemetry.addRequestId(copilotCompletionContext.requestId);
logMessage += `(id:${copilotCompletionContext.requestId}) (getClientFor elapsed:${getClientForDuration}ms)`;
if (!copilotCompletionContext.areSnippetsMissing) {
@@ -155,7 +166,7 @@ export class CopilotCompletionContextProvider implements ContextResolver<Support
const duration = CopilotCompletionContextProvider.getRoundedDuration(startTime);
telemetry.addCacheComputedData(duration, cacheEntryId);
logMessage += ` cached in ${duration}ms ${copilotCompletionContext.traits.length} trait(s)`;
if (copilotCompletionContext.areSnippetsMissing) { logMessage += ` (missing code-snippets) `; }
if (copilotCompletionContext.areSnippetsMissing) { logMessage += ` (missing code snippets) `; }
else {
logMessage += ` and ${copilotCompletionContext.snippets.length} snippet(s)`;
logMessage += `, response.featureFlag:${copilotCompletionContext.featureFlag}, \
@@ -187,38 +198,96 @@ response.uri:${copilotCompletionContext.sourceFileUri || "<not-set>"}:${copilotC
telemetry.send("cache");
}
}
static readonly CppCodeSnippetsEnabledFeatures = 'CppCodeSnippetsEnabledFeatures';
static readonly CppCodeSnippetsTimeBudgetFactor = 'CppCodeSnippetsTimeBudgetFactor';
static readonly CppCodeSnippetsMaxDistanceToCaret = 'CppCodeSnippetsMaxDistanceToCaret';
private async fetchTimeBudgetFactor(context: ResolveRequest): Promise<number> {
static readonly paramsCache: Record<string, string | number | boolean> = {};
static paramsCacheCreated = false;
private getContextProviderParam<T>(paramName: string): T | undefined {
try {
const budgetFactor = context.activeExperiments.get(CopilotCompletionContextProvider.CppCodeSnippetsTimeBudgetFactor);
return (isNumber(budgetFactor) ? budgetFactor : CopilotCompletionContextProvider.defaultTimeBudgetFactor) / 100.0;
if (!CopilotCompletionContextProvider.paramsCacheCreated) {
CopilotCompletionContextProvider.paramsCacheCreated = true;
const paramsJson = new CppSettings().cppContextProviderParams;
if (isString(paramsJson)) {
try {
const params = JSON.parse(paramsJson.replaceAll(/'/g, '"'));
for (const key in params) {
CopilotCompletionContextProvider.paramsCache[key] = params[key];
}
} catch (e) {
console.warn(`getContextProviderParam(): error parsing getContextProviderParam: `, e);
}
}
}
return CopilotCompletionContextProvider.paramsCache[paramName] as T;
} catch (e) {
console.warn(`fetchTimeBudgetFactor(): error fetching ${CopilotCompletionContextProvider.CppCodeSnippetsTimeBudgetFactor}, using default: `, e);
return CopilotCompletionContextProvider.defaultTimeBudgetFactor;
console.warn(`getContextProviderParam(): error fetching getContextProviderParam: `, e);
return undefined;
}
}
private async fetchTimeBudgetMs(context: ResolveRequest): Promise<number> {
try {
const timeBudgetMs = this.getContextProviderParam(CopilotCompletionContextProvider.CppContextProviderTimeBudgetMs) ??
context.activeExperiments.get(CopilotCompletionContextProvider.CppContextProviderTimeBudgetMs);
return isNumber(timeBudgetMs) ? timeBudgetMs : CopilotCompletionContextProvider.defaultTimeBudgetMs;
} catch (e) {
console.warn(`fetchTimeBudgetMs(): error fetching ${CopilotCompletionContextProvider.CppContextProviderTimeBudgetMs}, using default: `, e);
return CopilotCompletionContextProvider.defaultTimeBudgetMs;
}
}
private async fetchMaxDistanceToCaret(context: ResolveRequest): Promise<number> {
try {
const maxDistance = context.activeExperiments.get(CopilotCompletionContextProvider.CppCodeSnippetsMaxDistanceToCaret);
const maxDistance = this.getContextProviderParam(CopilotCompletionContextProvider.CppContextProviderMaxDistanceToCaret) ??
context.activeExperiments.get(CopilotCompletionContextProvider.CppContextProviderMaxDistanceToCaret);
return isNumber(maxDistance) ? maxDistance : CopilotCompletionContextProvider.defaultMaxCaretDistance;
} catch (e) {
console.warn(`fetchMaxDistanceToCaret(): error fetching ${CopilotCompletionContextProvider.CppCodeSnippetsMaxDistanceToCaret}, using default: `, e);
console.warn(`fetchMaxDistanceToCaret(): error fetching ${CopilotCompletionContextProvider.CppContextProviderMaxDistanceToCaret}, using default: `, e);
return CopilotCompletionContextProvider.defaultMaxCaretDistance;
}
}
private async fetchMaxSnippetCount(context: ResolveRequest): Promise<number> {
try {
const maxSnippetCount = this.getContextProviderParam(CopilotCompletionContextProvider.CppContextProviderMaxSnippetCount) ??
context.activeExperiments.get(CopilotCompletionContextProvider.CppContextProviderMaxSnippetCount);
return isNumber(maxSnippetCount) ? maxSnippetCount : CopilotCompletionContextProvider.defaultMaxSnippetCount;
} catch (e) {
console.warn(`fetchMaxSnippetCount(): error fetching ${CopilotCompletionContextProvider.defaultMaxSnippetCount}, using default: `, e);
return CopilotCompletionContextProvider.defaultMaxSnippetCount;
}
}
private async fetchMaxSnippetLength(context: ResolveRequest): Promise<number> {
try {
const maxSnippetLength = this.getContextProviderParam(CopilotCompletionContextProvider.CppContextProviderMaxSnippetLength) ??
context.activeExperiments.get(CopilotCompletionContextProvider.CppContextProviderMaxSnippetLength);
return isNumber(maxSnippetLength) ? maxSnippetLength : CopilotCompletionContextProvider.defaultMaxSnippetLength;
} catch (e) {
console.warn(`fetchMaxSnippetLength(): error fetching ${CopilotCompletionContextProvider.defaultMaxSnippetLength}, using default: `, e);
return CopilotCompletionContextProvider.defaultMaxSnippetLength;
}
}
private async fetchDoAggregateSnippets(context: ResolveRequest): Promise<boolean> {
try {
const doAggregateSnippets = this.getContextProviderParam(CopilotCompletionContextProvider.CppContextProviderDoAggregateSnippets) ??
context.activeExperiments.get(CopilotCompletionContextProvider.CppContextProviderDoAggregateSnippets);
return isBoolean(doAggregateSnippets) ? doAggregateSnippets : CopilotCompletionContextProvider.defaultDoAggregateSnippets;
} catch (e) {
console.warn(`fetchDoAggregateSnippets(): error fetching ${CopilotCompletionContextProvider.defaultDoAggregateSnippets}, using default: `, e);
return CopilotCompletionContextProvider.defaultDoAggregateSnippets;
}
}
private async getEnabledFeatureNames(context: ResolveRequest): Promise<string[] | undefined> {
try {
const enabledFeatureNames = new CppSettings().cppCodeSnippetsFeatureNames ?? context.activeExperiments.get(CopilotCompletionContextProvider.CppCodeSnippetsEnabledFeatures);
const enabledFeatureNames = this.getContextProviderParam(CopilotCompletionContextProvider.CppContextProviderEnabledFeatures) ??
context.activeExperiments.get(CopilotCompletionContextProvider.CppContextProviderEnabledFeatures);
if (isString(enabledFeatureNames)) {
return enabledFeatureNames.split(',').map(s => s.trim());
}
} catch (e) {
console.warn(`getEnabledFeatures(): error fetching ${CopilotCompletionContextProvider.CppCodeSnippetsEnabledFeatures}: `, e);
console.warn(`getEnabledFeatureNames(): error fetching ${CopilotCompletionContextProvider.CppContextProviderEnabledFeatures}: `, e);
}
return undefined;
}
@@ -251,11 +320,32 @@ response.uri:${copilotCompletionContext.sourceFileUri || "<not-set>"}:${copilotC
this.completionContextCache.delete(fileUri);
}
private computeSnippetsResolved: boolean = true;
private async resolveResultAndKind(context: ResolveRequest, featureFlag: CopilotCompletionContextFeatures,
telemetry: CopilotCompletionContextTelemetry, defaultValue: CopilotCompletionContextResult | undefined,
resolveStartTime: number, timeBudgetMs: number, maxSnippetCount: number, maxSnippetLength: number, doAggregateSnippets: boolean,
copilotCancel: vscode.CancellationToken): Promise<[CopilotCompletionContextResult | undefined, CopilotCompletionKind]> {
if (this.computeSnippetsResolved) {
this.computeSnippetsResolved = false;
const computeSnippetsPromise = this.getCompletionContextWithCancellation(context, featureFlag,
maxSnippetCount, maxSnippetLength, doAggregateSnippets, resolveStartTime, telemetry.fork(), this.completionContextCancellation.token).finally(
() => this.computeSnippetsResolved = true
);
const res = await this.waitForCompletionWithTimeoutAndCancellation(
computeSnippetsPromise, defaultValue, timeBudgetMs, copilotCancel);
return res;
} else { return [defaultValue, defaultValue ? CopilotCompletionKind.GotFromCache : CopilotCompletionKind.MissingCacheMiss]; }
}
public async resolve(context: ResolveRequest, copilotCancel: vscode.CancellationToken): Promise<SupportedContextItem[]> {
const resolveStartTime = performance.now();
let logMessage = `Copilot: resolve(${context.documentContext.uri}:${context.documentContext.offset}):`;
const timeBudgetFactor = await this.fetchTimeBudgetFactor(context);
let logMessage = `Copilot: resolve(${context.documentContext.uri}: ${context.documentContext.offset}):`;
const cppTimeBudgetMs = await this.fetchTimeBudgetMs(context);
const maxCaretDistance = await this.fetchMaxDistanceToCaret(context);
const maxSnippetCount = await this.fetchMaxSnippetCount(context);
const maxSnippetLength = await this.fetchMaxSnippetLength(context);
const doAggregateSnippets = await this.fetchDoAggregateSnippets(context);
const telemetry = new CopilotCompletionContextTelemetry();
let copilotCompletionContext: CopilotCompletionContextResult | undefined;
let copilotCompletionContextKind: CopilotCompletionKind = CopilotCompletionKind.Unknown;
@@ -265,16 +355,12 @@ response.uri:${copilotCompletionContext.sourceFileUri || "<not-set>"}:${copilotC
try {
featureFlag = await this.getEnabledFeatureFlag(context);
telemetry.addRequestMetadata(context.documentContext.uri, context.documentContext.offset,
context.completionId, context.documentContext.languageId, { featureFlag, timeBudgetFactor, maxCaretDistance });
context.completionId, context.documentContext.languageId, { featureFlag, timeBudgetMs: cppTimeBudgetMs, maxCaretDistance });
if (featureFlag === undefined) { return []; }
this.completionContextCancellation.cancel();
this.completionContextCancellation = new vscode.CancellationTokenSource();
const cacheEntry: CacheEntry | undefined = this.completionContextCache.get(docUri.toString());
const defaultValue = cacheEntry?.[1];
const computeSnippetsPromise = this.getCompletionContextWithCancellation(context, featureFlag,
resolveStartTime, telemetry.fork(), this.completionContextCancellation.token);
[copilotCompletionContext, copilotCompletionContextKind] = await this.waitForCompletionWithTimeoutAndCancellation(
computeSnippetsPromise, defaultValue, context.timeBudget * timeBudgetFactor, copilotCancel);
[copilotCompletionContext, copilotCompletionContextKind] = await this.resolveResultAndKind(context, featureFlag,
telemetry.fork(), defaultValue, resolveStartTime, cppTimeBudgetMs, maxSnippetCount, maxSnippetLength, doAggregateSnippets, copilotCancel);
// Fix up copilotCompletionContextKind accounting for stale-cache-hits.
if (copilotCompletionContextKind === CopilotCompletionKind.GotFromCache &&
copilotCompletionContext && cacheEntry) {
@@ -292,12 +378,12 @@ response.uri:${copilotCompletionContext.sourceFileUri || "<not-set>"}:${copilotC
telemetry.addCopilotCanceled(duration);
throw new CopilotCancellationError();
}
logMessage += ` (id:${copilotCompletionContext?.requestId}) `;
logMessage += ` (id: ${copilotCompletionContext?.requestId})`;
return [...copilotCompletionContext?.snippets ?? [], ...copilotCompletionContext?.traits ?? []] as SupportedContextItem[];
} catch (e: any) {
if (e instanceof CopilotCancellationError) {
telemetry.addCopilotCanceled(CopilotCompletionContextProvider.getRoundedDuration(resolveStartTime));
logMessage += ` (copilot cancellation) `;
logMessage += ` (copilot cancellation)`;
throw e;
}
if (e instanceof InternalCancellationError) {
@@ -312,12 +398,12 @@ response.uri:${copilotCompletionContext.sourceFileUri || "<not-set>"}:${copilotC
throw e;
} finally {
const duration: number = CopilotCompletionContextProvider.getRoundedDuration(resolveStartTime);
logMessage += `featureFlag:${featureFlag?.toString()},`;
logMessage += `featureFlag:${featureFlag?.toString()}, `;
if (copilotCompletionContext === undefined) {
logMessage += ` result is undefined and no snippets provided (${copilotCompletionContextKind.toString()}), elapsed time:${duration}ms`;
logMessage += `result is undefined and no code snippets provided(${copilotCompletionContextKind.toString()}), elapsed time:${duration} ms`;
} else {
logMessage += ` for ${docUri}:${docOffset} provided ${copilotCompletionContext.snippets.length} code-snippet(s) (${copilotCompletionContextKind.toString()}\
${copilotCompletionContext?.areSnippetsMissing ? ", missing code-snippets" : ""}) and ${copilotCompletionContext.traits.length} trait(s), elapsed time:${duration}ms`;
logMessage += `for ${docUri}:${docOffset} provided ${copilotCompletionContext.snippets.length} code snippet(s)(${copilotCompletionContextKind.toString()}\
${copilotCompletionContext?.areSnippetsMissing ? ", missing code snippets" : ""}) and ${copilotCompletionContext.traits.length} trait(s), elapsed time:${duration} ms`;
}
telemetry.addResponseMetadata(copilotCompletionContext?.areSnippetsMissing ?? true,
copilotCompletionContext?.snippets.length, copilotCompletionContext?.traits.length,
@@ -349,7 +435,7 @@ ${copilotCompletionContext?.areSnippetsMissing ? ", missing code-snippets" : ""}
console.debug("Failed to register the Copilot Context Provider.");
properties["error"] = "Failed to register the Copilot Context Provider";
if (e instanceof CopilotContextProviderException) {
properties["error"] += `: ${e.message}`;
properties["error"] += `: ${e.message} `;
}
} finally {
telemetry.logCopilotEvent(registerCopilotContextProvider, { ...properties });
@@ -88,16 +88,19 @@ export class CopilotCompletionContextTelemetry {
}
public addRequestMetadata(uri: string, caretOffset: number, completionId: string,
languageId: string, { featureFlag, timeBudgetFactor, maxCaretDistance }: {
featureFlag?: CopilotCompletionContextFeatures;
timeBudgetFactor?: number; maxCaretDistance?: number;
languageId: string, { featureFlag, timeBudgetMs, maxCaretDistance, maxSnippetCount, maxSnippetLength, doAggregateSnippets }: {
featureFlag?: CopilotCompletionContextFeatures; timeBudgetMs?: number; maxCaretDistance?: number;
maxSnippetCount?: number; maxSnippetLength?: number; doAggregateSnippets?: boolean;
} = {}): void {
this.addProperty('request.completionId', completionId);
this.addProperty('request.languageId', languageId);
this.addMetric('request.caretOffset', caretOffset);
this.addProperty('request.featureFlag', featureFlag?.toString() ?? '<not-set>');
if (timeBudgetFactor !== undefined) { this.addMetric('request.timeBudgetFactor', timeBudgetFactor); }
if (timeBudgetMs !== undefined) { this.addMetric('request.timeBudgetMs', timeBudgetMs); }
if (maxCaretDistance !== undefined) { this.addMetric('request.maxCaretDistance', maxCaretDistance); }
if (maxSnippetCount !== undefined) { this.addMetric('request.maxSnippetCount', maxSnippetCount); }
if (maxSnippetLength !== undefined) { this.addMetric('request.maxSnippetLength', maxSnippetLength); }
if (doAggregateSnippets !== undefined) { this.addProperty('request.doAggregateSnippets', doAggregateSnippets.toString()); }
}
public addCppStandardVersionMetadata(standardVersion: string, elapsedMs: number): void {
+1 -262
View File
@@ -10,9 +10,8 @@ import fetch from 'node-fetch';
import * as StreamZip from 'node-stream-zip';
import * as os from 'os';
import * as path from 'path';
import * as sqlite3 from 'sqlite3';
import * as vscode from 'vscode';
import { CancellationToken, Range, integer } from 'vscode-languageclient';
import { CancellationToken, Range } from 'vscode-languageclient';
import * as nls from 'vscode-nls';
import { TargetPopulation } from 'vscode-tas-client';
import * as which from 'which';
@@ -38,8 +37,6 @@ import { NodeType, TreeNode } from './referencesModel';
import { CppSettings } from './settings';
import { LanguageStatusUI, getUI } from './ui';
import { makeLspRange, rangeEquals, showInstallCompilerWalkthrough } from './utils';
const cp = require('child_process');
// eslint-disable-next-line @typescript-eslint/no-unused-vars
nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })();
const localize: nls.LocalizeFunc = nls.loadMessageBundle();
@@ -270,235 +267,6 @@ export async function activate(): Promise<void> {
const tool = vscode.lm.registerTool('cpptools-lmtool-configuration', new CppConfigurationLanguageModelTool());
disposables.push(tool);
}
const getCppMacrosTool = vscode.lm.registerTool('get_cpp_macros', {
invoke: async (_options: vscode.LanguageModelToolInvocationOptions<void>, _token: CancellationToken) => {
// const db = new sqlite3.Database("C:/src/OpenTTD/.vs/OpenTTD/v17/main/Browse.VC.db");
const db = new sqlite3.Database("C:/Users/davidraygoza/source/repos/test1/.vs/test1/v17/Preview/Browse.VC.db");
const result: vscode.LanguageModelTextPart[] = [];
await new Promise<void>((resolve) => {
db.serialize(() => {
db.each(`SELECT ci.name AS name, start_line, f.name AS file_path FROM code_items ci JOIN files f ON ci.file_id = f.id WHERE ci.kind = 37 AND f.name LIKE 'C:\\Users\\davidraygoza\\source\\repos\\test1\\test1%' AND ci.name NOT LIKE '%_H' AND ci.name NOT LIKE '%_HPP'`,
// db.each(`SELECT ci.name AS name, start_line, f.name AS file_path FROM code_items ci JOIN files f ON ci.file_id = f.id WHERE ci.kind = 37 AND f.name LIKE 'C:\\DEV\\AGENT-MODE-TESTING\\OPENTTD\\SRC%' AND f.name NOT LIKE 'C:\\DEV\\AGENT-MODE-TESTING\\OPENTTD\\SRC\\3RDPARTY%' AND ci.name NOT LIKE '%_H' AND ci.name NOT LIKE '%_HPP'`,
(_err: any, row: any) => {
const path = row.file_path;
const content = fs.readFileSync(path, 'utf8').split(/\r\n|\r|\n/)[row.start_line - 1];
result.push(new vscode.LanguageModelTextPart(`${row.name} is defined in ${path} as "${content}"`));
},
(_err: any, _count: number) => {
resolve();
}
);
});
});
db.close();
return new vscode.LanguageModelToolResult(result);
}
});
disposables.push(getCppMacrosTool);
const runApplicationTool = vscode.lm.registerTool('run_application_tool', {
invoke: async (_options: vscode.LanguageModelToolInvocationOptions<void>, _token: CancellationToken) => {
const result: vscode.LanguageModelTextPart[] = [];
const configuration = {
type: 'cppvsdbg',
request: 'launch',
name: 'C++ Debug',
program: '${command:cmake.launchTargetPath}',
args: [],
stopAtEntry: false,
cwd: '${workspaceFolder}',
environment: [],
console: 'externalTerminal'
};
// Run the application by calling the "C:/Users/davidraygoza/Desktop/VSCodeModulesProject/build/cpp_modules_demo.exe" executable directly.
const execPath = "C:/Users/davidraygoza/Desktop/VSCodeModulesProject/build/cpp_modules_demo.exe";
try {
const output = cp.execFileSync(execPath, [], { encoding: 'utf8' });
result.push(new vscode.LanguageModelTextPart(`Application output:\n${output}`));
} catch (err) {
result.push(new vscode.LanguageModelTextPart(`Failed to run application: ${err instanceof Error ? err.message : String(err)}`));
}
// vscode.debug.startDebugging(vscode.workspace.workspaceFolders?.[0], configuration);
// vscode.debug.onDidTerminateDebugSession((session) => {
// console.log(`Debug session terminated: ${session.id}`);
// result.push(new vscode.LanguageModelTextPart(`Debug session terminated: ${session.id}`));
// });
// Instead of using a hardcoded configuration, show the user a list of existing launch configurations to pick from.
// const launchConfigs = vscode.workspace.getConfiguration('launch', vscode.workspace.workspaceFolders?.[0]?.uri);
// const configurations = launchConfigs.get<any[]>('configurations') ?? [];
// if (configurations.length === 0) {
// result.push(new vscode.LanguageModelTextPart("No launch configurations found in launch.json."));
// } else {
// const items = configurations.map(cfg => ({
// label: cfg.name,
// description: cfg.type,
// config: cfg
// }));
// const picked = await vscode.window.showQuickPick(items, { placeHolder: 'Select a launch configuration to start debugging' });
// if (picked) {
// await vscode.debug.startDebugging(vscode.workspace.workspaceFolders?.[0], picked.config);
// result.push(new vscode.LanguageModelTextPart(`Started debugging with configuration: ${picked.label}`));
// } else {
// result.push(new vscode.LanguageModelTextPart("No configuration selected."));
// }
// }
return new vscode.LanguageModelToolResult(result);
}
});
disposables.push(runApplicationTool);
const setBreakpointTool = vscode.lm.registerTool('set_breakpoint_tool', {
invoke: async (_options: vscode.LanguageModelToolInvocationOptions<{ filePath: string, lineNumber: integer, columnNumber: integer, condition: string }>, _token: CancellationToken) => {
const result: vscode.LanguageModelTextPart[] = [];
const fileUri = vscode.Uri.file(_options.input.filePath);
const location = new vscode.Location(fileUri, new vscode.Position(_options.input.lineNumber - 1, _options.input.columnNumber - 1)); // line 10 (0-based)
const condition = _options.input.condition ?? undefined; // expects a string or undefined
let breakpoint: vscode.SourceBreakpoint;
if (condition != undefined) {
breakpoint = new vscode.SourceBreakpoint(location, true, condition);
}
else {
breakpoint = new vscode.SourceBreakpoint(location, true);
}
try {
await vscode.debug.addBreakpoints([breakpoint]);
result.push(new vscode.LanguageModelTextPart("Breakpoint set at line " + _options.input.lineNumber + " in " + _options.input.filePath));
} catch (error) {
result.push(new vscode.LanguageModelTextPart("Failed to set breakpoint: " + (error instanceof Error ? error.message : String(error))));
}
return new vscode.LanguageModelToolResult(result);
}
});
disposables.push(setBreakpointTool);
const runInDevCmdTool = vscode.lm.registerTool('initialize_vs_dev_cmd_tool', {
invoke: async (_options: vscode.LanguageModelToolInvocationOptions<void>, _token: CancellationToken) => {
const result: vscode.LanguageModelTextPart[] = [];
// Example: spawn a shell to run VsDevCmd.bat and capture output
// options.input.query
const vsDevCmdPath = `"C:/Program Files/Microsoft Visual Studio/18/Preview/Common7/Tools/VsDevCmd.bat"`;
// Try to find an existing terminal named "Agent Mode Dev Cmd Terminal"
let terminal = vscode.window.terminals.find(t => t.name === "Copilot");
if (!terminal) {
// If the Copilot terminal does not exist, fallback to the default terminal we will create.
terminal = vscode.window.terminals.find(t => t.name === "Agent Mode Dev Cmd Terminal");
if (!terminal) {
terminal = vscode.window.createTerminal({
name: "Agent Mode Dev Cmd Terminal",
shellPath: "cmd.exe"
});
}
}
terminal.show(); // Show the terminal
// Start the VS Dev Command prompt and wait for it to initialize before sending the prompt
terminal.sendText("cmd.exe /k " + vsDevCmdPath);
await new Promise(resolve => setTimeout(resolve, 5000));
result.push(new vscode.LanguageModelTextPart(vsDevCmdPath + " started in terminal"));
// const cmd = `cmd.exe`;
// const args = ['/k', `${vsDevCmdPath}`];
// await new Promise<void>((resolve) => {
// const child = spawn(cmd, args, { shell: true });
// if (_options.input && _options.input.prompt) {
// child.stdin.write(_options.input.prompt + '\n');
// }
// let output = '';
// child.stdout.on('data', (data: Buffer) => {
// output += data.toString();
// });
// child.stderr.on('data', (data: Buffer) => {
// output += data.toString();
// });
// result.push(new vscode.LanguageModelTextPart(output));
// resolve();
// child.on('close', () => {
// result.push(new vscode.LanguageModelTextPart(output));
// resolve();
// });
// });
return new vscode.LanguageModelToolResult(result);
}
});
disposables.push(runInDevCmdTool);
const getCppStringsTool = vscode.lm.registerTool('get_cpp_strings', {
invoke: async (_options: vscode.LanguageModelToolInvocationOptions<void>, _token: CancellationToken) => {
const db = new sqlite3.Database("C:/Users/davidraygoza/source/repos/test1/.vs/test1/v17/main/Browse.VC.db");
const result: vscode.LanguageModelTextPart[] = [];
await new Promise<void>((resolve) => {
db.serialize(() => {
db.each(`SELECT ci.name AS name, start_line, f.name AS file_path FROM code_items ci JOIN files f ON ci.file_id = f.id WHERE ci.kind = 28 AND f.name LIKE 'C:\\Users\\davidraygoza\\source\\repos\\test1\\test1%' AND ci.name NOT LIKE '%_H' AND ci.name NOT LIKE '%_HPP'`,
(_err: any, row: any) => {
const path = row.file_path;
const content = fs.readFileSync(path, 'utf8').split(/\r\n|\r|\n/)[row.start_line - 1];
result.push(new vscode.LanguageModelTextPart(`${row.name} is defined in ${path} as "${content}"`));
},
(_err: any, _count: number) => {
resolve();
}
);
});
});
db.close();
return new vscode.LanguageModelToolResult(result);
}
});
disposables.push(getCppStringsTool);
const tool3 = vscode.lm.registerTool('build_cmake_project', {
invoke: async (_options: vscode.LanguageModelToolInvocationOptions<void>, _token: CancellationToken) => {
const result: vscode.LanguageModelTextPart[] = [];
await vscode.commands.executeCommand('cmake.build');
result.push(new vscode.LanguageModelTextPart(vscode.workspace.textDocuments.map(doc => doc.getText()).filter(text => text.includes('[build]'))[0]));
return new vscode.LanguageModelToolResult(result);
}
});
disposables.push(tool3);
const tool4 = vscode.lm.registerTool('get_cpp_code_items', {
invoke: async (options: vscode.LanguageModelToolInvocationOptions<{ query: string }>, _token: CancellationToken) => {
const db = new sqlite3.Database("C:/Users/davidraygoza/source/repos/test1/.vs/test1/v17/main/Browse.VC.db");
const result: vscode.LanguageModelTextPart[] = [];
await new Promise<void>((resolve) => {
db.serialize(() => {
db.each(options.input.query,
(_err: any, row: any) => {
result.push(new vscode.LanguageModelTextPart(JSON.stringify(_err ?? row)));
},
(_err: any, _count: number) => {
if (_err) {
result.push(new vscode.LanguageModelTextPart(JSON.stringify(_err)));
}
resolve();
}
);
});
});
db.close();
return new vscode.LanguageModelToolResult(result);
}
});
disposables.push(tool4);
const tool5 = vscode.lm.registerTool('get_errors', {
invoke: async (_options: vscode.LanguageModelToolInvocationOptions<void>, _token: CancellationToken) => {
const result: vscode.LanguageModelTextPart[] = [];
// problems.update();
// const allDiagnostics = await problems.getProblems();
// allDiagnostics.forEach(error => {
// const fileUri = error.relatedInformation?.[0]?.location.uri ?? undefined;
// const filePath = fileUri?.fsPath ?? "undefined";
// result.push(new vscode.LanguageModelTextPart(`${error.message} in file ${filePath} at line ${error.range.start.line + 1}`));
// });
return new vscode.LanguageModelToolResult(result);
}
});
disposables.push(tool5);
// cpptools = cppt.getCppToolsTestApi(cpp.Version.v6);
}
await registerRelatedFilesProvider();
@@ -513,35 +281,6 @@ export function updateLanguageConfigurations(): void {
languageConfigurations.push(vscode.languages.setLanguageConfiguration('cuda-cpp', getLanguageConfig('cuda-cpp')));
}
// class Problems {
// private problems?: vscode.Diagnostic[] = undefined;
// public update() {
// const activeEditor = vscode.window.activeTextEditor;
// if (activeEditor) {
// this.problems = vscode.languages.getDiagnostics(activeEditor.document.uri);
// } else {
// this.problems = [];
// }
// }
// public getProblems() {
// return new Promise<vscode.Diagnostic[]>(resolve => {
// const check = () => {
// if (this.problems !== undefined) {
// const filteredProblems = this.problems.filter(problem => problem.severity === vscode.DiagnosticSeverity.Error);
// resolve(filteredProblems);
// this.problems = undefined;
// } else {
// setTimeout(check, 5000);
// void vscode.commands.executeCommand('C_Cpp.RestartIntelliSenseForFile');
// }
// };
// check();
// });
// }
// }
// const problems = new Problems();
/**
* workspace events
*/
+2 -2
View File
@@ -478,8 +478,8 @@ export class CppSettings extends Settings {
}
return this.getAsString("copilotHover");
}
public get cppCodeSnippetsFeatureNames(): string | undefined {
const value = super.Section.get<any>("cppCodeSnippetsFeatureNames");
public get cppContextProviderParams(): string | undefined {
const value = super.Section.get<any>("copilotContextProviderParams");
if (isString(value)) {
return value;
}