Compare commits

...
137 Commits
Author SHA1 Message Date
Sean McManus 25d74973b0 Update TPN for release. (#6622) 2020-12-03 17:44:20 -08:00
Sean McManus adf99597f6 Merge pull request #6620 from microsoft/seanmcm/cherryPick6619
cherry pick6619
2020-12-03 16:12:07 -08:00
Sean McManus 52fe7952d6 Update changelog. 2020-12-03 14:14:30 -08:00
Sean McManus aa4c5df4b7 Fix cwd. (#6619)
Fixes #6618
2020-12-03 14:11:07 -08:00
Sean McManus a3de2f9bee Merge pull request #6614 from microsoft/seanmcm/cherryPick6609
cherry pick 6609
2020-12-02 22:17:06 -08:00
Colen Garoutte-Carson 28f6dd66d2 Add field to activation telemetry for web-based Codespaces (#6609) 2020-12-02 22:15:07 -08:00
Colen Garoutte-Carson 89fd6a960c Remove telemetry for remoteName (#6537) 2020-12-02 22:10:26 -08:00
Sean McManus 8b06e7d04f Merge pull request #6607 from microsoft/seanmcm/1_1_3
Merge for 1.1.3 release
2020-12-01 20:53:46 -08:00
Sean McManus b1021432ec Update changelog and @types/vscode 2020-12-01 17:41:56 -08:00
Sean McManus 2cca514128 Fix infinite loop after cpptools crashes. (#6604)
* Fix infinite loop after cpptools crashes: https://github.com/microsoft/vscode-cpptools/issues/6603
2020-12-01 17:25:04 -08:00
Sean McManus 2e33027272 Fix cppbuild task warnings. (#6557)
* Fix cppbuild task warnings: https://github.com/microsoft/vscode-cpptools/issues/6556
2020-12-01 17:21:30 -08:00
Elaheh Rashedi 73a0b95df7 Add localization to strings in LanguageServer\cppBuildTaskProvider.ts (#6544)
* localizing for task provider

* localize single_file_mode_not_available

* remove end of line from localalized string

* modify error(s)

* remove space from localized string

* remove space from localized string
2020-12-01 17:20:56 -08:00
Sean McManus 39f32a3b45 Fix build task bugs. (#6539)
* Fix build task bugs.
* Use VS Code's variable resolution.
2020-12-01 17:20:42 -08:00
Sean McManus 16f352169c 1_1_2 release (#6532)
* Fix fileDirname. (#6482)
* Update changelog.
* Update the version.
2020-11-17 18:02:59 -08:00
Sean McManus adff6e66d5 Merge pull request #6481 from microsoft/seanmcm/1_1_1_release
1_1_1 release
2020-11-09 16:05:21 -08:00
Sean McManus 1877aed36a Merge. 2020-11-09 16:01:38 -08:00
Sean McManus 49d9cfd5ee Fix invalid architectures. (#6480)
* Fix invalid architectures.
2020-11-09 15:56:54 -08:00
csigsandazure-pipelines[bot] 6867272d06 Localization - Translated Strings (#6477)
Co-authored-by: azure-pipelines[bot] <azure-pipelines[bot]@users.noreply.github.com>
2020-11-09 09:50:26 -08:00
csigs 890dae3a87 Localization - Translated Strings (#6455) 2020-11-06 11:30:56 -08:00
Sean McManus 9a7fa21028 Update cpptools.json (#6452)
* Update cpptools.json
2020-11-05 19:09:49 -08:00
Sean McManus 50c1efadd8 Fix version. (#6449) 2020-11-05 15:41:17 -08:00
Sean McManus 83df90082a Merge pull request #6448 from microsoft/seanmcm/1_1_0_release
1_1_0 release
2020-11-05 15:30:17 -08:00
Sean McManus b1d7d19ed7 Merge branch 'master' into seanmcm/1_1_0_release 2020-11-05 15:25:21 -08:00
Sean McManus 64de2af400 Update changelog and integrity hashes. (#6447) 2020-11-05 15:24:18 -08:00
csigs 646c3e5ca5 Localization - Translated Strings (#6440) 2020-11-04 12:10:23 -08:00
Elaheh Rashedi f0be1a2d76 add detail to menuItem (#6435) 2020-11-03 16:18:41 -08:00
Elaheh Rashedi df8523e550 "F5" using the correct build task (#6420)
* shows details correctly

* change default name

* generating unique names

* lint errors

* lint errors

* modify resolvetask

* modify details
2020-11-03 14:39:48 -08:00
David Sanders 7d7b898ee6 Fix whitespace in imports (#6421) 2020-11-03 14:12:09 -08:00
Elaheh Rashedi a94de6edff update changelog for insiders 4 (#6429)
* insiders 4

* order

* order 2

* PR #
2020-11-03 13:05:29 -08:00
csigsandDevDiv Build Lab - Dev14 6fbf85df90 Localization - Translated Strings (#6432)
Co-authored-by: DevDiv Build Lab - Dev14 <[email protected]>
2020-11-03 10:07:38 -08:00
csigsandDevDiv Build Lab - Dev14 dfa59e12aa Localization - Translated Strings (#6425)
Co-authored-by: DevDiv Build Lab - Dev14 <[email protected]>
2020-11-02 11:25:55 -08:00
Colen Garoutte-Carson 5a5903ab25 Add telemetry for machineId changes and remoteName (#6419) 2020-10-30 17:22:49 -07:00
Colen Garoutte-Carson fc7cdac41b Fix paths to edge message files (#6418) 2020-10-30 16:22:02 -07:00
Andrew Wang 68733b4ea6 Update DebugServerPath description (#6414) 2020-10-30 14:17:48 -07:00
csigsandDevDiv Build Lab - Dev14 9a9d58f76b Localization - Translated Strings (#6416)
Co-authored-by: DevDiv Build Lab - Dev14 <[email protected]>
2020-10-30 10:15:11 -07:00
Sean McManus 3dd3e8857f Don't register cppvsdbg for Windows ARM. (#6401) 2020-10-29 13:33:07 -07:00
Colen Garoutte-Carson b25e5192bb Various bug fixes with vcFormat (#6408) 2020-10-29 11:37:09 -07:00
csigs c18f3f67b3 Localization - Translated Strings (#6405) 2020-10-28 12:49:22 -07:00
Elaheh Rashedi e5b3136d3b show details of the compiler path (#6377)
* show details of the compiler path

* remove detail from launch.json

* rename noDetailConfig

* lint error

* add comments
2020-10-27 17:26:01 -07:00
Elaheh Rashedi 554c91430b fix terminal issues (windows/linux/linux-on-wsl verified) (#6384)
* fix tab issues on g++ on windows

* add ;

* windows+linux verified
2020-10-27 13:03:28 -07:00
csigs 5ee1034856 Localization - Translated Strings (#6400) 2020-10-27 11:11:11 -07:00
Andrew Wang dcc1f93f1c ResolveDebugConfigurationWithSubstitutedVariable (#6382)
Add resolveDebugConfigurationWithSubstitutedVariables for
configurationProviders.

Keeping resolveDebugConfiguration to return null if type is not provided
in order to prompt `provideDebugConfiguration`.
2020-10-26 15:00:21 -07:00
csigsandDevDiv Build Lab - Dev14 7690c1a1dd Localization - Translated Strings (#6380)
Co-authored-by: DevDiv Build Lab - Dev14 <[email protected]>
2020-10-26 13:21:41 -07:00
Elaheh Rashedi 3832029be4 don't overwrite options and args (#6374)
* dont overwrite options and args

* linter error

* update changelog
2020-10-22 16:47:23 -07:00
Sean McManus 61ab30fe87 Fix insiders bug. (#6373) 2020-10-22 14:56:12 -07:00
Andrew Wang 839eefa032 [cppdbg] Support new sourceFileMap schema (#6319)
* [cppdbg] Support new sourceFileMap schema

For cppdbg, sourceFileMap can be used for binding breakpoints.
If keeping with the old format "<source-path>":"<target-path>", it will
always be used for breakpoints.

If you use the new:
"<compile-path>" : {
   "editorPath": "<target-path>",
   "useForBreakpoints": true
}

The sourceMap will only be used for frame enumeration.

* Fix linter issues

* Addressing PR comments
2020-10-22 13:36:06 -07:00
Sean McManus 7779eb0a56 update1 1 0 insider3 changelog (#6371)
* Update changelog.
2020-10-22 13:27:16 -07:00
csigsandDevDiv Build Lab - Dev14 da43cf9b15 Localization - Translated Strings (#6367)
Co-authored-by: DevDiv Build Lab - Dev14 <[email protected]>
2020-10-21 11:20:54 -07:00
Sean McManus 73653f894e Fixes for Windows ARM64 (#6337)
* Fixes for Windows ARM64
* Update node types version.
2020-10-20 19:38:16 -07:00
余腾靖 12feb81aa1 Add intelliSenseUpdateDelay setting (#6344)
* Add intelliSenseUpdateDelay setting
* Typo: settings_spaceWithinSquareBracketse -> settings_spaceWithinSquareBrackets
2020-10-20 10:54:37 -07:00
Elaheh Rashedi e41b32c5cd setup time (#6351) 2020-10-19 12:59:38 -07:00
Colen Garoutte-Carson f73d351981 Action bug fixes (#6336) 2020-10-16 17:44:29 -07:00
Elaheh Rashedi 5f43d5fcc1 add telemetry updates for openfile (#6257)
* copy ClientCollection.ts

* copy extension.ts

* copy client.ts

* rename LS message

* create new file

* spath to path

* remove uri with logged telemtery

* fix linter errors

* fix linter errors 2

* fix linter error 3

* change warm start collection

* nit

* bring setDidOpenTime to the beginnign of didOpen

* reply to reviews
2020-10-16 17:18:54 -07:00
Colen Garoutte-Carson 444b3ccb9e Add action to reopen feature requests that get enough votes (#6305) 2020-10-16 14:14:12 -07:00
Sean McManus a052d76f62 Revert "Use 'resolveDebugConfigWithSubVariables' (#6328)" (#6331)
This reverts commit 2ec525e129.
2020-10-15 19:46:51 -07:00
Colen Garoutte-Carson 8ac65e65b5 Only show warning channel the first time populated (#6330) 2020-10-15 17:55:42 -07:00
Andrew Wang 2ec525e129 Use 'resolveDebugConfigWithSubVariables' (#6328)
This PR uses the
DebugConfigurationProvider.resolveDebugConfigurationWithSubstitutedVariables
which allows the debug configuration to wait for the preLaunchTask to
complete before continuing on and resolving variables that may have been
set in the 'tasks.json'.

This also resolves the logging issue where the 'Build and Debug Active
File' preLaunchTask uses the current file but we switch to the output
window for logging.
2020-10-15 16:13:32 -07:00
Sean McManus b124e441fa Update changelog for 1.1.0-insiders2. (#6327) 2020-10-15 15:55:41 -07:00
Colen Garoutte-Carson ff6fd3473b Remove files for Azure Pipeline CI (#6313) 2020-10-13 21:44:35 -07:00
Colen Garoutte-Carson da110e78f0 CI workflows based on GitHub actions (#6312) 2020-10-13 20:07:52 -07:00
Colen Garoutte-Carson 89f609d70b Prevent config warnings from stealing user focus (#6310) 2020-10-13 19:45:57 -07:00
Andrew Wang 9dfb2c6060 Fix 'Build and Debug Active File' race condition with EngineLogs (#6304)
* Fix 'Build and Debug Active File' race condition with EngineLogs

If users use 'Build and Debug Active File' with "engineLogging", the resolveDebugConfigurations will quickly switch to the output window and `${fileBasenameNoExtension}` will resolve to something similar to `./extension-output-#5`.

This may be a bug with VS Code determining the output window to be a file, but this will unblock users who need to enable engine logging for this scenario.
2020-10-13 17:01:59 -07:00
Colen Garoutte-Carson 20759af979 Regenerate action JS files (#6306) 2020-10-13 13:41:03 -07:00
Colen Garoutte-Carson 2dbe8e4366 Fix issue causing locker action to lock closed issues too early (#6303) 2020-10-13 12:00:22 -07:00
Sean McManus f94e7e05e0 Update changelog. (#6299)
* Update changelog.
2020-10-13 01:03:30 -07:00
Sean McManus aa2b618ff6 Update VS version. (#6298) 2020-10-12 18:31:20 -07:00
Colen Garoutte-Carson 551642a987 Add timestamps to config warning output (#6297) 2020-10-12 18:10:02 -07:00
csigs c1c59368c1 Localization - Translated Strings (#6295) 2020-10-12 12:59:42 -07:00
Colen Garoutte-Carson 6aa6146689 Add closers for 'by design' and 'duplicate' issues (#6286) 2020-10-09 13:23:54 -07:00
csigsandvs-mobiletools-engineering-service2 558a3cf892 Localization - Translated Strings (#6287)
Co-authored-by: vs-mobiletools-engineering-service2 <[email protected]>
2020-10-09 10:23:24 -07:00
Colen Garoutte-Carson 659cc18243 Corrected some missed occurances of gnu18 -> gnu17 (#6284) 2020-10-08 17:49:34 -07:00
Colen Garoutte-Carson 1e5c015f99 Restrict feature request close action to Triage and Backlog milestones (#6283) 2020-10-08 16:15:33 -07:00
Colen Garoutte-Carson 225a8631d2 Add custom actions to close and lock stale issues (#6241) 2020-10-08 14:11:31 -07:00
csigsandvs-mobiletools-engineering-service2 b8cd5d8bb0 Localization - Translated Strings (#6274)
Co-authored-by: vs-mobiletools-engineering-service2 <[email protected]>
2020-10-08 10:45:07 -07:00
csigs 9fcdafb9cc [Auto] Localization - Translated Strings (#6268) 2020-10-07 16:43:48 -07:00
Sean McManus c71e06a208 Update changelog for 1.1.0-insiders. (#6263) 2020-10-06 16:14:01 -07:00
csigsandDevDiv Build Lab - Dev14 77319d5ce0 Localization - Translated Strings (#6261)
Co-authored-by: DevDiv Build Lab - Dev14 <[email protected]>
2020-10-06 16:02:59 -07:00
Andrew Wang 80ea255a7c Merge branch 'master' into release 2020-10-06 13:05:19 -07:00
Michelle Matias 7dcf4db276 Add memory usage limit of an IntelliSense process (#6240) 2020-10-05 14:19:12 -07:00
csigs eac4703376 Localization - Translated Strings (#6253) 2020-10-05 12:35:50 -07:00
csigsandDevDiv Build Lab - Dev14 ca4482d664 Localization - Translated Strings (#6243)
Co-authored-by: DevDiv Build Lab - Dev14 <[email protected]>
2020-10-02 10:51:25 -07:00
Sean McManus b31c42e629 Update IntelliSense localized strings. (#6220) 2020-10-01 16:28:18 -07:00
csigs 754dd9a440 Localization - Translated Strings (#6233) 2020-09-30 12:10:32 -07:00
Elaheh Rashedi 25dc96ac27 build clang-format binary for Windows32 instead of 64 (#6223)
* update fwlink

* updare integrity
2020-09-29 22:57:58 -07:00
Sean McManus 1a03dd2a1d Add runtime licenses (#6140)
* Add RuntimeLicenses
* Update version and fwlinks.
* Update gitignore.
2020-09-29 13:36:19 -07:00
csigsandDevDiv Build Lab - Dev14 2136b84aae Localization - Translated Strings (#6227)
Co-authored-by: DevDiv Build Lab - Dev14 <[email protected]>
2020-09-29 10:23:11 -07:00
Colen Garoutte-Carson 9c835e5370 Add logging/warnings when compile probing alters explicit user configuration details (#6180) 2020-09-28 17:26:34 -07:00
csigsandDevDiv Build Lab - Dev14 0a09372f61 Localization - Translated Strings (#6219)
Co-authored-by: DevDiv Build Lab - Dev14 <[email protected]>
2020-09-28 10:06:11 -07:00
Sean McManus af1ab619e6 Merge pull request #6187 from microsoft/bobbrow/mergeToMaster
Merge changes made in release branch to master
2020-09-25 16:07:14 -07:00
Colen Garoutte-Carson d07c90b6aa Merge branch 'master' into bobbrow/mergeToMaster 2020-09-24 14:03:19 -07:00
csigs 1b8f652d97 Localization - Translated Strings (#6155) 2020-09-24 14:02:59 -07:00
Elaheh Rashedi 7817a10b5f remove extra telemtery (#6206) 2020-09-24 12:59:21 -07:00
Michelle Matias 6eeff1ab02 Disable Linux test (#6203) 2020-09-23 17:22:05 -07:00
Colen Garoutte-Carson bc0770aa9b Revert "Add showWarning message and output channel"
This reverts commit d737c07a10.
2020-09-22 17:54:06 -07:00
Colen Garoutte-Carson d737c07a10 Add showWarning message and output channel 2020-09-22 17:32:40 -07:00
40e28c2a85 Task Provider Feature (#5659)
* adding standard std version to clang_format_style

* add new cppBuildTaskProvider

* add Sean's changes  to tasks

* draft

* draft 2

* draft 3 - working

* windows version

* fix cwd path

* fix cwd

* change header and source file set

* minor changes

* make new instance

* create new instance

* remove compilerPath input

* review changes

* solving the error due to space in file name

* showing the error message

* fix lint

* add set timeout and setinterval from timers

* Rename cppbuildTaskProvider.ts to cppBuildTaskProvider.ts

* fire the events with zero

* delete filewatcher

* localize strings

* change changelog.md

* changelog

* changelog

* change format

* wait dobuild

* use checkFileExists

* after test

* after test2

* add properties

* change the doBuild

* this.closeEmitter.fire(result);

* change doBuild

* very minor change

* label vs name resolved

* draft

* draft for Sean

* before cleaning the code

* Stable, Clean, Before API proposal

* adding details to the tasks menue

* add TODO

* remove extra ",remove description,merge from local

* remove task rename in this versoin

* remove TODOs

* merge the "default" stuff

* remove some parts of proposals

* fix linter errors

* add import * as which from 'which';

* clean up the code after version 1.0.0

* add new line

* adapt to the new Vs Code API

* linter error

* revert changelog

Co-authored-by: Elaheh Rashedi <[email protected]>
Co-authored-by: Sean McManus <[email protected]>
2020-09-22 12:52:10 -07:00
Bob Brown (DEVDIV) f3f151075b removing duplicate cleanup stage 2020-09-22 10:28:05 -07:00
Bob Brown (DEVDIV) 79d0b01722 Merge branch 'bobbrow/mergeToMaster' of https://github.com/Microsoft/vscode-cpptools into bobbrow/mergeToMaster 2020-09-22 10:25:24 -07:00
Bob Brown (DEVDIV) 8ad680b57b removing duplicate installation stage 2020-09-22 10:25:19 -07:00
Bob Brown 1822556dc2 Merge branch 'master' into bobbrow/mergeToMaster 2020-09-22 10:22:23 -07:00
Bob Brown (DEVDIV) f2ca7a2c03 update package.json 2020-09-22 10:20:27 -07:00
csigs 348be98436 Localization - Translated Strings (#6146) 2020-09-15 14:37:24 -07:00
Colen Garoutte-Carson 927a0a8995 Fix casing of some loc strings (#6098) 2020-09-15 13:45:03 -07:00
Colen Garoutte-Carson 9f8a5ad797 Fix issue with LSP process not getting shut down gracefully (#6141) 2020-09-15 13:23:46 -07:00
Sean McManus 27b5faca11 Merge pull request #5998 from devabhishekpal/provider_5871
Refactored provider classes from client.ts to providers.ts
2020-09-14 18:07:08 -07:00
Sean McManus fc72913cb5 Merge branch 'master' into provider_5871 2020-09-14 14:44:58 -07:00
Sean McManus 857256b753 Update node-fetch. (#6119) 2020-09-14 14:35:29 -07:00
Sean McManus c2af2c9296 Fix jsonc handling for non-active c_cpp_properties.json. (#6133) 2020-09-14 14:15:02 -07:00
Abhishek Pal 6aab5a14f7 Merge branch 'master' into provider_5871 2020-09-10 20:23:52 +05:30
Abhishek Pal c1a5f25b5b Update renameProvider.ts 2020-09-10 17:08:23 +05:30
Abhishek Pal be06726777 Update onTypeFormattingEditProvider.ts 2020-09-10 17:07:55 +05:30
Abhishek Pal 888d38632a Update documentSymbolProvider.ts 2020-09-10 17:07:30 +05:30
Abhishek Pal 2f35092acf Update documentFormattingEditProvider.ts 2020-09-10 17:07:01 +05:30
Abhishek Pal 75b4240b3e Update client.ts 2020-09-10 17:06:09 +05:30
Abhishek Pal b5ac4e8515 Update .eslintrc.js
Updated .eslintrc.js
2020-09-10 15:47:00 +05:30
Abhishek Pal 99b956c319 Update client.ts
Fixed linter errors
2020-09-10 00:37:43 +05:30
Abhishek Pal dd1ab75d13 Fixed eror on line 1360 2020-09-09 14:36:33 +05:30
Sean McManus 58e60ac36a Merge branch 'master' into provider_5871 2020-09-08 12:14:47 -07:00
Abhishek Pal e1596fe3a9 Updated client with current master and fixed extra spaces 2020-09-06 00:27:06 +05:30
Abhishek Pal 66a9890551 Revert "Undo previous commit and changing variables to public static"
This reverts commit d04aa1c4a5.
2020-09-05 23:13:10 +05:30
Abhishek Pal d04aa1c4a5 Undo previous commit and changing variables to public static 2020-09-04 16:44:53 +05:30
Abhishek Pal 536a94ca3d Revert "Refactored the params into DefaultClient as static members"
This reverts commit ff24cdf33a.
2020-09-04 16:27:00 +05:30
devabhishekpal ff24cdf33a Refactored the params into DefaultClient as static members 2020-09-02 14:16:39 +05:30
Abhishek Pal babafd20d0 Merge branch 'master' into provider_5871 2020-08-26 14:18:23 +05:30
Abhishek Pal d688979d4f Moved all providers to Providers folder and removed holder classes 2020-08-26 14:17:35 +05:30
Abhishek Pal f9c1dec542 Deleted wrong commit 2020-08-25 22:53:23 +05:30
Abhishek Pal 834bfbc8eb Add localization title and changed sentence 2020-08-25 22:47:02 +05:30
Abhishek Pal 64cf9270ed Merge branch 'provider_5871' of https://github.com/devabhishekpal/vscode-cpptools into provider_5871 2020-08-22 16:46:58 +05:30
Abhishek Pal 02cc49b5ab Refixed spaces for linting 2020-08-22 16:46:37 +05:30
Abhishek Pal 742299309b Merge branch 'master' into provider_5871 2020-08-22 16:42:35 +05:30
Abhishek Pal 42664952a1 Fixed linting issues 2020-08-22 16:40:21 +05:30
Abhishek Pal 5aa64f156d Created individual files for providers 2020-08-22 16:16:43 +05:30
Abhishek Pal d390344167 Merge branch 'provider_5871' of https://github.com/devabhishekpal/vscode-cpptools into provider_5871 2020-08-21 23:41:19 +05:30
Abhishek Pal 8e2b2e67b7 Added comment lines for azure pipeline error 2020-08-21 23:40:46 +05:30
Sean McManus ea26e533c0 Merge branch 'master' into provider_5871 2020-08-21 10:08:05 -07:00
Abhishek Pal 18b7f8d8e4 Fixed lint errors in Azure pipeline 2020-08-21 16:16:55 +05:30
Abhishek Pal fa1b16293e Refactored provider classes from client.ts 2020-08-21 16:00:53 +05:30
207 changed files with 9252 additions and 2618 deletions
+3
View File
@@ -0,0 +1,3 @@
# ignore dependency packages
node_modules
*.js.map
+43
View File
@@ -0,0 +1,43 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.Locker = void 0;
const utils_1 = require("../common/utils");
const ActionBase_1 = require("../common/ActionBase");
class Locker extends ActionBase_1.ActionBase {
constructor(github, daysSinceClose, daysSinceUpdate, labels, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes) {
super(labels, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes);
this.github = github;
this.daysSinceClose = daysSinceClose;
this.daysSinceUpdate = daysSinceUpdate;
}
async run() {
const closedTimestamp = utils_1.daysAgoToHumanReadbleDate(this.daysSinceClose);
const updatedTimestamp = utils_1.daysAgoToHumanReadbleDate(this.daysSinceUpdate);
const query = this.buildQuery((this.daysSinceClose ? `closed:<${closedTimestamp} ` : "") + (this.daysSinceUpdate ? `updated:<${updatedTimestamp} ` : "") + "is:closed is:unlocked");
for await (const page of this.github.query({ q: query })) {
await Promise.all(page.map(async (issue) => {
const hydrated = await issue.getIssue();
if (!hydrated.locked && hydrated.open === false && this.validateIssue(hydrated)
// TODO: Verify closed and updated timestamps
) {
console.log(`Locking issue ${hydrated.number}`);
await issue.lockIssue();
}
else {
if (hydrated.locked) {
console.log(`Issue ${hydrated.number} is already locked. Ignoring`);
}
else if (hydrated.open) {
console.log(`Issue ${hydrated.number} is open. Ignoring`);
}
}
}));
}
}
}
exports.Locker = Locker;
//# sourceMappingURL=Locker.js.map
+55
View File
@@ -0,0 +1,55 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { GitHub, Issue } from '../api/api'
import { daysAgoToHumanReadbleDate } from '../common/utils'
import { ActionBase } from '../common/ActionBase'
export class Locker extends ActionBase {
constructor(
private github: GitHub,
private daysSinceClose: number,
private daysSinceUpdate: number,
labels?: string,
milestoneName?: string,
milestoneId?: string,
ignoreLabels?: string,
ignoreMilestoneNames?: string,
ignoreMilestoneIds?: string,
minimumVotes?: number,
maximumVotes?: number
)
{
super(labels, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes);
}
async run() {
const closedTimestamp = daysAgoToHumanReadbleDate(this.daysSinceClose)
const updatedTimestamp = daysAgoToHumanReadbleDate(this.daysSinceUpdate)
const query = this.buildQuery((this.daysSinceClose ? `closed:<${closedTimestamp} ` : "") + (this.daysSinceUpdate ? `updated:<${updatedTimestamp} ` : "") + "is:closed is:unlocked");
for await (const page of this.github.query({ q: query })) {
await Promise.all(
page.map(async (issue) => {
const hydrated = await issue.getIssue()
if (!hydrated.locked && hydrated.open === false && this.validateIssue(hydrated)
// TODO: Verify closed and updated timestamps
) {
console.log(`Locking issue ${hydrated.number}`)
await issue.lockIssue()
} else {
if (hydrated.locked) {
console.log(`Issue ${hydrated.number} is already locked. Ignoring`)
} else if (hydrated.open) {
console.log(`Issue ${hydrated.number} is open. Ignoring`)
}
}
}),
)
}
}
}
+33
View File
@@ -0,0 +1,33 @@
name: Locker
description: Lock closed issues and PRs after some time has passed
inputs:
token:
description: GitHub token with issue, comment, and label read/write permissions
default: ${{ github.token }}
daysSinceClose:
description: Days to wait since closing before locking the item
required: true
daysSinceUpdate:
description: days to wait since the last interaction before locking the item
required: true
milestoneName:
description: items with these milestones will be considered (name only, must match ID)
milestoneId:
description: items with these milestones will be considered (id only, must match name)
labels:
description: items with these labels will not be considered. May be "*".
ignoreMilestoneNames:
description: items with these milestones will not be considered (names only, must match IDs). May be "*".
ignoreMilestoneIds:
description: items with these milestones will not be considered (IDs only, must match names)
ignoreLabels:
description: items with these labels will not be considered
minimumVotes:
descriptions: Only issues with at least this many votes will be considered.
maximumVotes:
descriptions: Only issues fewer or equal to this many votes will be considered.
readonly:
description: If true, changes are not applied.
runs:
using: 'node12'
main: 'index.js'
+20
View File
@@ -0,0 +1,20 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("../common/utils");
const Locker_1 = require("./Locker");
const Action_1 = require("../common/Action");
class LockerAction extends Action_1.Action {
constructor() {
super(...arguments);
this.id = 'Locker';
}
async onTriggered(github) {
await new Locker_1.Locker(github, +utils_1.getRequiredInput('daysSinceClose'), +utils_1.getRequiredInput('daysSinceUpdate'), utils_1.getInput('labels') || undefined, utils_1.getInput('milestoneName') || undefined, utils_1.getInput('milestoneId') || undefined, utils_1.getInput('ignoreLabels') || undefined, utils_1.getInput('ignoreMilestoneNames') || undefined, utils_1.getInput('ignoreMilestoneIds') || undefined, +(utils_1.getInput('minimumVotes') || 0), +(utils_1.getInput('maximumVotes') || 9999999)).run();
}
}
new LockerAction().run(); // eslint-disable-line
//# sourceMappingURL=index.js.map
+31
View File
@@ -0,0 +1,31 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { OctoKit } from '../api/octokit'
import { getInput, getRequiredInput } from '../common/utils'
import { Locker } from './Locker'
import { Action } from '../common/Action'
class LockerAction extends Action {
id = 'Locker'
async onTriggered(github: OctoKit) {
await new Locker(
github,
+getRequiredInput('daysSinceClose'),
+getRequiredInput('daysSinceUpdate'),
getInput('labels') || undefined,
getInput('milestoneName') || undefined,
getInput('milestoneId') || undefined,
getInput('ignoreLabels') || undefined,
getInput('ignoreMilestoneNames') || undefined,
getInput('ignoreMilestoneIds') || undefined,
+(getInput('minimumVotes') || 0),
+(getInput('maximumVotes') || 9999999)
).run()
}
}
new LockerAction().run() // eslint-disable-line
+72
View File
@@ -0,0 +1,72 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.Reopener = void 0;
const ActionBase_1 = require("../common/ActionBase");
class Reopener extends ActionBase_1.ActionBase {
constructor(github, alsoApplyToOpenIssues, addLabels, removeLabels, reopenComment, setMilestoneId, labels, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes) {
super(labels, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes);
this.github = github;
this.alsoApplyToOpenIssues = alsoApplyToOpenIssues;
this.addLabels = addLabels;
this.removeLabels = removeLabels;
this.reopenComment = reopenComment;
this.setMilestoneId = setMilestoneId;
}
async run() {
const addLabelsSet = this.addLabels ? this.addLabels.split(',') : [];
const removeLabelsSet = this.removeLabels ? this.removeLabels.split(',') : [];
console.log(`alsoApplyToOpenIssues: ${this.alsoApplyToOpenIssues}`);
const query = this.buildQuery((this.alsoApplyToOpenIssues ? "" : "is:closed ") + "is:unlocked");
for await (const page of this.github.query({ q: query })) {
await Promise.all(page.map(async (issue) => {
const hydrated = await issue.getIssue();
if (!hydrated.locked && (this.alsoApplyToOpenIssues || hydrated.open === false) && this.validateIssue(hydrated)
// TODO: Verify closed and updated timestamps
) {
if (hydrated.open === false) {
console.log(`Reopening issue ${hydrated.number}`);
await issue.reopenIssue();
}
if (this.setMilestoneId != undefined) {
console.log(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`);
await issue.setMilestone(+this.setMilestoneId);
}
if (removeLabelsSet.length > 0) {
for (const removeLabel of removeLabelsSet) {
if (removeLabel && removeLabel.length > 0) {
console.log(`Removing label on issue ${hydrated.number}: ${removeLabel}`);
await issue.removeLabel(removeLabel);
}
}
}
if (addLabelsSet.length > 0) {
for (const addLabel of addLabelsSet) {
if (addLabel && addLabel.length > 0) {
console.log(`Adding label on issue ${hydrated.number}: ${addLabel}`);
await issue.addLabel(addLabel);
}
}
}
if (this.reopenComment) {
console.log(`Posting comment to issue ${hydrated.number}.`);
await issue.postComment(this.reopenComment);
}
}
else {
if (hydrated.locked) {
console.log(`Issue ${hydrated.number} is locked. Ignoring`);
}
else if (!this.alsoApplyToOpenIssues && hydrated.open) {
console.log(`Issue ${hydrated.number} is open. Ignoring`);
}
}
}));
}
}
}
exports.Reopener = Reopener;
//# sourceMappingURL=Reopener.js.map
+84
View File
@@ -0,0 +1,84 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { GitHub, Issue } from '../api/api'
import { ActionBase } from '../common/ActionBase'
export class Reopener extends ActionBase {
constructor(
private github: GitHub,
private alsoApplyToOpenIssues: boolean,
private addLabels?: string,
private removeLabels?: string,
private reopenComment?: string,
private setMilestoneId?: string,
labels?: string,
milestoneName?: string,
milestoneId?: string,
ignoreLabels?: string,
ignoreMilestoneNames?: string,
ignoreMilestoneIds?: string,
minimumVotes?: number,
maximumVotes?: number
)
{
super(labels, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes);
}
async run() {
const addLabelsSet = this.addLabels ? this.addLabels.split(',') : [];
const removeLabelsSet = this.removeLabels ? this.removeLabels.split(',') : [];
console.log(`alsoApplyToOpenIssues: ${this.alsoApplyToOpenIssues}`);
const query = this.buildQuery((this.alsoApplyToOpenIssues ? "": "is:closed ") + "is:unlocked");
for await (const page of this.github.query({ q: query })) {
await Promise.all(
page.map(async (issue) => {
const hydrated = await issue.getIssue()
if (!hydrated.locked && (this.alsoApplyToOpenIssues || hydrated.open === false) && this.validateIssue(hydrated)
// TODO: Verify closed and updated timestamps
) {
if (hydrated.open === false) {
console.log(`Reopening issue ${hydrated.number}`)
await issue.reopenIssue()
}
if (this.setMilestoneId != undefined) {
console.log(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`)
await issue.setMilestone(+this.setMilestoneId)
}
if (removeLabelsSet.length > 0) {
for (const removeLabel of removeLabelsSet) {
if (removeLabel && removeLabel.length > 0) {
console.log(`Removing label on issue ${hydrated.number}: ${removeLabel}`)
await issue.removeLabel(removeLabel)
}
}
}
if (addLabelsSet.length > 0) {
for (const addLabel of addLabelsSet) {
if (addLabel && addLabel.length > 0) {
console.log(`Adding label on issue ${hydrated.number}: ${addLabel}`)
await issue.addLabel(addLabel)
}
}
}
if (this.reopenComment) {
console.log(`Posting comment to issue ${hydrated.number}.`)
await issue.postComment(this.reopenComment)
}
} else {
if (hydrated.locked) {
console.log(`Issue ${hydrated.number} is locked. Ignoring`)
} else if (!this.alsoApplyToOpenIssues && hydrated.open) {
console.log(`Issue ${hydrated.number} is open. Ignoring`)
}
}
}),
)
}
}
}
+37
View File
@@ -0,0 +1,37 @@
name: Locker
description: Lock closed issues and PRs after some time has passed
inputs:
token:
description: GitHub token with issue, comment, and label read/write permissions
default: ${{ github.token }}
alsoApplyToOpenIssues:
description: If true, applies to issues that are already opened (to add/remove labels, etc., but not reopen).
addLabels:
description: Labels to add to issue as it is reopend.
reopenComment:
description: Comment to add upon reopening the issue.
setMilestoneId:
description: Milestone to set reopened issue to.
removeLabels:
description: Labels to remove from issue as it is reopened.
milestoneName:
description: items with these milestones will be considered (name only, must match ID)
milestoneId:
description: items with these milestones will be considered (id only, must match name)
labels:
description: items with these labels will not be considered. May be "*".
ignoreMilestoneNames:
description: items with these milestones will not be considered (names only, must match IDs). May be "*".
ignoreMilestoneIds:
description: items with these milestones will not be considered (IDs only, must match names)
ignoreLabels:
description: items with these labels will not be considered
minimumVotes:
descriptions: Only issues with at least this many votes will be considered.
maximumVotes:
descriptions: Only issues fewer or equal to this many votes will be considered.
readonly:
description: If true, changes are not applied.
runs:
using: 'node12'
main: 'index.js'
+21
View File
@@ -0,0 +1,21 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("../common/utils");
const Reopener_1 = require("./Reopener");
const Action_1 = require("../common/Action");
class ReopenerAction extends Action_1.Action {
constructor() {
super(...arguments);
this.id = 'Locker';
}
async onTriggered(github) {
const alsoApplyToOpenIssues = utils_1.getInput('alsoApplyToOpenIssues');
await new Reopener_1.Reopener(github, alsoApplyToOpenIssues != undefined && alsoApplyToOpenIssues.toLowerCase() == 'true', utils_1.getInput('addLabels') || undefined, utils_1.getInput('removeLabels') || undefined, utils_1.getInput('reopenComment') || '', utils_1.getInput('setMilestoneId') || undefined, utils_1.getInput('labels') || undefined, utils_1.getInput('milestoneName') || undefined, utils_1.getInput('milestoneId') || undefined, utils_1.getInput('ignoreLabels') || undefined, utils_1.getInput('ignoreMilestoneNames') || undefined, utils_1.getInput('ignoreMilestoneIds') || undefined, +(utils_1.getInput('minimumVotes') || 0), +(utils_1.getInput('maximumVotes') || 9999999)).run();
}
}
new ReopenerAction().run(); // eslint-disable-line
//# sourceMappingURL=index.js.map
+35
View File
@@ -0,0 +1,35 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { OctoKit } from '../api/octokit'
import { getInput, getRequiredInput } from '../common/utils'
import { Reopener } from './Reopener'
import { Action } from '../common/Action'
class ReopenerAction extends Action {
id = 'Locker'
async onTriggered(github: OctoKit) {
const alsoApplyToOpenIssues: string | undefined = getInput('alsoApplyToOpenIssues');
await new Reopener(
github,
alsoApplyToOpenIssues != undefined && alsoApplyToOpenIssues.toLowerCase() == 'true',
getInput('addLabels') || undefined,
getInput('removeLabels') || undefined,
getInput('reopenComment') || '',
getInput('setMilestoneId') || undefined,
getInput('labels') || undefined,
getInput('milestoneName') || undefined,
getInput('milestoneId') || undefined,
getInput('ignoreLabels') || undefined,
getInput('ignoreMilestoneNames') || undefined,
getInput('ignoreMilestoneIds') || undefined,
+(getInput('minimumVotes') || 0),
+(getInput('maximumVotes') || 9999999)
).run()
}
}
new ReopenerAction().run() // eslint-disable-line
+106
View File
@@ -0,0 +1,106 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.StaleCloser = void 0;
const ActionBase_1 = require("../common/ActionBase");
const utils_1 = require("../common/utils");
class StaleCloser extends ActionBase_1.ActionBase {
constructor(github, closeDays, labels, closeComment, pingDays, pingComment, additionalTeam, addLabels, removeLabels, setMilestoneId, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes) {
super(labels, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes);
this.github = github;
this.closeDays = closeDays;
this.closeComment = closeComment;
this.pingDays = pingDays;
this.pingComment = pingComment;
this.additionalTeam = additionalTeam;
this.addLabels = addLabels;
this.removeLabels = removeLabels;
this.setMilestoneId = setMilestoneId;
}
async run() {
const updatedTimestamp = utils_1.daysAgoToHumanReadbleDate(this.closeDays);
const pingTimestamp = this.pingDays ? utils_1.daysAgoToTimestamp(this.pingDays) : undefined;
const query = this.buildQuery((this.closeDays ? `updated:<${updatedTimestamp} ` : "") + "is:open is:unlocked");
const addLabelsSet = this.addLabels ? this.addLabels.split(',') : [];
const removeLabelsSet = this.removeLabels ? this.removeLabels.split(',') : [];
for await (const page of this.github.query({ q: query })) {
for (const issue of page) {
const hydrated = await issue.getIssue();
const lastCommentIterator = await issue.getComments(true).next();
if (lastCommentIterator.done) {
throw Error('Unexpected comment data');
}
const lastComment = lastCommentIterator.value[0];
if (hydrated.open && this.validateIssue(hydrated)
// TODO: Verify updated timestamp
) {
if (!lastComment ||
lastComment.author.isGitHubApp ||
pingTimestamp == undefined ||
// TODO: List the collaborators once per go rather than checking a single user each issue
this.additionalTeam.includes(lastComment.author.name) ||
await issue.hasWriteAccess(lastComment.author)) {
if (pingTimestamp != undefined) {
if (lastComment) {
console.log(`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Closing.`);
}
else {
console.log(`No comments on issue ${hydrated.number}. Closing.`);
}
}
if (this.closeComment) {
console.log(`Posting comment on issue ${hydrated.number}`);
await issue.postComment(this.closeComment);
}
if (removeLabelsSet.length > 0) {
for (const removeLabel of removeLabelsSet) {
if (removeLabel && removeLabel.length > 0) {
console.log(`Removing label on issue ${hydrated.number}: ${removeLabel}`);
await issue.removeLabel(removeLabel);
}
}
}
if (addLabelsSet.length > 0) {
for (const addLabel of addLabelsSet) {
if (addLabel && addLabel.length > 0) {
console.log(`Adding label on issue ${hydrated.number}: ${addLabel}`);
await issue.addLabel(addLabel);
}
}
}
await issue.closeIssue();
if (this.setMilestoneId != undefined) {
console.log(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`);
await issue.setMilestone(+this.setMilestoneId);
}
console.log(`Closing issue ${hydrated.number}.`);
}
else {
// Ping
if (hydrated.updatedAt < pingTimestamp && hydrated.assignee) {
console.log(`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Pinging @${hydrated.assignee}`);
if (this.pingComment) {
await issue.postComment(this.pingComment
.replace('${assignee}', hydrated.assignee)
.replace('${author}', hydrated.author.name));
}
}
else {
console.log(`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Skipping.${hydrated.assignee ? ' cc @' + hydrated.assignee : ''}`);
}
}
}
else {
if (!hydrated.open) {
console.log(`Issue ${hydrated.number} is not open. Ignoring`);
}
}
}
}
}
}
exports.StaleCloser = StaleCloser;
//# sourceMappingURL=StaleCloser.js.map
+127
View File
@@ -0,0 +1,127 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { GitHub } from '../api/api'
import { ActionBase } from '../common/ActionBase'
import { daysAgoToHumanReadbleDate, daysAgoToTimestamp } from '../common/utils'
export class StaleCloser extends ActionBase {
constructor(
private github: GitHub,
private closeDays: number,
labels: string,
private closeComment: string,
private pingDays: number,
private pingComment: string,
private additionalTeam: string[],
private addLabels?: string,
private removeLabels?: string,
private setMilestoneId?: string,
milestoneName?: string,
milestoneId?: string,
ignoreLabels?: string,
ignoreMilestoneNames?: string,
ignoreMilestoneIds?: string,
minimumVotes?: number,
maximumVotes?: number
)
{
super(labels, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes);
}
async run() {
const updatedTimestamp = daysAgoToHumanReadbleDate(this.closeDays)
const pingTimestamp = this.pingDays ? daysAgoToTimestamp(this.pingDays) : undefined;
const query = this.buildQuery((this.closeDays ? `updated:<${updatedTimestamp} ` : "") + "is:open is:unlocked");
const addLabelsSet = this.addLabels ? this.addLabels.split(',') : [];
const removeLabelsSet = this.removeLabels ? this.removeLabels.split(',') : [];
for await (const page of this.github.query({ q: query })) {
for (const issue of page) {
const hydrated = await issue.getIssue()
const lastCommentIterator = await issue.getComments(true).next()
if (lastCommentIterator.done) {
throw Error('Unexpected comment data')
}
const lastComment = lastCommentIterator.value[0]
if (hydrated.open && this.validateIssue(hydrated)
// TODO: Verify updated timestamp
) {
if (
!lastComment ||
lastComment.author.isGitHubApp ||
pingTimestamp == undefined ||
// TODO: List the collaborators once per go rather than checking a single user each issue
this.additionalTeam.includes(lastComment.author.name) ||
await issue.hasWriteAccess(lastComment.author)
) {
if (pingTimestamp != undefined) {
if (lastComment) {
console.log(
`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Closing.`,
)
} else {
console.log(`No comments on issue ${hydrated.number}. Closing.`)
}
}
if (this.closeComment) {
console.log(`Posting comment on issue ${hydrated.number}`)
await issue.postComment(this.closeComment)
}
if (removeLabelsSet.length > 0) {
for (const removeLabel of removeLabelsSet) {
if (removeLabel && removeLabel.length > 0) {
console.log(`Removing label on issue ${hydrated.number}: ${removeLabel}`)
await issue.removeLabel(removeLabel)
}
}
}
if (addLabelsSet.length > 0) {
for (const addLabel of addLabelsSet) {
if (addLabel && addLabel.length > 0) {
console.log(`Adding label on issue ${hydrated.number}: ${addLabel}`)
await issue.addLabel(addLabel)
}
}
}
await issue.closeIssue()
if (this.setMilestoneId != undefined) {
console.log(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`)
await issue.setMilestone(+this.setMilestoneId)
}
console.log(`Closing issue ${hydrated.number}.`)
} else {
// Ping
if (hydrated.updatedAt < pingTimestamp && hydrated.assignee) {
console.log(
`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Pinging @${hydrated.assignee}`,
)
if (this.pingComment) {
await issue.postComment(
this.pingComment
.replace('${assignee}', hydrated.assignee)
.replace('${author}', hydrated.author.name),
)
}
} else {
console.log(
`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Skipping.${
hydrated.assignee ? ' cc @' + hydrated.assignee : ''
}`,
)
}
}
} else {
if (!hydrated.open) {
console.log(`Issue ${hydrated.number} is not open. Ignoring`)
}
}
}
}
}
}
+45
View File
@@ -0,0 +1,45 @@
name: Stale Issue Closer
description: Close issues that are marked with a specified label and were last interacted with by a contributor or bot
inputs:
token:
description: GitHub token with issue, comment, and label read/write permissions
default: ${{ github.token }}
closeDays:
description: Days to wait before closing the issue
required: true
closeComment:
description: Comment to add upon closing the issue
pingDays:
description: Days to wait before pinging the assignee, if any. If set, issue is not closed if there is an assignee.
additionalTeam:
description: Pipe-separated list of additional users to treat as team members
pingComment:
description: Comment to add when pinging assignee. ${assignee} and ${author} are replaced.
milestoneName:
description: items with these milestones will be considered (name only, must match ID)
milestoneId:
description: items with these milestones will be considered (id only, must match name)
labels:
description: items with these labels will not be considered. May be "*".
required: true
ignoreMilestoneNames:
description: items with these milestones will not be considered (names only, must match IDs). May be "*".
ignoreMilestoneIds:
description: items with these milestones will not be considered (IDs only, must match names)
ignoreLabels:
description: items with these labels will not be considered
addLabels:
description: Labels to add to issue as it is closed.
removeLabels:
description: Labels to remove from issue as it is closed.
setMilestoneId:
description: Milestone to set closed issue to.
minimumVotes:
descriptions: Only issues with at least this many votes will be considered.
maximumVotes:
descriptions: Only issues fewer or equal to this many votes will be considered.
readonly:
description: If true, changes are not applied.
runs:
using: 'node12'
main: 'index.js'
+21
View File
@@ -0,0 +1,21 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("../common/utils");
const StaleCloser_1 = require("./StaleCloser");
const Action_1 = require("../common/Action");
class StaleCloserAction extends Action_1.Action {
constructor() {
super(...arguments);
this.id = 'StaleCloser';
}
async onTriggered(github) {
var _a;
await new StaleCloser_1.StaleCloser(github, +utils_1.getRequiredInput('closeDays'), utils_1.getRequiredInput('labels'), utils_1.getInput('closeComment') || '', +(utils_1.getInput('pingDays') || 0), utils_1.getInput('pingComment') || '', ((_a = utils_1.getInput('additionalTeam')) !== null && _a !== void 0 ? _a : '').split(','), utils_1.getInput('addLabels') || undefined, utils_1.getInput('removeLabels') || undefined, utils_1.getInput('setMilestoneId') || undefined, utils_1.getInput('milestoneName') || undefined, utils_1.getInput('milestoneId') || undefined, utils_1.getInput('ignoreLabels') || undefined, utils_1.getInput('ignoreMilestoneNames') || undefined, utils_1.getInput('ignoreMilestoneIds') || undefined, +(utils_1.getInput('minimumVotes') || 0), +(utils_1.getInput('maximumVotes') || 9999999)).run();
}
}
new StaleCloserAction().run(); // eslint-disable-line
//# sourceMappingURL=index.js.map
+37
View File
@@ -0,0 +1,37 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { OctoKit } from '../api/octokit'
import { getInput, getRequiredInput } from '../common/utils'
import { StaleCloser } from './StaleCloser'
import { Action } from '../common/Action'
class StaleCloserAction extends Action {
id = 'StaleCloser'
async onTriggered(github: OctoKit) {
await new StaleCloser(
github,
+getRequiredInput('closeDays'),
getRequiredInput('labels'),
getInput('closeComment') || '',
+(getInput('pingDays') || 0),
getInput('pingComment') || '',
(getInput('additionalTeam') ?? '').split(','),
getInput('addLabels') || undefined,
getInput('removeLabels') || undefined,
getInput('setMilestoneId') || undefined,
getInput('milestoneName') || undefined,
getInput('milestoneId') || undefined,
getInput('ignoreLabels') || undefined,
getInput('ignoreMilestoneNames') || undefined,
getInput('ignoreMilestoneIds') || undefined,
+(getInput('minimumVotes') || 0),
+(getInput('maximumVotes') || 9999999)
).run()
}
}
new StaleCloserAction().run() // eslint-disable-line
+7
View File
@@ -0,0 +1,7 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=api.js.map
+100
View File
@@ -0,0 +1,100 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
export interface GitHub {
query(query: Query): AsyncIterableIterator<GitHubIssue[]>
hasWriteAccess(user: User): Promise<boolean>
repoHasLabel(label: string): Promise<boolean>
createLabel(label: string, color: string, description: string): Promise<void>
deleteLabel(label: string): Promise<void>
readConfig(path: string): Promise<any>
dispatch(title: string): Promise<void>
createIssue(owner: string, repo: string, title: string, body: string): Promise<void>
releaseContainsCommit(release: string, commit: string): Promise<'yes' | 'no' | 'unknown'>
}
export interface GitHubIssue extends GitHub {
getIssue(): Promise<Issue>
postComment(body: string): Promise<void>
deleteComment(id: number): Promise<void>
getComments(last?: boolean): AsyncIterableIterator<Comment[]>
closeIssue(): Promise<void>
lockIssue(): Promise<void>
reopenIssue(): Promise<void>
setMilestone(milestoneId: number): Promise<void>
addLabel(label: string): Promise<void>
removeLabel(label: string): Promise<void>
addAssignee(assignee: string): Promise<void>
removeAssignee(assignee: string): Promise<void>
getClosingInfo(): Promise<{ hash: string | undefined; timestamp: number } | undefined>
}
type SortVar =
| 'comments'
| 'reactions'
| 'reactions-+1'
| 'reactions--1'
| 'reactions-smile'
| 'reactions-thinking_face'
| 'reactions-heart'
| 'reactions-tada'
| 'interactions'
| 'created'
| 'updated'
type SortOrder = 'asc' | 'desc'
export type Reactions = {
'+1': number
'-1': number
laugh: number
hooray: number
confused: number
heart: number
rocket: number
eyes: number
}
export interface User {
name: string
isGitHubApp?: boolean
}
export interface Comment {
author: User
body: string
id: number
timestamp: number
}
export interface Issue {
author: User
body: string
title: string
labels: string[]
open: boolean
locked: boolean
number: number
numComments: number
reactions: Reactions
milestoneId: number | null
assignee?: string
createdAt: number
updatedAt: number
closedAt?: number
}
export interface Query {
q: string
sort?: SortVar
order?: SortOrder
}
+405
View File
@@ -0,0 +1,405 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.OctoKitIssue = exports.OctoKit = exports.getNumRequests = void 0;
const core_1 = require("@actions/core");
const github_1 = require("@actions/github");
const child_process_1 = require("child_process");
let numRequests = 0;
exports.getNumRequests = () => numRequests;
class OctoKit {
constructor(token, params, options = { readonly: false }) {
this.token = token;
this.params = params;
this.options = options;
// when in readonly mode, record labels just-created so at to not throw unneccesary errors
this.mockLabels = new Set();
this.writeAccessCache = {};
this._octokit = new github_1.GitHub(token);
}
get octokit() {
numRequests++;
return this._octokit;
}
// TODO: just iterate over the issues in a page here instead of making caller do it
async *query(query) {
const q = query.q + ` repo:${this.params.owner}/${this.params.repo}`;
console.log(`Querying for ${q}:`);
const options = this.octokit.search.issuesAndPullRequests.endpoint.merge({
...query,
q,
per_page: 100,
headers: { Accept: 'application/vnd.github.squirrel-girl-preview+json' },
});
let pageNum = 0;
const timeout = async () => {
if (pageNum < 2) {
/* pass */
}
else if (pageNum < 4) {
await new Promise((resolve) => setTimeout(resolve, 3000));
}
else {
await new Promise((resolve) => setTimeout(resolve, 30000));
}
};
for await (const pageResponse of this.octokit.paginate.iterator(options)) {
await timeout();
numRequests++;
const page = pageResponse.data;
console.log(`Page ${++pageNum}: ${page.map(({ number }) => number).join(' ')}`);
yield page.map((issue) => new OctoKitIssue(this.token, this.params, this.octokitIssueToIssue(issue), this.options));
}
}
async createIssue(owner, repo, title, body) {
core_1.debug(`Creating issue \`${title}\` on ${owner}/${repo}`);
if (!this.options.readonly)
await this.octokit.issues.create({ owner, repo, title, body });
}
octokitIssueToIssue(issue) {
var _a, _b, _c, _d, _e, _f;
return {
author: { name: issue.user.login, isGitHubApp: issue.user.type === 'Bot' },
body: issue.body,
number: issue.number,
title: issue.title,
labels: issue.labels.map((label) => label.name),
open: issue.state === 'open',
locked: issue.locked,
numComments: issue.comments,
reactions: issue.reactions,
assignee: (_b = (_a = issue.assignee) === null || _a === void 0 ? void 0 : _a.login) !== null && _b !== void 0 ? _b : (_d = (_c = issue.assignees) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.login,
milestoneId: (_f = (_e = issue.milestone) === null || _e === void 0 ? void 0 : _e.number) !== null && _f !== void 0 ? _f : null,
createdAt: +new Date(issue.created_at),
updatedAt: +new Date(issue.updated_at),
closedAt: issue.closed_at ? +new Date(issue.closed_at) : undefined,
};
}
async hasWriteAccess(user) {
if (user.name in this.writeAccessCache) {
core_1.debug('Got permissions from cache for ' + user);
return this.writeAccessCache[user.name];
}
core_1.debug('Fetching permissions for ' + user);
const permissions = (await this.octokit.repos.getCollaboratorPermissionLevel({
...this.params,
username: user.name,
})).data.permission;
return (this.writeAccessCache[user.name] = permissions === 'admin' || permissions === 'write');
}
async repoHasLabel(name) {
try {
await this.octokit.issues.getLabel({ ...this.params, name });
return true;
}
catch (err) {
if (err.status === 404) {
return this.options.readonly && this.mockLabels.has(name);
}
throw err;
}
}
async createLabel(name, color, description) {
core_1.debug('Creating label ' + name);
if (!this.options.readonly)
await this.octokit.issues.createLabel({ ...this.params, color, description, name });
else
this.mockLabels.add(name);
}
async deleteLabel(name) {
core_1.debug('Deleting label ' + name);
try {
if (!this.options.readonly)
await this.octokit.issues.deleteLabel({ ...this.params, name });
}
catch (err) {
if (err.status === 404) {
return;
}
throw err;
}
}
async readConfig(path) {
core_1.debug('Reading config at ' + path);
const repoPath = `.github/${path}.json`;
try {
const data = (await this.octokit.repos.getContents({ ...this.params, path: repoPath })).data;
if ('type' in data && data.type === 'file') {
if (data.encoding === 'base64' && data.content) {
return JSON.parse(Buffer.from(data.content, 'base64').toString('utf-8'));
}
throw Error(`Could not read contents "${data.content}" in encoding "${data.encoding}"`);
}
throw Error('Found directory at config path when expecting file' + JSON.stringify(data));
}
catch (e) {
throw Error('Error with config file at ' + repoPath + ': ' + JSON.stringify(e));
}
}
async releaseContainsCommit(release, commit) {
return new Promise((resolve, reject) => child_process_1.exec(`git -C ./repo merge-base --is-ancestor ${commit} ${release}`, (err) => {
if (!err || err.code === 1) {
resolve(!err ? 'yes' : 'no');
}
else if (err.message.includes(`Not a valid commit name ${release}`)) {
// release branch is forked. Probably in endgame. Not released.
resolve('no');
}
else if (err.message.includes(`Not a valid commit name ${commit}`)) {
// commit is probably in a different repo.
resolve('unknown');
}
else {
reject(err);
}
}));
}
async dispatch(title) {
core_1.debug('Dispatching ' + title);
if (!this.options.readonly)
await this.octokit.repos.createDispatchEvent({ ...this.params, event_type: title });
}
}
exports.OctoKit = OctoKit;
class OctoKitIssue extends OctoKit {
constructor(token, params, issueData, options = { readonly: false }) {
super(token, params, options);
this.params = params;
this.issueData = issueData;
console.log('running bot on issue', issueData.number);
}
async addAssignee(assignee) {
core_1.debug('Adding assignee ' + assignee + ' to ' + this.issueData.number);
if (!this.options.readonly) {
await this.octokit.issues.addAssignees({
...this.params,
issue_number: this.issueData.number,
assignees: [assignee],
});
}
}
async removeAssignee(assignee) {
core_1.debug('Removing assignee ' + assignee + ' to ' + this.issueData.number);
if (!this.options.readonly) {
await this.octokit.issues.removeAssignees({
...this.params,
issue_number: this.issueData.number,
assignees: [assignee],
});
}
}
async closeIssue() {
core_1.debug('Closing issue ' + this.issueData.number);
if (!this.options.readonly)
await this.octokit.issues.update({
...this.params,
issue_number: this.issueData.number,
state: 'closed',
});
}
async reopenIssue() {
core_1.debug('Reopening issue ' + this.issueData.number);
if (!this.options.readonly)
await this.octokit.issues.update({
...this.params,
issue_number: this.issueData.number,
state: 'open',
});
}
async lockIssue() {
core_1.debug('Locking issue ' + this.issueData.number);
if (!this.options.readonly)
await this.octokit.issues.lock({ ...this.params, issue_number: this.issueData.number });
}
async getIssue() {
if (isIssue(this.issueData)) {
core_1.debug('Got issue data from query result ' + this.issueData.number);
return this.issueData;
}
console.log('Fetching issue ' + this.issueData.number);
const issue = (await this.octokit.issues.get({
...this.params,
issue_number: this.issueData.number,
mediaType: { previews: ['squirrel-girl'] },
})).data;
return (this.issueData = this.octokitIssueToIssue(issue));
}
async postComment(body) {
core_1.debug(`Posting comment ${body} on ${this.issueData.number}`);
if (!this.options.readonly)
await this.octokit.issues.createComment({
...this.params,
issue_number: this.issueData.number,
body,
});
}
async deleteComment(id) {
core_1.debug(`Deleting comment ${id} on ${this.issueData.number}`);
if (!this.options.readonly)
await this.octokit.issues.deleteComment({
owner: this.params.owner,
repo: this.params.repo,
comment_id: id,
});
}
async setMilestone(milestoneId) {
core_1.debug(`Setting milestone for ${this.issueData.number} to ${milestoneId}`);
if (!this.options.readonly)
await this.octokit.issues.update({
...this.params,
issue_number: this.issueData.number,
milestone: milestoneId,
});
}
async *getComments(last) {
core_1.debug('Fetching comments for ' + this.issueData.number);
const response = this.octokit.paginate.iterator(this.octokit.issues.listComments.endpoint.merge({
...this.params,
issue_number: this.issueData.number,
per_page: 100,
...(last ? { per_page: 1, page: (await this.getIssue()).numComments } : {}),
}));
for await (const page of response) {
numRequests++;
yield page.data.map((comment) => ({
author: { name: comment.user.login, isGitHubApp: comment.user.type === 'Bot' },
body: comment.body,
id: comment.id,
timestamp: +new Date(comment.created_at),
}));
}
}
async addLabel(name) {
core_1.debug(`Adding label ${name} to ${this.issueData.number}`);
if (!(await this.repoHasLabel(name))) {
throw Error(`Action could not execute becuase label ${name} is not defined.`);
}
if (!this.options.readonly)
await this.octokit.issues.addLabels({
...this.params,
issue_number: this.issueData.number,
labels: [name],
});
}
async getAssigner(assignee) {
const options = this.octokit.issues.listEventsForTimeline.endpoint.merge({
...this.params,
issue_number: this.issueData.number,
});
let assigner;
for await (const event of this.octokit.paginate.iterator(options)) {
numRequests++;
const timelineEvents = event.data;
for (const timelineEvent of timelineEvents) {
if (timelineEvent.event === 'assigned' &&
timelineEvent.assignee.login === assignee) {
assigner = timelineEvent.actor.login;
}
}
}
if (!assigner) {
throw Error('Expected to find ' + assignee + ' in issue timeline but did not.');
}
return assigner;
}
async removeLabel(name) {
core_1.debug(`Removing label ${name} from ${this.issueData.number}`);
try {
if (!this.options.readonly)
await this.octokit.issues.removeLabel({
...this.params,
issue_number: this.issueData.number,
name,
});
}
catch (err) {
if (err.status === 404) {
console.log(`Label ${name} not found on issue`);
return;
}
throw err;
}
}
async getClosingInfo(alreadyChecked = []) {
var _a, _b, _c, _d, _e, _f, _g;
if (alreadyChecked.includes(this.issueData.number)) {
return undefined;
}
alreadyChecked.push(this.issueData.number);
if ((await this.getIssue()).open) {
return;
}
const closingHashComment = /(?:\\|\/)closedWith (\S*)/;
const options = this.octokit.issues.listEventsForTimeline.endpoint.merge({
...this.params,
issue_number: this.issueData.number,
});
let closingCommit;
const crossReferencing = [];
for await (const event of this.octokit.paginate.iterator(options)) {
numRequests++;
const timelineEvents = event.data;
for (const timelineEvent of timelineEvents) {
if ((timelineEvent.event === 'closed' || timelineEvent.event === 'merged') &&
timelineEvent.commit_id &&
timelineEvent.commit_url
.toLowerCase()
.includes(`/${this.params.owner}/${this.params.repo}/`.toLowerCase())) {
closingCommit = {
hash: timelineEvent.commit_id,
timestamp: +new Date(timelineEvent.created_at),
};
}
if (timelineEvent.event === 'reopened') {
closingCommit = undefined;
}
if (timelineEvent.event === 'commented' &&
!((_a = timelineEvent.body) === null || _a === void 0 ? void 0 : _a.includes('UNABLE_TO_LOCATE_COMMIT_MESSAGE')) &&
closingHashComment.test(timelineEvent.body)) {
closingCommit = {
hash: closingHashComment.exec(timelineEvent.body)[1],
timestamp: +new Date(timelineEvent.created_at),
};
}
if (timelineEvent.event === 'cross-referenced' && ((_c = (_b = timelineEvent.source) === null || _b === void 0 ? void 0 : _b.issue) === null || _c === void 0 ? void 0 : _c.number) && ((_f = (_e = (_d = timelineEvent.source) === null || _d === void 0 ? void 0 : _d.issue) === null || _e === void 0 ? void 0 : _e.pull_request) === null || _f === void 0 ? void 0 : _f.url.includes(`/${this.params.owner}/${this.params.repo}/`.toLowerCase()))) {
crossReferencing.push(timelineEvent.source.issue.number);
}
}
}
// If we dont have any closing info, try to get it from linked issues (PRs).
// If there's a linked issue that was closed at almost the same time, guess it was a PR that closed this.
if (!closingCommit) {
for (const id of crossReferencing.reverse()) {
const closed = await new OctoKitIssue(this.token, this.params, {
number: id,
}, this.options).getClosingInfo(alreadyChecked);
if (closed) {
if (Math.abs(closed.timestamp - ((_g = (await this.getIssue()).closedAt) !== null && _g !== void 0 ? _g : 0)) < 5000) {
closingCommit = closed;
break;
}
}
}
}
console.log(`Got ${JSON.stringify(closingCommit)} as closing commit of ${this.issueData.number}`);
return closingCommit;
}
}
exports.OctoKitIssue = OctoKitIssue;
function isIssue(object) {
const isIssue = 'author' in object &&
'body' in object &&
'title' in object &&
'labels' in object &&
'open' in object &&
'locked' in object &&
'number' in object &&
'numComments' in object &&
'reactions' in object &&
'milestoneId' in object;
return isIssue;
}
//# sourceMappingURL=octokit.js.map
+470
View File
@@ -0,0 +1,470 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { debug } from '@actions/core'
import { GitHub as GitHubAPI } from '@actions/github'
import { Octokit } from '@octokit/rest'
import { exec } from 'child_process'
import { Comment, GitHub, GitHubIssue, Issue, Query, User } from './api'
let numRequests = 0
export const getNumRequests = () => numRequests
export class OctoKit implements GitHub {
private _octokit: GitHubAPI
protected get octokit(): GitHubAPI {
numRequests++
return this._octokit
}
// when in readonly mode, record labels just-created so at to not throw unneccesary errors
protected mockLabels: Set<string> = new Set()
constructor(
protected token: string,
protected params: { repo: string; owner: string },
protected options: { readonly: boolean } = { readonly: false },
) {
this._octokit = new GitHubAPI(token)
}
// TODO: just iterate over the issues in a page here instead of making caller do it
async *query(query: Query): AsyncIterableIterator<GitHubIssue[]> {
const q = query.q + ` repo:${this.params.owner}/${this.params.repo}`
console.log(`Querying for ${q}:`)
const options = this.octokit.search.issuesAndPullRequests.endpoint.merge({
...query,
q,
per_page: 100,
headers: { Accept: 'application/vnd.github.squirrel-girl-preview+json' },
})
let pageNum = 0
const timeout = async () => {
if (pageNum < 2) {
/* pass */
} else if (pageNum < 4) {
await new Promise((resolve) => setTimeout(resolve, 3000))
} else {
await new Promise((resolve) => setTimeout(resolve, 30000))
}
}
for await (const pageResponse of this.octokit.paginate.iterator(options)) {
await timeout()
numRequests++
const page: Array<Octokit.SearchIssuesAndPullRequestsResponseItemsItem> = pageResponse.data
console.log(`Page ${++pageNum}: ${page.map(({ number }) => number).join(' ')}`)
yield page.map(
(issue) => new OctoKitIssue(this.token, this.params, this.octokitIssueToIssue(issue), this.options),
)
}
}
async createIssue(owner: string, repo: string, title: string, body: string): Promise<void> {
debug(`Creating issue \`${title}\` on ${owner}/${repo}`)
if (!this.options.readonly) await this.octokit.issues.create({ owner, repo, title, body })
}
protected octokitIssueToIssue(
issue: Octokit.IssuesGetResponse | Octokit.SearchIssuesAndPullRequestsResponseItemsItem,
): Issue {
return {
author: { name: issue.user.login, isGitHubApp: issue.user.type === 'Bot' },
body: issue.body,
number: issue.number,
title: issue.title,
labels: (issue.labels as Octokit.IssuesGetLabelResponse[]).map((label) => label.name),
open: issue.state === 'open',
locked: (issue as any).locked,
numComments: issue.comments,
reactions: (issue as any).reactions,
assignee: issue.assignee?.login ?? (issue as any).assignees?.[0]?.login,
milestoneId: issue.milestone?.number ?? null,
createdAt: +new Date(issue.created_at),
updatedAt: +new Date(issue.updated_at),
closedAt: issue.closed_at ? +new Date((issue.closed_at as unknown) as string) : undefined,
}
}
private writeAccessCache: Record<string, boolean> = {}
async hasWriteAccess(user: User): Promise<boolean> {
if (user.name in this.writeAccessCache) {
debug('Got permissions from cache for ' + user)
return this.writeAccessCache[user.name]
}
debug('Fetching permissions for ' + user)
const permissions = (
await this.octokit.repos.getCollaboratorPermissionLevel({
...this.params,
username: user.name,
})
).data.permission
return (this.writeAccessCache[user.name] = permissions === 'admin' || permissions === 'write')
}
async repoHasLabel(name: string): Promise<boolean> {
try {
await this.octokit.issues.getLabel({ ...this.params, name })
return true
} catch (err) {
if (err.status === 404) {
return this.options.readonly && this.mockLabels.has(name)
}
throw err
}
}
async createLabel(name: string, color: string, description: string): Promise<void> {
debug('Creating label ' + name)
if (!this.options.readonly)
await this.octokit.issues.createLabel({ ...this.params, color, description, name })
else this.mockLabels.add(name)
}
async deleteLabel(name: string): Promise<void> {
debug('Deleting label ' + name)
try {
if (!this.options.readonly) await this.octokit.issues.deleteLabel({ ...this.params, name })
} catch (err) {
if (err.status === 404) {
return
}
throw err
}
}
async readConfig(path: string): Promise<any> {
debug('Reading config at ' + path)
const repoPath = `.github/${path}.json`
try {
const data = (await this.octokit.repos.getContents({ ...this.params, path: repoPath })).data
if ('type' in data && data.type === 'file') {
if (data.encoding === 'base64' && data.content) {
return JSON.parse(Buffer.from(data.content, 'base64').toString('utf-8'))
}
throw Error(`Could not read contents "${data.content}" in encoding "${data.encoding}"`)
}
throw Error('Found directory at config path when expecting file' + JSON.stringify(data))
} catch (e) {
throw Error('Error with config file at ' + repoPath + ': ' + JSON.stringify(e))
}
}
async releaseContainsCommit(release: string, commit: string): Promise<'yes' | 'no' | 'unknown'> {
return new Promise((resolve, reject) =>
exec(`git -C ./repo merge-base --is-ancestor ${commit} ${release}`, (err) => {
if (!err || err.code === 1) {
resolve(!err ? 'yes' : 'no')
} else if (err.message.includes(`Not a valid commit name ${release}`)) {
// release branch is forked. Probably in endgame. Not released.
resolve('no')
} else if (err.message.includes(`Not a valid commit name ${commit}`)) {
// commit is probably in a different repo.
resolve('unknown')
} else {
reject(err)
}
}),
)
}
async dispatch(title: string): Promise<void> {
debug('Dispatching ' + title)
if (!this.options.readonly)
await this.octokit.repos.createDispatchEvent({ ...this.params, event_type: title })
}
}
export class OctoKitIssue extends OctoKit implements GitHubIssue {
constructor(
token: string,
protected params: { repo: string; owner: string },
private issueData: { number: number } | Issue,
options: { readonly: boolean } = { readonly: false },
) {
super(token, params, options)
console.log('running bot on issue', issueData.number)
}
async addAssignee(assignee: string): Promise<void> {
debug('Adding assignee ' + assignee + ' to ' + this.issueData.number)
if (!this.options.readonly) {
await this.octokit.issues.addAssignees({
...this.params,
issue_number: this.issueData.number,
assignees: [assignee],
})
}
}
async removeAssignee(assignee: string): Promise<void> {
debug('Removing assignee ' + assignee + ' to ' + this.issueData.number)
if (!this.options.readonly) {
await this.octokit.issues.removeAssignees({
...this.params,
issue_number: this.issueData.number,
assignees: [assignee],
})
}
}
async closeIssue(): Promise<void> {
debug('Closing issue ' + this.issueData.number)
if (!this.options.readonly)
await this.octokit.issues.update({
...this.params,
issue_number: this.issueData.number,
state: 'closed',
})
}
async reopenIssue(): Promise<void> {
debug('Reopening issue ' + this.issueData.number)
if (!this.options.readonly)
await this.octokit.issues.update({
...this.params,
issue_number: this.issueData.number,
state: 'open',
})
}
async lockIssue(): Promise<void> {
debug('Locking issue ' + this.issueData.number)
if (!this.options.readonly)
await this.octokit.issues.lock({ ...this.params, issue_number: this.issueData.number })
}
async getIssue(): Promise<Issue> {
if (isIssue(this.issueData)) {
debug('Got issue data from query result ' + this.issueData.number)
return this.issueData
}
console.log('Fetching issue ' + this.issueData.number)
const issue = (
await this.octokit.issues.get({
...this.params,
issue_number: this.issueData.number,
mediaType: { previews: ['squirrel-girl'] },
})
).data
return (this.issueData = this.octokitIssueToIssue(issue))
}
async postComment(body: string): Promise<void> {
debug(`Posting comment ${body} on ${this.issueData.number}`)
if (!this.options.readonly)
await this.octokit.issues.createComment({
...this.params,
issue_number: this.issueData.number,
body,
})
}
async deleteComment(id: number): Promise<void> {
debug(`Deleting comment ${id} on ${this.issueData.number}`)
if (!this.options.readonly)
await this.octokit.issues.deleteComment({
owner: this.params.owner,
repo: this.params.repo,
comment_id: id,
})
}
async setMilestone(milestoneId: number) {
debug(`Setting milestone for ${this.issueData.number} to ${milestoneId}`)
if (!this.options.readonly)
await this.octokit.issues.update({
...this.params,
issue_number: this.issueData.number,
milestone: milestoneId,
})
}
async *getComments(last?: boolean): AsyncIterableIterator<Comment[]> {
debug('Fetching comments for ' + this.issueData.number)
const response = this.octokit.paginate.iterator(
this.octokit.issues.listComments.endpoint.merge({
...this.params,
issue_number: this.issueData.number,
per_page: 100,
...(last ? { per_page: 1, page: (await this.getIssue()).numComments } : {}),
}),
)
for await (const page of response) {
numRequests++
yield (page.data as Octokit.IssuesListCommentsResponseItem[]).map((comment) => ({
author: { name: comment.user.login, isGitHubApp: comment.user.type === 'Bot' },
body: comment.body,
id: comment.id,
timestamp: +new Date(comment.created_at),
}))
}
}
async addLabel(name: string): Promise<void> {
debug(`Adding label ${name} to ${this.issueData.number}`)
if (!(await this.repoHasLabel(name))) {
throw Error(`Action could not execute becuase label ${name} is not defined.`)
}
if (!this.options.readonly)
await this.octokit.issues.addLabels({
...this.params,
issue_number: this.issueData.number,
labels: [name],
})
}
async getAssigner(assignee: string): Promise<string> {
const options = this.octokit.issues.listEventsForTimeline.endpoint.merge({
...this.params,
issue_number: this.issueData.number,
})
let assigner: string | undefined
for await (const event of this.octokit.paginate.iterator(options)) {
numRequests++
const timelineEvents = event.data as Octokit.IssuesListEventsForTimelineResponseItem[]
for (const timelineEvent of timelineEvents) {
if (
timelineEvent.event === 'assigned' &&
(timelineEvent as any).assignee.login === assignee
) {
assigner = timelineEvent.actor.login
}
}
}
if (!assigner) {
throw Error('Expected to find ' + assignee + ' in issue timeline but did not.')
}
return assigner
}
async removeLabel(name: string): Promise<void> {
debug(`Removing label ${name} from ${this.issueData.number}`)
try {
if (!this.options.readonly)
await this.octokit.issues.removeLabel({
...this.params,
issue_number: this.issueData.number,
name,
})
} catch (err) {
if (err.status === 404) {
console.log(`Label ${name} not found on issue`)
return
}
throw err
}
}
async getClosingInfo(
alreadyChecked: number[] = [],
): Promise<{ hash: string | undefined; timestamp: number } | undefined> {
if (alreadyChecked.includes(this.issueData.number)) {
return undefined
}
alreadyChecked.push(this.issueData.number)
if ((await this.getIssue()).open) {
return
}
const closingHashComment = /(?:\\|\/)closedWith (\S*)/
const options = this.octokit.issues.listEventsForTimeline.endpoint.merge({
...this.params,
issue_number: this.issueData.number,
})
let closingCommit: { hash: string | undefined; timestamp: number } | undefined
const crossReferencing: number[] = []
for await (const event of this.octokit.paginate.iterator(options)) {
numRequests++
const timelineEvents = event.data as Octokit.IssuesListEventsForTimelineResponseItem[]
for (const timelineEvent of timelineEvents) {
if (
(timelineEvent.event === 'closed' || timelineEvent.event === 'merged') &&
timelineEvent.commit_id &&
timelineEvent.commit_url
.toLowerCase()
.includes(`/${this.params.owner}/${this.params.repo}/`.toLowerCase())
) {
closingCommit = {
hash: timelineEvent.commit_id,
timestamp: +new Date(timelineEvent.created_at),
}
}
if (timelineEvent.event === 'reopened') {
closingCommit = undefined
}
if (
timelineEvent.event === 'commented' &&
!((timelineEvent as any).body as string)?.includes('UNABLE_TO_LOCATE_COMMIT_MESSAGE') &&
closingHashComment.test((timelineEvent as any).body)
) {
closingCommit = {
hash: closingHashComment.exec((timelineEvent as any).body)![1],
timestamp: +new Date(timelineEvent.created_at),
}
}
if (
timelineEvent.event === 'cross-referenced' &&
(timelineEvent as any).source?.issue?.number &&
(timelineEvent as any).source?.issue?.pull_request?.url.includes(
`/${this.params.owner}/${this.params.repo}/`.toLowerCase(),
)
) {
crossReferencing.push((timelineEvent as any).source.issue.number)
}
}
}
// If we dont have any closing info, try to get it from linked issues (PRs).
// If there's a linked issue that was closed at almost the same time, guess it was a PR that closed this.
if (!closingCommit) {
for (const id of crossReferencing.reverse()) {
const closed = await new OctoKitIssue(this.token, this.params, {
number: id,
}, this.options).getClosingInfo(alreadyChecked)
if (closed) {
if (Math.abs(closed.timestamp - ((await this.getIssue()).closedAt ?? 0)) < 5000) {
closingCommit = closed
break
}
}
}
}
console.log(`Got ${JSON.stringify(closingCommit)} as closing commit of ${this.issueData.number}`)
return closingCommit
}
}
function isIssue(object: any): object is Issue {
const isIssue =
'author' in object &&
'body' in object &&
'title' in object &&
'labels' in object &&
'open' in object &&
'locked' in object &&
'number' in object &&
'numComments' in object &&
'reactions' in object &&
'milestoneId' in object
return isIssue
}
+129
View File
@@ -0,0 +1,129 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.Action = void 0;
const octokit_1 = require("../api/octokit");
const github_1 = require("@actions/github");
const utils_1 = require("./utils");
const core_1 = require("@actions/core");
class Action {
constructor() {
this.token = utils_1.getRequiredInput('token');
this.username = new github_1.GitHub(this.token).users.getAuthenticated().then((v) => v.data.name);
}
async run() {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
console.log('running ', this.id, 'with context', {
...github_1.context,
payload: {
issue: (_b = (_a = github_1.context.payload) === null || _a === void 0 ? void 0 : _a.issue) === null || _b === void 0 ? void 0 : _b.number,
label: (_d = (_c = github_1.context.payload) === null || _c === void 0 ? void 0 : _c.label) === null || _d === void 0 ? void 0 : _d.name,
repository: (_f = (_e = github_1.context.payload) === null || _e === void 0 ? void 0 : _e.repository) === null || _f === void 0 ? void 0 : _f.html_url,
sender: (_j = (_h = (_g = github_1.context.payload) === null || _g === void 0 ? void 0 : _g.sender) === null || _h === void 0 ? void 0 : _h.login) !== null && _j !== void 0 ? _j : (_l = (_k = github_1.context.payload) === null || _k === void 0 ? void 0 : _k.sender) === null || _l === void 0 ? void 0 : _l.type,
},
});
if (utils_1.errorLoggingIssue) {
const { repo, issue, owner } = utils_1.errorLoggingIssue;
if (github_1.context.repo.repo === repo &&
github_1.context.repo.owner === owner &&
((_m = github_1.context.payload.issue) === null || _m === void 0 ? void 0 : _m.number) === issue) {
return console.log('refusing to run on error logging issue to prevent cascading errors');
}
}
try {
const token = utils_1.getRequiredInput('token');
const readonly = !!core_1.getInput('readonly');
const issue = (_o = github_1.context === null || github_1.context === void 0 ? void 0 : github_1.context.issue) === null || _o === void 0 ? void 0 : _o.number;
if (issue) {
const octokit = new octokit_1.OctoKitIssue(token, github_1.context.repo, { number: issue }, { readonly });
if (github_1.context.eventName === 'issue_comment') {
await this.onCommented(octokit, github_1.context.payload.comment.body, github_1.context.actor);
}
else if (github_1.context.eventName === 'issues') {
switch (github_1.context.payload.action) {
case 'opened':
await this.onOpened(octokit);
break;
case 'reopened':
await this.onReopened(octokit);
break;
case 'closed':
await this.onClosed(octokit);
break;
case 'labeled':
await this.onLabeled(octokit, github_1.context.payload.label.name);
break;
case 'unassigned':
await this.onUnassigned(octokit, github_1.context.payload.assignee.login);
break;
case 'edited':
await this.onEdited(octokit);
break;
case 'milestoned':
await this.onMilestoned(octokit);
break;
default:
throw Error('Unexpected action: ' + github_1.context.payload.action);
}
}
}
else {
await this.onTriggered(new octokit_1.OctoKit(token, github_1.context.repo, { readonly }));
}
}
catch (e) {
await this.error(e);
}
const usage = await utils_1.getRateLimit(this.token);
}
async error(error) {
const details = {
message: `${error.message}\n${error.stack}`,
id: this.id,
user: await this.username,
};
if (github_1.context.issue.number)
details.issue = github_1.context.issue.number;
const rendered = `
Message: ${details.message}
Actor: ${details.user}
ID: ${details.id}
`;
await utils_1.logErrorToIssue(rendered, true, this.token);
core_1.setFailed(error.message);
}
async onTriggered(_octokit) {
throw Error('not implemented');
}
async onEdited(_issue) {
throw Error('not implemented');
}
async onLabeled(_issue, _label) {
throw Error('not implemented');
}
async onUnassigned(_issue, _label) {
throw Error('not implemented');
}
async onOpened(_issue) {
throw Error('not implemented');
}
async onReopened(_issue) {
throw Error('not implemented');
}
async onClosed(_issue) {
throw Error('not implemented');
}
async onMilestoned(_issue) {
throw Error('not implemented');
}
async onCommented(_issue, _comment, _actor) {
throw Error('not implemented');
}
}
exports.Action = Action;
//# sourceMappingURL=Action.js.map
+137
View File
@@ -0,0 +1,137 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { OctoKit, OctoKitIssue, getNumRequests } from '../api/octokit'
import { context, GitHub } from '@actions/github'
import { getRequiredInput, logErrorToIssue, getRateLimit, errorLoggingIssue } from './utils'
import { getInput, setFailed } from '@actions/core'
export abstract class Action {
abstract id: string
private username: Promise<string>
private token = getRequiredInput('token')
constructor() {
this.username = new GitHub(this.token).users.getAuthenticated().then((v) => v.data.name)
}
public async run() {
console.log('running ', this.id, 'with context', {
...context,
payload: {
issue: context.payload?.issue?.number,
label: context.payload?.label?.name,
repository: context.payload?.repository?.html_url,
sender: context.payload?.sender?.login ?? context.payload?.sender?.type,
},
})
if (errorLoggingIssue) {
const { repo, issue, owner } = errorLoggingIssue
if (
context.repo.repo === repo &&
context.repo.owner === owner &&
context.payload.issue?.number === issue
) {
return console.log('refusing to run on error logging issue to prevent cascading errors')
}
}
try {
const token = getRequiredInput('token')
const readonly = !!getInput('readonly')
const issue = context?.issue?.number
if (issue) {
const octokit = new OctoKitIssue(token, context.repo, { number: issue }, { readonly })
if (context.eventName === 'issue_comment') {
await this.onCommented(octokit, context.payload.comment.body, context.actor)
} else if (context.eventName === 'issues') {
switch (context.payload.action) {
case 'opened':
await this.onOpened(octokit)
break
case 'reopened':
await this.onReopened(octokit)
break
case 'closed':
await this.onClosed(octokit)
break
case 'labeled':
await this.onLabeled(octokit, context.payload.label.name)
break
case 'unassigned':
await this.onUnassigned(octokit, context.payload.assignee.login)
break
case 'edited':
await this.onEdited(octokit)
break
case 'milestoned':
await this.onMilestoned(octokit)
break
default:
throw Error('Unexpected action: ' + context.payload.action)
}
}
} else {
await this.onTriggered(new OctoKit(token, context.repo, { readonly }))
}
} catch (e) {
await this.error(e)
}
const usage = await getRateLimit(this.token)
}
private async error(error: Error) {
const details: any = {
message: `${error.message}\n${error.stack}`,
id: this.id,
user: await this.username,
}
if (context.issue.number) details.issue = context.issue.number
const rendered = `
Message: ${details.message}
Actor: ${details.user}
ID: ${details.id}
`
await logErrorToIssue(rendered, true, this.token)
setFailed(error.message)
}
protected async onTriggered(_octokit: OctoKit): Promise<void> {
throw Error('not implemented')
}
protected async onEdited(_issue: OctoKitIssue): Promise<void> {
throw Error('not implemented')
}
protected async onLabeled(_issue: OctoKitIssue, _label: string): Promise<void> {
throw Error('not implemented')
}
protected async onUnassigned(_issue: OctoKitIssue, _label: string): Promise<void> {
throw Error('not implemented')
}
protected async onOpened(_issue: OctoKitIssue): Promise<void> {
throw Error('not implemented')
}
protected async onReopened(_issue: OctoKitIssue): Promise<void> {
throw Error('not implemented')
}
protected async onClosed(_issue: OctoKitIssue): Promise<void> {
throw Error('not implemented')
}
protected async onMilestoned(_issue: OctoKitIssue): Promise<void> {
throw Error('not implemented')
}
protected async onCommented(_issue: OctoKitIssue, _comment: string, _actor: string): Promise<void> {
throw Error('not implemented')
}
}
+165
View File
@@ -0,0 +1,165 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.ActionBase = void 0;
class ActionBase {
constructor(labels, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes) {
this.labels = labels;
this.milestoneName = milestoneName;
this.milestoneId = milestoneId;
this.ignoreLabels = ignoreLabels;
this.ignoreMilestoneNames = ignoreMilestoneNames;
this.ignoreMilestoneIds = ignoreMilestoneIds;
this.minimumVotes = minimumVotes;
this.maximumVotes = maximumVotes;
this.labelsSet = [];
this.ignoreLabelsSet = [];
this.ignoreMilestoneNamesSet = [];
this.ignoreMilestoneIdsSet = [];
this.ignoreAllWithLabels = false;
this.ignoreAllWithMilestones = false;
}
buildQuery(baseQuery) {
var _a, _b;
let query = baseQuery;
console.log(`labels: ${this.labels}`);
console.log(`milestoneName: ${this.milestoneName}`);
console.log(`milestoneId: ${this.milestoneId}`);
console.log(`ignoreLabels: ${this.ignoreLabels}`);
console.log(`ignoreMilestoneNames: ${this.ignoreMilestoneNames}`);
console.log(`ignoreMilestoneIds: ${this.ignoreMilestoneIds}`);
console.log(`minimumVotes: ${this.minimumVotes}`);
console.log(`maximumVotes: ${this.maximumVotes}`);
// Both milestone name and milestone Id must be provided and must match.
// The name is used to construct the query, which does not accept ID.
// The ID is used for comparisons with issue data, which does not include the name.
// TODO: Figure out a way to convert either from milestone name to ID, or vice versa.
// If label inclusion and exclusion are mixed, exclusion will take precedence.
// For example, an issue with both labels A and B will not match if B is excluded, even if A is included.
// If a milestoneName/milestoneId are set, ignoreMilenameName/ignoreMilestoneIds are ignored.
// GitHub does not appear to support searching for all issues with milestones (not lacking a milestone). "-no:milestone" does not work.
// GitHub does not appear to support searching for all issues with labels (not lacking a label). "-no:label" does not work.
// All indicated labels must be present
if (this.labels) {
this.labelsSet = (_a = this.labels) === null || _a === void 0 ? void 0 : _a.split(',');
for (const str of this.labelsSet) {
if (str != "") {
query = query.concat(` label:"${str}"`);
}
}
}
if (this.ignoreLabels) {
if (this.ignoreLabels == "*" && !this.labels) { // only if unlabeled
query = query.concat(` no:label`);
this.ignoreAllWithLabels = true;
}
else {
this.ignoreLabelsSet = (_b = this.ignoreLabels) === null || _b === void 0 ? void 0 : _b.split(',');
for (const str of this.ignoreLabelsSet) {
if (str != "") {
query = query.concat(` -label:"${str}"`);
}
}
}
}
if (this.milestoneName) {
query = query.concat(` milestone:"${this.milestoneName}"`);
}
else if (this.ignoreMilestoneNames) {
if (this.ignoreMilestoneNames == "*") {
query = query.concat(` no:milestone`);
this.ignoreAllWithMilestones = true;
}
else if (this.ignoreMilestoneIds) {
this.ignoreMilestoneNamesSet = this.ignoreMilestoneNames.split(',');
this.ignoreMilestoneIdsSet = this.ignoreMilestoneIds.split(',');
for (const str of this.ignoreMilestoneNamesSet) {
if (str != "") {
query = query.concat(` -milestone:"${str}"`);
}
}
}
}
return query;
}
// This is necessary because GitHub sometimes returns incorrect results,
// and because issues may get modified while we are processing them.
validateIssue(issue) {
if (this.ignoreAllWithLabels) {
// Validate that the issue does not have labels
if (issue.labels && issue.labels.length !== 0) {
console.log(`Issue ${issue.number} skipped due to label found after querying for no:label.`);
return false;
}
}
else {
// Make sure all labels we wanted are present.
if ((!issue.labels || issue.labels.length == 0) && this.labelsSet.length > 0) {
console.log(`Issue ${issue.number} skipped due to not having a required label set. No labels found.`);
return false;
}
for (const str of this.labelsSet) {
if (!issue.labels.includes(str)) {
console.log(`Issue ${issue.number} skipped due to not having a required label set.`);
return false;
}
}
// Make sure no labels we wanted to ignore are present.
if (issue.labels && issue.labels.length > 0) {
for (const str of this.ignoreLabelsSet) {
if (issue.labels.includes(str)) {
console.log(`Issue ${issue.number} skipped due to having an ignore label set: ${str}`);
return false;
}
}
}
}
if (this.ignoreAllWithMilestones) {
// Validate that the issue does not have a milestone.
if (issue.milestoneId != null) {
console.log(`Issue ${issue.number} skipped due to milestone found after querying for no:milestone.`);
return false;
}
}
else {
// Make sure milestone is present, if required.
if (this.milestoneId != undefined && issue.milestoneId != +this.milestoneId) {
console.log(`Issue ${issue.number} skipped due to not having required milsetone id ${this.milestoneId}. Had: ${issue.milestoneId}`);
return false;
}
// Make sure a milestones we wanted to ignore is not present.
if (issue.milestoneId != null) {
for (const str of this.ignoreMilestoneIdsSet) {
if (issue.milestoneId == +str) {
console.log(`Issue ${issue.number} skipped due to milestone ${issue.milestoneId} found in list of ignored milestone IDs.`);
return false;
}
}
}
}
// Verify the issue has a sufficient number of upvotes
let upvotes = 0;
if (issue.reactions) {
upvotes = issue.reactions['+1'];
}
if (this.minimumVotes != undefined) {
if (upvotes < this.minimumVotes) {
console.log(`Issue ${issue.number} skipped due to not having at least ${this.minimumVotes} upvotes. Had: ${upvotes}`);
return false;
}
}
// Verify the issue does not have too many upvotes
if (this.maximumVotes != undefined) {
if (upvotes > this.maximumVotes) {
console.log(`Issue ${issue.number} skipped due to having more than ${this.maximumVotes} upvotes. Had: ${upvotes}`);
return false;
}
}
return true;
}
}
exports.ActionBase = ActionBase;
//# sourceMappingURL=ActionBase.js.map
+170
View File
@@ -0,0 +1,170 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { Issue } from '../api/api'
export class ActionBase {
constructor(
private labels?: string,
private milestoneName?: string,
private milestoneId?: string,
private ignoreLabels?: string,
private ignoreMilestoneNames?: string,
private ignoreMilestoneIds?: string,
private minimumVotes?: number,
private maximumVotes?: number
) {}
private labelsSet: string[] = [];
private ignoreLabelsSet: string[] = [];
private ignoreMilestoneNamesSet: string[] = [];
private ignoreMilestoneIdsSet: string[] = [];
private ignoreAllWithLabels: boolean = false;
private ignoreAllWithMilestones: boolean = false;
buildQuery(baseQuery: string): string {
let query = baseQuery;
console.log(`labels: ${this.labels}`);
console.log(`milestoneName: ${this.milestoneName}`);
console.log(`milestoneId: ${this.milestoneId}`);
console.log(`ignoreLabels: ${this.ignoreLabels}`);
console.log(`ignoreMilestoneNames: ${this.ignoreMilestoneNames}`);
console.log(`ignoreMilestoneIds: ${this.ignoreMilestoneIds}`);
console.log(`minimumVotes: ${this.minimumVotes}`);
console.log(`maximumVotes: ${this.maximumVotes}`);
// Both milestone name and milestone Id must be provided and must match.
// The name is used to construct the query, which does not accept ID.
// The ID is used for comparisons with issue data, which does not include the name.
// TODO: Figure out a way to convert either from milestone name to ID, or vice versa.
// If label inclusion and exclusion are mixed, exclusion will take precedence.
// For example, an issue with both labels A and B will not match if B is excluded, even if A is included.
// If a milestoneName/milestoneId are set, ignoreMilenameName/ignoreMilestoneIds are ignored.
// GitHub does not appear to support searching for all issues with milestones (not lacking a milestone). "-no:milestone" does not work.
// GitHub does not appear to support searching for all issues with labels (not lacking a label). "-no:label" does not work.
// All indicated labels must be present
if (this.labels) {
this.labelsSet = this.labels?.split(',');
for (const str of this.labelsSet) {
if (str != "") {
query = query.concat(` label:"${str}"`)
}
}
}
if (this.ignoreLabels) {
if (this.ignoreLabels == "*" && !this.labels) { // only if unlabeled
query = query.concat(` no:label`)
this.ignoreAllWithLabels = true;
} else {
this.ignoreLabelsSet = this.ignoreLabels?.split(',');
for (const str of this.ignoreLabelsSet) {
if (str != "") {
query = query.concat(` -label:"${str}"`)
}
}
}
}
if (this.milestoneName) {
query = query.concat(` milestone:"${this.milestoneName}"`)
}
else if (this.ignoreMilestoneNames) {
if (this.ignoreMilestoneNames == "*") {
query = query.concat(` no:milestone`)
this.ignoreAllWithMilestones = true;
} else if (this.ignoreMilestoneIds) {
this.ignoreMilestoneNamesSet = this.ignoreMilestoneNames.split(',');
this.ignoreMilestoneIdsSet = this.ignoreMilestoneIds.split(',');
for (const str of this.ignoreMilestoneNamesSet) {
if (str != "") {
query = query.concat(` -milestone:"${str}"`)
}
}
}
}
return query;
}
// This is necessary because GitHub sometimes returns incorrect results,
// and because issues may get modified while we are processing them.
validateIssue(issue: Issue): boolean {
if (this.ignoreAllWithLabels) {
// Validate that the issue does not have labels
if (issue.labels && issue.labels.length !== 0) {
console.log(`Issue ${issue.number} skipped due to label found after querying for no:label.`);
return false;
}
} else {
// Make sure all labels we wanted are present.
if ((!issue.labels || issue.labels.length == 0) && this.labelsSet.length > 0) {
console.log(`Issue ${issue.number} skipped due to not having a required label set. No labels found.`);
return false;
}
for (const str of this.labelsSet) {
if (!issue.labels.includes(str)) {
console.log(`Issue ${issue.number} skipped due to not having a required label set.`);
return false;
}
}
// Make sure no labels we wanted to ignore are present.
if (issue.labels && issue.labels.length > 0) {
for (const str of this.ignoreLabelsSet) {
if (issue.labels.includes(str)) {
console.log(`Issue ${issue.number} skipped due to having an ignore label set: ${str}`);
return false;
}
}
}
}
if (this.ignoreAllWithMilestones) {
// Validate that the issue does not have a milestone.
if (issue.milestoneId != null) {
console.log(`Issue ${issue.number} skipped due to milestone found after querying for no:milestone.`);
return false;
}
} else {
// Make sure milestone is present, if required.
if (this.milestoneId != undefined && issue.milestoneId != +this.milestoneId) {
console.log(`Issue ${issue.number} skipped due to not having required milsetone id ${this.milestoneId}. Had: ${issue.milestoneId}`);
return false;
}
// Make sure a milestones we wanted to ignore is not present.
if (issue.milestoneId != null) {
for (const str of this.ignoreMilestoneIdsSet) {
if (issue.milestoneId == +str) {
console.log(`Issue ${issue.number} skipped due to milestone ${issue.milestoneId} found in list of ignored milestone IDs.`);
return false;
}
}
}
}
// Verify the issue has a sufficient number of upvotes
let upvotes = 0;
if (issue.reactions) {
upvotes = issue.reactions['+1'];
}
if (this.minimumVotes != undefined) {
if (upvotes < this.minimumVotes) {
console.log(`Issue ${issue.number} skipped due to not having at least ${this.minimumVotes} upvotes. Had: ${upvotes}`);
return false;
}
}
// Verify the issue does not have too many upvotes
if (this.maximumVotes != undefined) {
if (upvotes > this.maximumVotes) {
console.log(`Issue ${issue.number} skipped due to having more than ${this.maximumVotes} upvotes. Had: ${upvotes}`);
return false;
}
}
return true;
}
}
+99
View File
@@ -0,0 +1,99 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.logErrorToIssue = exports.errorLoggingIssue = exports.getRateLimit = exports.daysAgoToHumanReadbleDate = exports.daysAgoToTimestamp = exports.loadLatestRelease = exports.normalizeIssue = exports.getRequiredInput = exports.getInput = void 0;
const core = require("@actions/core");
const github_1 = require("@actions/github");
const axios_1 = require("axios");
const octokit_1 = require("../api/octokit");
exports.getInput = (name) => core.getInput(name) || undefined;
exports.getRequiredInput = (name) => core.getInput(name, { required: true });
exports.normalizeIssue = (issue) => {
let { body, title } = issue;
body = body !== null && body !== void 0 ? body : '';
title = title !== null && title !== void 0 ? title : '';
const isBug = body.includes('bug_report_template') || /Issue Type:.*Bug.*/.test(body);
const isFeatureRequest = body.includes('feature_request_template') || /Issue Type:.*Feature Request.*/.test(body);
const cleanse = (str) => {
let out = str
.toLowerCase()
.replace(/<!--.*-->/gu, '')
.replace(/.* version: .*/gu, '')
.replace(/issue type: .*/gu, '')
.replace(/vs ?code/gu, '')
.replace(/we have written.*please paste./gu, '')
.replace(/steps to reproduce:/gu, '')
.replace(/does this issue occur when all extensions are disabled.*/gu, '')
.replace(/!?\[[^\]]*\]\([^)]*\)/gu, '')
.replace(/\s+/gu, ' ')
.replace(/```[^`]*?```/gu, '');
while (out.includes(`<details>`) &&
out.includes('</details>') &&
out.indexOf(`</details>`) > out.indexOf(`<details>`)) {
out = out.slice(0, out.indexOf('<details>')) + out.slice(out.indexOf(`</details>`) + 10);
}
return out;
};
return {
body: cleanse(body),
title: cleanse(title),
issueType: isBug ? 'bug' : isFeatureRequest ? 'feature_request' : 'unknown',
};
};
exports.loadLatestRelease = async (quality) => (await axios_1.default.get(`https://vscode-update.azurewebsites.net/api/update/darwin/${quality}/latest`)).data;
exports.daysAgoToTimestamp = (days) => +new Date(Date.now() - days * 24 * 60 * 60 * 1000);
exports.daysAgoToHumanReadbleDate = (days) => new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString().replace(/\.\d{3}\w$/, '');
exports.getRateLimit = async (token) => {
const usageData = (await new github_1.GitHub(token).rateLimit.get()).data.resources;
const usage = {};
['core', 'graphql', 'search'].forEach(async (category) => {
usage[category] = 1 - usageData[category].remaining / usageData[category].limit;
});
return usage;
};
exports.errorLoggingIssue = (() => {
try {
const repo = github_1.context.repo.owner.toLowerCase() + '/' + github_1.context.repo.repo.toLowerCase();
if (repo === 'microsoft/vscode-cpptools') {
return { repo: 'vscode-cpptools', owner: 'Microsoft', issue: 6282 };
}
else if (exports.getInput('errorLogIssueNumber')) {
return { ...github_1.context.repo, issue: +exports.getRequiredInput('errorLogIssueNumber') };
}
else {
return undefined;
}
}
catch (e) {
console.error(e);
return undefined;
}
})();
exports.logErrorToIssue = async (message, ping, token) => {
// Attempt to wait out abuse detection timeout if present
await new Promise((resolve) => setTimeout(resolve, 10000));
const dest = exports.errorLoggingIssue;
if (!dest)
return console.log('no error logging repo defined. swallowing error:', message);
return new octokit_1.OctoKitIssue(token, { owner: dest.owner, repo: dest.repo }, { number: dest.issue }, { readonly: !!exports.getInput('readonly') })
.postComment(`
Workflow: ${github_1.context.workflow}
Error: ${message}
Issue: ${ping ? `${github_1.context.repo.owner}/${github_1.context.repo.repo}#` : ''}${github_1.context.issue.number}
Repo: ${github_1.context.repo.owner}/${github_1.context.repo.repo}
<!-- Context:
${JSON.stringify(github_1.context, null, 2)
.replace(/<!--/gu, '<@--')
.replace(/-->/gu, '--@>')
.replace(/\/|\\/gu, 'slash-')}
-->
`);
};
//# sourceMappingURL=utils.js.map
+119
View File
@@ -0,0 +1,119 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as core from '@actions/core'
import { context, GitHub } from '@actions/github'
import axios from 'axios'
import { OctoKitIssue } from '../api/octokit'
export const getInput = (name: string) => core.getInput(name) || undefined
export const getRequiredInput = (name: string) => core.getInput(name, { required: true })
export const normalizeIssue = (issue: {
body: string
title: string
}): { body: string; title: string; issueType: 'bug' | 'feature_request' | 'unknown' } => {
let { body, title } = issue
body = body ?? ''
title = title ?? ''
const isBug = body.includes('bug_report_template') || /Issue Type:.*Bug.*/.test(body)
const isFeatureRequest =
body.includes('feature_request_template') || /Issue Type:.*Feature Request.*/.test(body)
const cleanse = (str: string) => {
let out = str
.toLowerCase()
.replace(/<!--.*-->/gu, '')
.replace(/.* version: .*/gu, '')
.replace(/issue type: .*/gu, '')
.replace(/vs ?code/gu, '')
.replace(/we have written.*please paste./gu, '')
.replace(/steps to reproduce:/gu, '')
.replace(/does this issue occur when all extensions are disabled.*/gu, '')
.replace(/!?\[[^\]]*\]\([^)]*\)/gu, '')
.replace(/\s+/gu, ' ')
.replace(/```[^`]*?```/gu, '')
while (
out.includes(`<details>`) &&
out.includes('</details>') &&
out.indexOf(`</details>`) > out.indexOf(`<details>`)
) {
out = out.slice(0, out.indexOf('<details>')) + out.slice(out.indexOf(`</details>`) + 10)
}
return out
}
return {
body: cleanse(body),
title: cleanse(title),
issueType: isBug ? 'bug' : isFeatureRequest ? 'feature_request' : 'unknown',
}
}
export interface Release {
productVersion: string
timestamp: number
version: string
}
export const loadLatestRelease = async (quality: 'stable' | 'insider'): Promise<Release | undefined> =>
(await axios.get(`https://vscode-update.azurewebsites.net/api/update/darwin/${quality}/latest`)).data
export const daysAgoToTimestamp = (days: number): number => +new Date(Date.now() - days * 24 * 60 * 60 * 1000)
export const daysAgoToHumanReadbleDate = (days: number) =>
new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString().replace(/\.\d{3}\w$/, '')
export const getRateLimit = async (token: string) => {
const usageData = (await new GitHub(token).rateLimit.get()).data.resources
const usage = {} as { core: number; graphql: number; search: number }
;(['core', 'graphql', 'search'] as const).forEach(async (category) => {
usage[category] = 1 - usageData[category].remaining / usageData[category].limit
})
return usage
}
export const errorLoggingIssue = (() => {
try {
const repo = context.repo.owner.toLowerCase() + '/' + context.repo.repo.toLowerCase()
if (repo === 'microsoft/vscode-cpptools') {
return { repo: 'vscode-cpptools', owner: 'Microsoft', issue: 6282 }
} else if (getInput('errorLogIssueNumber')) {
return { ...context.repo, issue: +getRequiredInput('errorLogIssueNumber') }
} else {
return undefined
}
} catch (e) {
console.error(e)
return undefined
}
})()
export const logErrorToIssue = async (message: string, ping: boolean, token: string): Promise<void> => {
// Attempt to wait out abuse detection timeout if present
await new Promise((resolve) => setTimeout(resolve, 10000))
const dest = errorLoggingIssue
if (!dest) return console.log('no error logging repo defined. swallowing error:', message)
return new OctoKitIssue(token, { owner: dest.owner, repo: dest.repo }, { number: dest.issue }, { readonly: !!getInput('readonly') })
.postComment(`
Workflow: ${context.workflow}
Error: ${message}
Issue: ${ping ? `${context.repo.owner}/${context.repo.repo}#` : ''}${context.issue.number}
Repo: ${context.repo.owner}/${context.repo.repo}
<!-- Context:
${JSON.stringify(context, null, 2)
.replace(/<!--/gu, '<@--')
.replace(/-->/gu, '--@>')
.replace(/\/|\\/gu, 'slash-')}
-->
`)
}
+1453
View File
File diff suppressed because it is too large Load Diff
+21
View File
@@ -0,0 +1,21 @@
{
"name": "vscode-cpptools-github-triage-actions",
"version": "1.0.0",
"description": "GitHub Actions used by VS Code cpptools for triaging issues",
"scripts": {
"build": "tsc",
"lint": "eslint -c .eslintrc --fix --ext .ts .",
"watch": "tsc --watch"
},
"keywords": [],
"author": "",
"dependencies": {
"@actions/core": "^1.2.6",
"@actions/github": "^2.1.1",
"axios": "^0.19.2"
},
"devDependencies": {
"eslint": "^6.8.0",
"typescript": "^3.8.3"
}
}
+18
View File
@@ -0,0 +1,18 @@
{
"compilerOptions": {
"target": "es2019",
"strict": true,
"module": "commonjs",
"moduleResolution": "node",
"removeComments": false,
"resolveJsonModule": true,
"sourceMap": true,
"lib": [
"es2020"
]
},
"exclude": [
"**/*.test.ts",
"**/vm-filesystem/**"
]
}
+28
View File
@@ -0,0 +1,28 @@
name: By Design Closer
on:
schedule:
- cron: 0 12 * * * # Run at 12:00 PM UTC (4:00 AM PST, 5:00 AM PDT)
workflow_dispatch:
inputs:
readonly:
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
default: false
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v2
- name: Install Actions
run: cd ./.github/actions && npm install --production && cd ../..
- name: Stale Closer
uses: ./.github/actions/StaleCloser
with:
readonly: ${{ github.event.inputs.readonly }}
labels: by design
ignoreLabels: debugger,Feature Request,more info needed,internal
closeDays: 60
closeComment: "This issue has been closed automatically because it's labeled as 'by design' and has not had recent activity."
pingDays: 80
pingComment: "Hey @${assignee}, this issue might need further attention.\n\n@${author}, you can help us out by closing this issue if it is no longer relevant."
+55
View File
@@ -0,0 +1,55 @@
name: CI (Linux)
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js 10.16.x
uses: actions/setup-node@v1
with:
node-version: 10.16.x
- name: Install Dependencies
run: yarn install
working-directory: Extension
- name: Generate hashes for runtime dependency packages
run: yarn run generatePackageHashes
working-directory: Extension
- name: Compile Sources
run: yarn run compile
working-directory: Extension
- name: Validate Extension/package.json
run: yarn run pr-check
working-directory: Extension
- name: Run Linter
run: yarn run lint
working-directory: Extension
- name: Compile Test Sources
run: yarn run pretest
working-directory: Extension
- name: Run unit tests
uses: GabrielBB/[email protected]
with:
run: yarn run unitTests
working-directory: Extension
- name: Run languageServer integration tests
uses: GabrielBB/[email protected]
with:
run: yarn run integrationTests
working-directory: Extension
+55
View File
@@ -0,0 +1,55 @@
name: CI (Mac)
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js 10.16.x
uses: actions/setup-node@v1
with:
node-version: 10.16.x
- name: Install Dependencies
run: yarn install
working-directory: Extension
- name: Generate hashes for runtime dependency packages
run: yarn run generatePackageHashes
working-directory: Extension
- name: Compile Sources
run: yarn run compile
working-directory: Extension
- name: Validate Extension/package.json
run: yarn run pr-check
working-directory: Extension
- name: Run Linter
run: yarn run lint
working-directory: Extension
- name: Compile Test Sources
run: yarn run pretest
working-directory: Extension
- name: Run unit tests
uses: GabrielBB/[email protected]
with:
run: yarn run unitTests
working-directory: Extension
- name: Run languageServer integration tests
uses: GabrielBB/[email protected]
with:
run: yarn run integrationTests
working-directory: Extension
+51
View File
@@ -0,0 +1,51 @@
name: CI (Windows)
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js 10.16.x
uses: actions/setup-node@v1
with:
node-version: 10.16.x
- name: Install Dependencies
run: yarn install
working-directory: Extension
- name: Generate hashes for runtime dependency packages
run: yarn run generatePackageHashes
working-directory: Extension
- name: Compile Sources
run: yarn run compile
working-directory: Extension
- name: Validate Extension/package.json
run: yarn run pr-check
working-directory: Extension
- name: Run Linter
run: yarn run lint
working-directory: Extension
- name: Compile Test Sources
run: yarn run pretest
working-directory: Extension
- name: Run unit tests
run: yarn run unitTests
working-directory: Extension
- name: Run languageServer integration tests
run: yarn run integrationTests
working-directory: Extension
+28
View File
@@ -0,0 +1,28 @@
name: Duplicate Closer
on:
schedule:
- cron: 10 12 * * * # Run at 12:10 PM UTC (4:10 AM PST, 5:10 AM PDT)
workflow_dispatch:
inputs:
readonly:
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
default: false
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v2
- name: Install Actions
run: cd ./.github/actions && npm install --production && cd ../..
- name: Stale Closer
uses: ./.github/actions/StaleCloser
with:
readonly: ${{ github.event.inputs.readonly }}
labels: duplicate
ignoreLabels: debugger,Feature Request,more info needed,by design,internal
closeDays: 60
closeComment: "This issue has been closed automatically because it's labeled as a 'duplicate' and has not had recent activity."
pingDays: 80
pingComment: "Hey @${assignee}, this issue might need further attention.\n\n@${author}, you can help us out by closing this issue if it is no longer relevant."
@@ -0,0 +1,30 @@
name: Feature Request Closer (no milestone)
on:
schedule:
- cron: 50 11 * * * # Run at 11:50 AM UTC (3:50 AM PST, 4:50 AM PDT)
workflow_dispatch:
inputs:
readonly:
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
default: false
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v2
- name: Install Actions
run: cd ./.github/actions && npm install --production && cd ../..
- name: Stale Closer
uses: ./.github/actions/StaleCloser
with:
readonly: ${{ github.event.inputs.readonly }}
labels: Feature Request
ignoreLabels: debugger,internal
addLabels: more votes needed
closeDays: 60
maximumVotes: 2
closeComment: "This feature request is being closed due to insufficient upvotes. When enough upvotes are received, this issue will be eligible for our backlog."
setMilestoneId: 30
ignoreMilestoneNames: "*"
@@ -0,0 +1,30 @@
name: Feature Request Closer (Triage)
on:
schedule:
- cron: 40 11 * * * # Run at 11:40 AM UTC (3:40 AM PST, 4:40 AM PDT)
workflow_dispatch:
inputs:
readonly:
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
default: false
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v2
- name: Install Actions
run: cd ./.github/actions && npm install --production && cd ../..
- name: Stale Closer
uses: ./.github/actions/StaleCloser
with:
readonly: ${{ github.event.inputs.readonly }}
labels: Feature Request
ignoreLabels: debugger,internal
addLabels: more votes needed
closeDays: 60
maximumVotes: 2
closeComment: "This feature request is being closed due to insufficient upvotes. When enough upvotes are received, this issue will be eligible for our backlog."
milestoneName: Triage
milestoneId: 30
@@ -0,0 +1,31 @@
name: Feature Request Reopener
on:
schedule:
- cron: 20 12 * * * # Run at 12:20 PM UTC (4:20 AM PST, 5:20 AM PDT)
workflow_dispatch:
inputs:
readonly:
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
default: false
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v2
- name: Install Actions
run: cd ./.github/actions && npm install --production && cd ../..
- name: Run Reopener
uses: ./.github/actions/Reopener
with:
readonly: ${{ github.event.inputs.readonly }}
alsoApplyToOpenIssues: true
reopenComment: This feature request has received enough votes to be added to our backlog.
labels: Feature Request
minimumVotes: 3
ignoreLabels: debugger,internal
milestoneId: 30
milestoneName: Triage
setMilestoneId: 28
removeLabels: more votes needed
+25
View File
@@ -0,0 +1,25 @@
name: Locker
on:
schedule:
- cron: 30 11 * * * # Run at 11:30 AM UTC (3:30 AM PST, 4:30 AM PDT)
workflow_dispatch:
inputs:
readonly:
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
default: false
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v2
- name: Install Actions
run: cd ./.github/actions && npm install --production && cd ../..
- name: Run Locker
uses: ./.github/actions/Locker
with:
readonly: ${{ github.event.inputs.readonly }}
daysSinceClose: 45
daysSinceUpdate: 3
ignoreLabels: more votes needed,debugger,internal
@@ -0,0 +1,28 @@
name: More Info Needed Closer
on:
schedule:
- cron: 10 11 * * * # Run at 11:10 AM UTC (3:10 AM PST, 4:10 AM PDT)
workflow_dispatch:
inputs:
readonly:
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
default: false
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v2
- name: Install Actions
run: cd ./.github/actions && npm install --production && cd ../..
- name: Stale Closer
uses: ./.github/actions/StaleCloser
with:
readonly: ${{ github.event.inputs.readonly }}
labels: more info needed
ignoreLabels: debugger,internal
closeDays: 60
closeComment: "This issue has been closed automatically because it needs more information and has not had recent activity."
pingDays: 80
pingComment: "Hey @${assignee}, this issue might need further attention.\n\n@${author}, you can help us out by closing this issue if the problem no longer exists, or adding more information."
+28
View File
@@ -0,0 +1,28 @@
name: Question Closer
on:
schedule:
- cron: 20 11 * * * # Run at 11:20 AM UTC (3:20 AM PST, 4:20 AM PDT)
workflow_dispatch:
inputs:
readonly:
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
default: false
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v2
- name: Install Actions
run: cd ./.github/actions && npm install --production && cd ../..
- name: Stale Closer
uses: ./.github/actions/StaleCloser
with:
readonly: ${{ github.event.inputs.readonly }}
labels: question
ignoreLabels: debugger,internal
closeDays: 60
closeComment: "This issue has been closed automatically because it's labeled as a 'question' and has not had recent activity."
pingDays: 80
pingComment: "Hey @${assignee}, this issue might need further attention.\n\n@${author}, you can help us out by closing this issue if the question has been answered."
+1 -1
View File
@@ -71,7 +71,7 @@ module.exports = {
"no-fallthrough": "error",
"no-invalid-this": "error",
"no-irregular-whitespace": "error",
"no-multiple-empty-lines": "error",
"no-multiple-empty-lines": ["error", { "max": 1, "maxEOF": 1, "maxBOF": 0}],
"no-new-wrappers": "error",
"no-redeclare": "error",
"no-return-await": "error",
+1
View File
@@ -12,6 +12,7 @@ LLVM
bin/cpptools*
bin/*.dll
bin/.vs
bin/LICENSE.txt
# ignore lock files
install.lock
+79 -1
View File
@@ -1,5 +1,83 @@
# C/C++ for Visual Studio Code Change Log
## Version 1.1.3: December 3, 2020
### Bug Fixes
* Disable the "join Insiders" prompt for Linux CodeSpaces. [#6491](https://github.com/microsoft/vscode-cpptools/issues/6491)
* Fix "shell" tasks giving error "Cannot read property `includes` of undefined". [#6538](https://github.com/microsoft/vscode-cpptools/issues/6538)
* Fix various task variables not getting resolved with `cppbuild` tasks. [#6538](https://github.com/microsoft/vscode-cpptools/issues/6538)
* Fix warnings not appearing with `cppbuild` tasks. [#6556](https://github.com/microsoft/vscode-cpptools/issues/6556)
* Fix endless CPU/memory usage if the cpptools process crashes. [#6603](https://github.com/microsoft/vscode-cpptools/issues/6603)
* Fix the default `cwd` for `cppbuild` tasks. [#6618](https://github.com/microsoft/vscode-cpptools/issues/6618)
## Version 1.1.2: November 17, 2020
### Bug Fix
* Fix resolution of `${fileDirname}` with `cppbuild` tasks. [#6386](https://github.com/microsoft/vscode-cpptools/issues/6386)
## Version 1.1.1: November 9, 2020
### Bug Fixes
* Fix cpptools binaries sometimes not getting installed on Windows. [#6453](https://github.com/microsoft/vscode-cpptools/issues/6453)
## Version 1.1.0: November 5, 2020
### New Features
* Add language server support for Windows ARM64 (no debugging yet). [#5583](https://github.com/microsoft/vscode-cpptools/issues/5583)
* [cppdbg] Debugger Protocol Updates:
* ReadMemoryRequest [PR MIEngine#1028](https://github.com/microsoft/MIEngine/pull/1028)
* ModulesRequest and ModuleEvent [PR MIEngine#1054](https://github.com/microsoft/MIEngine/pull/1054)
* [cppdbg] Support new SourceFileMap schema [PR #6319](https://github.com/microsoft/vscode-cpptools/pull/6319)
### Enhancements
* Add support to run c/cpp build tasks. [#3674](https://github.com/microsoft/vscode-cpptools/issues/3674), [#5270](https://github.com/microsoft/vscode-cpptools/issues/5270), [#5285](https://github.com/microsoft/vscode-cpptools/issues/5285)
* Tasks: Configure Task
* Tasks: Run Build Task
* C/C++: Build and debug active file.
* Add logging around compiler probing, and the "C/C++ Configuration Warnings" output channel. [#5259](https://github.com/microsoft/vscode-cpptools/issues/5259)
* Add compile commands info to Log Diagnostics. [#5761](https://github.com/microsoft/vscode-cpptools/issues/5761)
* Add `intelliSenseUpdateDelay` setting. [#6142](https://github.com/microsoft/vscode-cpptools/issues/6142)
* YuTengjing (@tjx666) [PR #6344](https://github.com/microsoft/vscode-cpptools/pull/6344)
* Enable support for specifying a compiler by only the filename if it's in the environment path. [#6179](https://github.com/microsoft/vscode-cpptools/issues/6179)
* Restart the IntelliSense process if its memory usage exceeds the `C_Cpp.intelliSenseMemoryLimit` setting. [#6230](https://github.com/microsoft/vscode-cpptools/issues/6230)
* [cppdbg] Stepping out of a function will display '$ReturnValue'.
* @Trass3r [PR MIEngine#1036](https://github.com/microsoft/MIEngine/pull/1036)
* [cppdbg] Support composite expressions in natvis ArrayItems
* @Trass3r [PR MIEngine#1044](https://github.com/microsoft/MIEngine/pull/1044)
* Add handling of the "-ansi" compiler arg when querying gcc/clang compilers.
* Add support for inferring the IntelliSenseMode based on the "--target" compiler arg.
* Add support for inferring the C standard based on new c11/c17 language standard args for cl.exe.
* Allow custom config providers to omit IntelliSenseMode and C/C++ language standard, enabling them to be inferred from the `compilerPath` and `compilerArgs`.
### Bug Fixes
* Change macOS Framework searching to only parse the "Current" framework folder when the "Headers" folder is not found. [#2046](https://github.com/microsoft/vscode-cpptools/issues/2046)
* Show the compiler path in the `Build and Debug Active File` dropdown. [#4278](https://github.com/microsoft/vscode-cpptools/issues/4278)
* Fix incorrect signature help active argument with multiple template parameters. [#4786](https://github.com/microsoft/vscode-cpptools/issues/4786)
* Fix bug with directories not getting created for browse.databaseFilename. [#5181](https://github.com/microsoft/vscode-cpptools/issues/5181)
* Allow the debug configuration to wait for the preLaunchTask to complete before continuing on and resolving environment variables or processes that may have been set in the 'tasks.json'. [#5287](https://github.com/microsoft/vscode-cpptools/issues/5287)
* Change the Windows SDK detection to require the shared, ucrt, and um folders. [#5817](https://github.com/microsoft/vscode-cpptools/issues/5817)
* Fix issues with IntelliSense for clang-cl.exe. [#6075](https://github.com/microsoft/vscode-cpptools/issues/6075)
* Fix "Comments are not permitted in JSON" error when `c_cpp_properties.json` is open but not active. [#6132](https://github.com/microsoft/vscode-cpptools/issues/6132)
* Rename the C language standard setting values from c18 and gnu18 to c17 and gnu17. [#6105](https://github.com/microsoft/vscode-cpptools/issues/6105)
* Add more IntelliSense support for std ranges, concepts, and modules exports (__cpp_lib_concepts is now enabled). [#6173](https://github.com/microsoft/vscode-cpptools/issues/6173)
* Add "-fnoblocks" when querying clang on Mac, as IntelliSense does not currently support blocks. [#6189](https://github.com/microsoft/vscode-cpptools/issues/6189)
* Fix clang-format on 32-bit Windows. [#6195](https://github.com/microsoft/vscode-cpptools/issues/6195)
* Fix incorrect formatting results when clang-format removes duplicate includes. [#6205](https://github.com/microsoft/vscode-cpptools/issues/6205)
* Fix a case where the main process could get stuck. [#6207](https://github.com/microsoft/vscode-cpptools/issues/6207)
* Fix C files being treated as C++ files with compile_commands.json. [#6279](https://github.com/microsoft/vscode-cpptools/issues/6279)
* Fix `Build and Debug Active File` race condition with EngineLogs. [#6304](https://github.com/microsoft/vscode-cpptools/pull/6304)
* Fix changes to some `c_cpp_properties.json` properties not taking effect (until a reload) if `compileCommands` is set. [#6332](https://github.com/microsoft/vscode-cpptools/issues/6332)
* Fix issue with compiler querying not handling various clang command line options correctly. [6359](https://github.com/microsoft/vscode-cpptools/issues/6356)
* Fix multiroot workspace tag parsing when `compileCommands` is set. [#6383](https://github.com/microsoft/vscode-cpptools/issues/6383)
* Fix mingw32 compilers not being detected. [#6394](https://github.com/microsoft/vscode-cpptools/issues/6394)
* Various bug fixes for vcFormat. [PR #6408](https://github.com/microsoft/vscode-cpptools/pull/6408)
* Fix issue causing zh-cn and zh-tw language files not to be used. [PR #6418](https://github.com/microsoft/vscode-cpptools/pull/6418)
* Fix the handling of various compiler arg pairs when querying compilers.
* Avoid parsing entries in compile_commands.json for file types that we do not support.
* Fixed an issue in which only C or C++ system headers were added to the browse path, rather than both.
* Fix issue causing some localized messages to be displayed incorrectly.
* Fixed issue with shipping an older version of vsdbg in offline packages.
### Other Contributions
* Refactoring provider classes.
* Abhishek Pal (@devabhishekpal) [PR #5998](https://github.com/microsoft/vscode-cpptools/pull/5998)
## Version 1.0.1: September 21, 2020
### Bug Fixes
* Fix "No IL available" IntelliSense error on Linux/macOS when `#error` directives are present in the source code. [#6009](https://github.com/microsoft/vscode-cpptools/issues/6009), [#6114](https://github.com/microsoft/vscode-cpptools/issues/6114)
@@ -138,7 +216,7 @@
## Version 0.28.0: May 12, 2020
### New Features
* Add C/C++ language-aware code folding. [#407](https://github.com/microsoft/vscode-cpptools/issues/407)
* Add GNU (and C18) language standard options. [#2782](https://github.com/microsoft/vscode-cpptools/issues/2782)
* Add GNU (and C17) language standard options. [#2782](https://github.com/microsoft/vscode-cpptools/issues/2782)
* Add ARM and ARM64 IntelliSense modes. [#4271](https://github.com/microsoft/vscode-cpptools/issues/4271), [PR #5250](https://github.com/microsoft/vscode-cpptools/pull/5250)
### Enhancements
+1
View File
@@ -56,6 +56,7 @@ The extension has platform-specific binary dependencies, therefore installation
`cpptools-linux-aarch64.vsix` | Linux ARM 64-bit
`cpptools-osx.vsix` | macOS
`cpptools-win32.vsix` | Windows 64-bit & 32-bit
`cpptools-win-arm64.vsix` | Windows ARM64
`cpptools-linux32.vsix` | Linux 32-bit ([available up to version 0.27.0](https://github.com/microsoft/vscode-cpptools/issues/5346))
## Contribution
File diff suppressed because it is too large Load Diff
+17 -1
View File
@@ -3335,5 +3335,21 @@
"Porovnání je ve standardním C++20 nejednoznačné, protože implikovaný operátor porovnání se zaměněnými parametry je stejně dobrá shoda -- příčinou je obvykle chybějící kvalifikátor const u operátoru porovnání. Podívejte se na %nod.",
"Neplatné concept-id",
"Nepovedlo se nahradit argumenty %T pro klauzuli requires.",
"Omezení pro %nd se nesplnila."
"Omezení pro %nd se nesplnila.",
"typ proměnné %t ve funkci constexpr má virtuální základní třídy",
"konstantní výraz nemůže přidělit virtuální základní podobjekt (pro typ %t)",
"parametr šablony typu třídy musí být typu strukturální třídy",
"podpora pro literály UTF-8 vyžaduje podporu literálů u-literal.",
"mapování souborů modulu pro %s bylo zadané více než jednou",
"mapování jednotek záhlaví pro %s bylo zadané více než jednou",
"není zadané žádné mapování pro %s",
"mapování souborů modulu pro %s je neplatné",
"nejde najít záhlaví %s, které se má importovat",
"více než jeden soubor v seznamu souborů modulu odpovídá %s",
"soubor modulu, který se našel pro %s, je pro jiný modul",
"libovolný druh souboru modulu",
"nejde přečíst soubor modulu",
"předdefinovaná funkce není k dispozici, protože typ char8_t se nepodporuje s aktuálními možnostmi",
"možnost příkazového řádku --ms_await nejde zadat, pokud jsou povolené korutiny C++20",
"nestandardní použití explicitního konstruktoru %nod pro inicializaci výchozího agregačního elementu"
]
+17 -1
View File
@@ -3335,5 +3335,21 @@
"Der Vergleich ist in standardmäßigem C++20 mehrdeutig, weil der implizite Vergleichsoperator mit umgekehrten Parametern eine gleichwertige Übereinstimmung darstellt. Dies wird normalerweise durch einen fehlenden const-Qualifizierer für den Vergleichsoperator ausgelöst. Siehe \"%nod\".",
"Ungültige concept-id",
"Fehler beim Ersetzen von Argumenten \"%T\" für requires-Klausel.",
"Einschränkungen für \"%nd\" sind nicht erfüllt."
"Einschränkungen für \"%nd\" sind nicht erfüllt.",
"Der Variablentyp \"%t\" in der constexpr-Funktion weist virtuelle Basisklassen auf.",
"Ein konstanter Ausdruck kann kein virtuelles Basisteilobjekt zuordnen (für den Typ \"%t\").",
"Ein Vorlagenparameter des Klassentyps muss einen strukturellen Klassentyp aufweisen.",
"Die Unterstützung für UTF-8-Literale erfordert Unterstützung für u-Literale.",
"Die Moduldateizuordnung für \"%s\" wurde mehrmals angegeben.",
"Die Zuordnung der Headereinheit für \"%s\" wurde mehrmals angegeben.",
"Für \"%s\" wurde keine Zuordnung angegeben.",
"Die Moduldateizuordnung für \"%s\" ist ungültig.",
"Der zu importierende Header \"%s\" wurde nicht gefunden.",
"Mehrere Dateien in der Moduldateiliste stimmen mit \"%s\" überein.",
"Die für \"%s\" gefundene Moduldatei ist für ein anderes Modul bestimmt.",
"Beliebige Art von Moduldatei",
"Die Moduldatei kann nicht gelesen werden.",
"Die integrierte Funktion ist nicht verfügbar, weil der char8_t-Typ mit den aktuellen Optionen nicht unterstützt wird.",
"Die Befehlszeilenoption \"--ms_await\" kann nicht angegeben werden, wenn C++20-Coroutinen aktiviert sind.",
"Nicht standardmäßige Verwendung des expliziten Konstruktors \"%nod\" für die standardmäßige Aggregatelementinitialisierung"
]
+17 -1
View File
@@ -3335,5 +3335,21 @@
"la comparación es ambigua en C++ 20 estándar porque el operador de comparación implicado con los parámetros inversos es una coincidencia igualmente buena. Esto suele deberse a que falta un calificador \"const\" en el operador de comparación; vea %nod",
"identificador de concepto no válido",
"error de sustitución de los argumentos %T para la cláusula requires",
"no se cumplen las restricciones de %nd"
"no se cumplen las restricciones de %nd",
"el tipo de variable %t de la función constexpr tiene clases base virtuales",
"una expresión constante no puede asignar un subobjeto base virtual (para el tipo %t)",
"un parámetro de plantilla de tipo de clase debe ser un tipo de clase estructural",
"la compatibilidad con los literales UTF-8 requiere compatibilidad con u-literal.",
"la asignación de archivos de módulo para \"%s\" se especificó más de una vez",
"la asignación de unidades de encabezado para \"%s\" se especificó más de una vez",
"no se especificó ninguna asignación para \"%s\"",
"la asignación del archivo de módulo para \"%s\" no es válida",
"no se encuentra el encabezado \"%s\" para importar",
"hay más de un archivo de la lista de archivos de módulo que coincide con \"%s\"",
"el archivo de módulo que se encontró para \"%s\" es para otro módulo",
"cualquier tipo de archivo de módulo",
"no se puede leer el archivo de módulo",
"la función integrada no está disponible porque no se admite el tipo char8_t con las opciones actuales",
"no se puede especificar la opción de línea de comandos --ms_await si están habilitadas las corrutinas de C++ 20",
"uso no estándar de %nod de constructor explícito para la inicialización predeterminada del elemento de agregado"
]
+17 -1
View File
@@ -3335,5 +3335,21 @@
"la comparaison est ambiguë dans la norme C++20, car l'opérateur de comparaison implicite avec des paramètres inversés représente une correspondance tout aussi appropriée (cela est généralement dû à un qualificateur 'const' manquant sur l'opérateur de comparaison) ; consultez %nod",
"ID de concept non valide",
"échec de la substitution des arguments %T pour la clause requires",
"les contraintes pour %nd ne sont pas satisfaites"
"les contraintes pour %nd ne sont pas satisfaites",
"le type de variable %t dans la fonction constexpr a des classes de base virtuelles",
"une expression constante ne peut pas allouer un sous-objet de base virtuel (pour le type %t)",
"un paramètre de modèle de type classe doit être de type classe structurelle",
"la prise en charge des littéraux UTF-8 nécessite une prise en charge du littéral u.",
"mappage de fichier de module pour '%s' spécifié plusieurs fois",
"mappage d'unité d'en-tête pour '%s' spécifié plusieurs fois",
"aucun mappage spécifié pour '%s'",
"le mappage de fichier de module pour '%s' est non valide",
"l'en-tête '%s' à importer est introuvable",
"plusieurs fichiers dans la liste de fichiers de module correspondent à '%s'",
"le fichier de module trouvé pour '%s' est destiné à un autre module",
"n'importe quel genre de fichier de module",
"impossible de lire le fichier de module",
"la fonction intégrée n'est pas disponible, car le type char8_t n'est pas pris en charge avec les options actuelles",
"l'option de ligne de commande --ms_await ne peut pas être spécifiée si les coroutines C++20 sont activées",
"utilisation non standard du constructeur explicite %nod pour l'initialisation de l'élément d'agrégation par défaut"
]
+17 -1
View File
@@ -3335,5 +3335,21 @@
"il confronto è ambiguo in C++20 standard perché l'operatore di confronto implicito con parametri invertiti è una corrispondenza altrettanto valida. In genere questo problema dipende dalla mancanza di un qualificatore 'const' nell'operatore di confronto. Vedere %nod",
"ID concetto non valido",
"la sostituzione degli argomenti %T per la clausola requires non è riuscita",
"i vincoli per %nd non sono soddisfatti"
"i vincoli per %nd non sono soddisfatti",
"il tipo di variabile %t nella funzione constexpr contiene classi di base virtuali",
"un'espressione costante non può allocare un sotto-oggetto di base virtuale (per il tipo %t)",
"un parametro di modello di tipo classe deve essere un tipo classe strutturale",
"per il supporto dei valori letterali UTF-8 è richiesto il supporto di valori letterali u",
"il mapping del file del modulo per '%s' è stato specificato più di una volta",
"il mapping dell'unità intestazione per '%s' è stato specificato più di una volta",
"non è stato specificato alcun mapping per '%s'",
"Il mapping del file del modulo per '%s' non è valido",
"non è possibile trovare l'intestazione '%s' da importare",
"più di un file nell'elenco file di modulo corrisponde a '%s'",
"il file di modulo trovato per '%s' è riferito a un modulo diverso",
"qualsiasi tipo di modulo",
"non è possibile leggere il file del modulo",
"la funzione predefinita non è disponibile perché il tipo char8_t non è supportato con le opzioni correnti",
"non è possibile specificare l'opzione della riga di comando --ms_await se le coroutine di C++20 sono abilitate",
"uso non standard del costruttore esplicito %nod per l'inizializzazione dell'elemento di aggregazione predefinito"
]
+17 -1
View File
@@ -3335,5 +3335,21 @@
"標準 C++ 20 では、パラメーターが反転した暗黙的な比較演算子が同程度に適合するため、比較はあいまいです。これは通常、比較演算子の 'const' 修飾子がない場合に発生します。%nod を参照してください",
"無効な概念 ID",
"Requires 句の引数 %T の置換に失敗しました",
"%nd の制約が満たされていません"
"%nd の制約が満たされていません",
"constexpr 関数の変数の型 %t に仮想基底クラスが含まれています",
"定数式では、仮想ベースのサブオブジェクト (型 %t) の割り当てを行うことはできません",
"クラス型のテンプレート パラメーターは、構造クラス型である必要があります",
"UTF-8 リテラルのサポートには、u リテラルのサポートが必要です。",
"'%s' のモジュール ファイル マッピングが 2 回以上指定されました",
"'%s' のヘッダー単位のマッピングが 2 回以上指定されました",
"'%s' にマッピングが指定されていません",
"'%s' のモジュール ファイル マッピングが無効です",
"インポートするヘッダー '%s' が見つかりません",
"モジュール ファイル リスト内の複数のファイルが '%s' と一致しています",
"'%s' に対して見つかったモジュール ファイルは別のモジュール用です",
"あらゆる種類のモジュール ファイル",
"モジュール ファイルを読み取れません",
"現在のオプションで char8_t 型がサポートされていないので、ビルトイン関数を使用できません",
"--ms_await コマンド ライン オプションは、C++20 コルーチンが有効になっている場合は指定できません",
"既定の集約要素の初期化における明示的なコンストラクター %nod の非標準的な使用"
]
+17 -1
View File
@@ -3335,5 +3335,21 @@
"역 매개 변수를 사용하는 암시적 비교 연산자는 동일하게 적절한 일치 항목이므로 표준 C++20에서 비교는 모호합니다. 이 문제는 일반적으로 비교 연산자에 'const' 한정자가 없어서 발생합니다. %nod를 참조하세요.",
"잘못된 개념 ID",
"requires 절의 %T 인수를 대체하지 못했습니다.",
"%nd에 대한 제약 조건을 충족하지 않습니다."
"%nd에 대한 제약 조건을 충족하지 않습니다.",
"constexpr 함수의 변수 형식 %t에는 가상 기본 클래스가 있습니다.",
"상수 식은 가상 기본 하위 개체(%t 형식)를 할당할 수 없습니다.",
"클래스 형식의 템플릿 매개 변수는 구조적 클래스 형식이어야 합니다.",
"UTF-8 리터럴에 대한 지원에는 u-리터럴 지원이 필요합니다.",
"'%s'에 대한 모듈 파일 매핑이 두 번 이상 지정되었습니다.",
"'%s'에 대한 헤더 단위 매핑이 두 번 이상 지정되었습니다.",
"'%s'에 대한 매핑이 지정되지 않았습니다.",
"'%s'에 대한 모듈 파일 매핑이 잘못되었습니다.",
"가져올 '%s' 헤더를 찾을 수 없습니다.",
"모듈 파일 목록에 있는 두 개 이상의 파일이 '%s'과(와) 일치합니다.",
"'%s'에 대해 찾은 모듈 파일이 다른 모듈에 대한 것입니다.",
"모든 종류의 모듈 파일",
"모듈 파일을 읽을 수 없음",
"char8_t 형식이 현재 옵션에서 지원되지 않기 때문에 기본 제공 함수를 사용할 수 없습니다.",
"C++20 코루틴을 사용하도록 설정한 경우 --ms_await 명령줄 옵션을 지정할 수 없습니다.",
"기본 집계 요소 초기화에 명시적 생성자 %nod의 비표준 사용"
]
+17 -1
View File
@@ -3335,5 +3335,21 @@
"porównanie jest niejednoznaczne w standardowym języku C++20, ponieważ implikowany operator porównania z odwróconymi parametrami jest równie dobrym dopasowaniem — jest to zwykle spowodowane brakującym kwalifikatorem „const” w operatorze porównania; zobacz %nod",
"nieprawidłowy identyfikator koncepcji",
"podstawianie argumentów %T dla klauzuli requires nie powiodło się",
"ograniczenia dla %nd nie są spełnione"
"ograniczenia dla %nd nie są spełnione",
"typ zmiennej %t w funkcji constexpr ma wirtualne klasy podstawowe",
"wyrażenie stałe nie może przydzielić wirtualnego podobiektu podstawowego (dla typu %t)",
"parametr szablonu typu klasy musi być typu klasy strukturalnej",
"obsługa literałów UTF-8 wymaga obsługi literału z prefiksem u.",
"mapowanie pliku modułu dla elementu „%s” zostało określone więcej niż raz",
"mapowanie jednostki nagłówka dla elementu „%s” zostało określone więcej niż raz",
"nie określono mapowania dla elementu „%s”",
"mapowanie pliku modułu dla elementu „%s” jest nieprawidłowe",
"nie można odnaleźć nagłówka „%s” do zaimportowania",
"więcej niż jeden plik na liście plików modułu pasuje do elementu „%s”",
"plik modułu znaleziony dla elementu „%s” jest dla innego modułu",
"dowolny rodzaj pliku modułu",
"nie można odczytać pliku modułu",
"wbudowana funkcja jest niedostępna, ponieważ typ char8_t nie jest obsługiwany z bieżącymi opcjami",
"nie można określić opcji wiersza polecenia --ms_await, jeśli włączono koprocedury języka C++20",
"niestandardowe użycie konstruktora jawnego %nod dla domyślnej inicjalizacji elementu agregacji"
]
+17 -1
View File
@@ -3335,5 +3335,21 @@
"a comparação é ambígua no padrão de C++20 porque o operador de comparação implícito com parâmetros invertidos é uma correspondência igualmente boa. Isso geralmente é causado por um qualificador 'const' ausente no operador de comparação. Confira %nod",
"ID do conceito inválida",
"falha na substituição de argumentos %T da cláusula requires",
"as restrições de %nd não estão satisfeitas"
"as restrições de %nd não estão satisfeitas",
"o tipo de variável %t na função constexpr tem classes base virtuais",
"uma expressão de constante não pode alocar um subobjeto base virtual (para o tipo %t)",
"um parâmetro de modelo de tipo de classe precisa ser do tipo de classe estrutural",
"o suporte para literais UTF-8 exige o suporte para o literal u.",
"o mapeamento de arquivo de módulo de '%s' foi especificado mais de uma vez",
"o mapeamento de unidade de cabeçalho de '%s' foi especificado mais de uma vez",
"não foi especificado nenhum mapeamento para '%s'",
"o mapeamento de arquivo de módulo de '%s' é inválido",
"não é possível localizar o cabeçalho '%s' a ser importado",
"mais de um arquivo na lista de arquivos de módulo corresponde a '%s'",
"o arquivo de módulo encontrado para '%s' é de um módulo diferente",
"qualquer tipo de arquivo de módulo",
"não é possível ler o arquivo de módulo",
"a função interna não está disponível porque não há suporte para o tipo char8_t com as opções atuais",
"a opção da linha de comando --ms_await não poderá ser especificada se as corrotinas do C++20 estiverem habilitadas",
"o uso não padrão do construtor explícito %nod para inicialização do elemento de agregação padrão"
]
+17 -1
View File
@@ -3335,5 +3335,21 @@
"cравнение является неоднозначным в стандартном C++ 20, поскольку подразумеваемый оператор сравнения с обратными параметрами является в той же степени подходящим соответствием — как правило, это вызвано отсутствием квалификатора \"const\" в операторе сравнения; см. %nod",
"недопустимый идентификатор концепции",
"не удалось подставить аргументы %T для предложения requires",
"ограничения для %nd не удовлетворены"
"ограничения для %nd не удовлетворены",
"тип переменной %t в функции constexpr содержит виртуальные базовые классы",
"константное выражение не может выделить виртуальный базовый подобъект (для типа %t)",
"параметр шаблона для типа класса должен иметь тип структурного класса",
"для поддержки литералов UTF-8 требуется поддержка u-literal.",
"сопоставление файла модуля для \"%s\" указано несколько раз",
"сопоставление блока заголовка для \"%s\" указано несколько раз",
"сопоставление для \"%s\" не указано",
"сопоставление файла модуля для \"%s\" является недопустимым",
"не удается найти заголовок \"%s\" для импорта",
"несколько файлов в списке файлов модулей соответствуют \"%s\"",
"файл модуля, обнаруженный для \"%s\", относится к другому модулю",
"любой тип файла модуля",
"не удалось прочитать файл модуля",
"встроенная функция недоступна, так как тип char8_t не поддерживается с текущими параметрами.",
"невозможно указать параметр командной строки --ms_await, если включены сопрограммы C++20.",
"нестандартное использование явного конструктора %nod для агрегатной инициализации элементов по умолчанию."
]
+17 -1
View File
@@ -3335,5 +3335,21 @@
"ters çevrilmiş parametrelere sahip örtük karşılaştırma işleci eşit olarak iyi bir eşleşme olduğundan karşılaştırma, standart C++20'de belirsizdir; bu genellikle karşılaştırma işlecinde eksik 'const' niteleyicisinden kaynaklanır; bkz. %nod",
"kavram kimliği geçersiz",
"requires yan tümcesi için %T bağımsız değişkenleri değiştirilemedi",
"%nd için kısıtlamalar karşılanmadı"
"%nd için kısıtlamalar karşılanmadı",
"constexpr işlevindeki %t değişken türü, sanal temel sınıflara sahip",
"sabit ifade bir sanal temel alt nesneyi ayıramaz (%t türü için)",
"sınıf türündeki bir şablon parametresi yapısal sınıf türünde olmalıdır",
"UTF-8 sabit değerleri desteği için u-literal desteği gerekir.",
"'%s' için modül dosyası eşlemesi birden çok kez belirtildi",
"'%s' için üst bilgi birimi eşlemesi birden çok kez belirtildi",
"'%s' için eşleme belirtilmedi",
"'%s' için modül dosyası eşlemesi geçersiz",
"içeri aktarılacak '%s' üst bilgisi bulunamıyor",
"modül dosyası listesinde birden fazla dosya '%s' ile eşleşiyor",
"'%s' için bulunan modül dosyası farklı bir modüle yönelik",
"herhangi bir türde modül dosyası",
"modül dosyası okunamıyor",
"char8_t türü geçerli seçeneklerle desteklenmediği için yerleşik işlev kullanılamıyor",
"C++20 eş yordamları etkinleştirilirse --ms_await komut satırı seçeneği belirtilemez",
"varsayılan toplama öğesi başlatma için açık oluşturucu %nod için standart olmayan kullanım"
]
@@ -3335,5 +3335,21 @@
"标准 C++20 中的比较不明确,因为连接反向参数的隐式比较运算符的比较结果表示了同等好的匹配--这通常是由于比较运算符中缺少 \"const\" 限定符造成的; 请参阅 %nod",
"concept-id 无效",
"requires-clause 的参数 %T 替换失败",
"不满足 %nd 的约束"
"不满足 %nd 的约束",
"constexpr 函数中变量类型 %t 具有虚拟基类",
"常数表达式无法为类型 %t 分配虚拟基子对象",
"类类型的模板参数必须是结构类类型",
"对 UTF-8 文本的支持需要 u 文本支持。",
"多次为“%s”指定了模块文件映射",
"多次为“%s”指定了标头单元映射",
"未为“%s”指定映射",
"“%s”的模块文件映射无效",
"找不到要导入的标头“%s”",
"模块文件列表中有多个文件与“%s”匹配",
"为“%s”找到的模块文件用于其他模块",
"任何类型的模块文件",
"无法读取模块文件",
"内置函数不可用,因为当前选项不支持 char8_t 类型",
"如果启用了 C++20 协同程序,则无法指定 --ms_await 命令行选项",
"对默认聚合元素初始化使用显式构造函数 %nod 不是标准做法"
]
@@ -3335,5 +3335,21 @@
"因為具有反轉參數的隱含比較運算子為均等相符,所以標準 C++20 中的比較會模稜兩可。這通常是比較運算子中遺漏 'const' 限定詞所致; 請參閱 %nod",
"概念識別碼無效",
"Requires 子句的引數 %T 替代失敗",
"未滿足 %nd 的條件約束"
"未滿足 %nd 的條件約束",
"constexpr 函式中的變數型別 %t 具有虛擬基底類別",
"常數運算式無法配置虛擬基底子物件 (針對型別 %t )",
"類別型別的範本參數必須為結構類別型別",
"UTF-8 常值的支援需要 u-literal 支援。",
"指定了多次 '%s' 的模組檔案對應",
"指定了多次 '%s' 的標頭單位對應",
"未指定 '%s' 的對應",
"'%s' 的模組檔案對應無效",
"找不到要匯入的標頭 '%s'",
"模組檔案清單中有多個檔案與 '%s' 相符",
"為 '%s' 找到的模組檔案會用於其他模組",
"任何類型的模組檔案",
"無法讀取模組檔案",
"因為目前的選項不支援 char8_t 類型,所以無法使用內建函式",
"如果啟用 C++ 20 協同程式,就不能指定 --ms_await 命令列選項",
"非標準地使用明確的建構函式 %nod 進行預設彙總元素初始化"
]
+3 -3
View File
@@ -4,11 +4,11 @@
"--microsoft",
"--microsoft_bugs",
"--microsoft_version",
"1926",
"1928",
"--pack_alignment",
"8",
"-D_MSC_VER=1926",
"-D_MSC_FULL_VER=192628619",
"-D_MSC_VER=1928",
"-D_MSC_FULL_VER=192829507",
"-D_MSC_BUILD=0",
"-D_M_ARM=7"
],
+3 -3
View File
@@ -4,12 +4,12 @@
"--microsoft",
"--microsoft_bugs",
"--microsoft_version",
"1926",
"1928",
"--pack_alignment",
"8",
"-D_CPPUNWIND=1",
"-D_MSC_VER=1926",
"-D_MSC_FULL_VER=192628619",
"-D_MSC_VER=1928",
"-D_MSC_FULL_VER=192829507",
"-D_MSC_BUILD=0",
"-D_M_ARM64=1"
],
+3 -3
View File
@@ -4,12 +4,12 @@
"--microsoft",
"--microsoft_bugs",
"--microsoft_version",
"1926",
"1928",
"--pack_alignment",
"8",
"-D_CPPUNWIND=1",
"-D_MSC_VER=1926",
"-D_MSC_FULL_VER=192628619",
"-D_MSC_VER=1928",
"-D_MSC_FULL_VER=192829507",
"-D_MSC_BUILD=0",
"-D_M_X64=100",
"-D_M_AMD64=100"
+3 -3
View File
@@ -4,11 +4,11 @@
"--microsoft",
"--microsoft_bugs",
"--microsoft_version",
"1926",
"1928",
"--pack_alignment",
"8",
"-D_MSC_VER=1926",
"-D_MSC_FULL_VER=192628619",
"-D_MSC_VER=1928",
"-D_MSC_FULL_VER=192829507",
"-D_MSC_BUILD=0",
"-D_M_IX86=600",
"-D_M_IX86_FP=2"
+2 -2
View File
@@ -32,11 +32,11 @@
"c89",
"c99",
"c11",
"c18",
"c17",
"gnu89",
"gnu99",
"gnu11",
"gnu18",
"gnu17",
"${default}"
]
},
+1 -1
View File
@@ -4,5 +4,5 @@
"recursiveIncludes": 100,
"gotoDefIntelliSense": 100,
"enhancedColorization": 100,
"minimumVSCodeVersion": "1.44.0"
"minimumVSCodeVersion": "1.49.0"
}
+85 -74
View File
@@ -23,94 +23,94 @@
"c_cpp.command.vcpkgClipboardInstallSuggested.title": "将 vcpkg 安装命令复制到剪贴板",
"c_cpp.command.vcpkgOnlineHelpSuggested.title": "访问 vcpkg 帮助页",
"c_cpp.configuration.formatting.description": "配置格式化引擎",
"c_cpp.configuration.formatting.clangFormat.description": "将使用 clang-format 设置代码的格式",
"c_cpp.configuration.formatting.vcFormat.description": "将使用 Visual C++ 格式引擎来设置代码的格式",
"c_cpp.configuration.formatting.Default.description": "将使用 clang-format 设置代码的格式",
"c_cpp.configuration.formatting.Disabled.description": "将禁用代码格式设置",
"c_cpp.configuration.vcFormat.indent.braces.description": "按照在“编辑器: 制表符大小”设置中指定的量缩进大括号",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.description": "相对于以下内容缩进新行:",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.outermostParenthesis.description": "最外的左括号",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.innermostParenthesis.description": "最里面的左括号",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.statementBegin.description": "当前语句的开头",
"c_cpp.configuration.vcFormat.indent.withinParentheses.description": "键入新行时,新行对齐到左括号下或基于 \"C_Cpp.vcFormat.indent.multiLineRelativeTo\" 对齐",
"c_cpp.configuration.vcFormat.indent.withinParentheses.alignToParenthesis.description": "新行对齐到左括号下",
"c_cpp.configuration.vcFormat.indent.withinParentheses.indent.description": "新行基于 \"C_Cpp.vcFormat.indent.multiLineRelativeTo\" 缩进",
"c_cpp.configuration.vcFormat.indent.preserveWithinParentheses.description": "在现有代码中,保留括号内新行现有的缩进对齐方式",
"c_cpp.configuration.vcFormat.indent.caseLabels.description": "按照在“编辑器: 制表符大小”设置中指定的量,相对于 switch 语句缩进标签",
"c_cpp.configuration.vcFormat.indent.caseContents.description": "按照在“编辑器: 制表符大小”设置中指定的量,相对于标签缩进 case 中的代码",
"c_cpp.configuration.formatting.clangFormat.description": "将使用 clang-format 设置代码的格式",
"c_cpp.configuration.formatting.vcFormat.description": "将使用 Visual C++ 格式设置引擎来设置代码的格式",
"c_cpp.configuration.formatting.Default.description": "将使用 clang-format 设置代码的格式",
"c_cpp.configuration.formatting.Disabled.description": "将禁用代码格式设置",
"c_cpp.configuration.vcFormat.indent.braces.description": "按照在“编辑器: 制表符大小”设置中指定的量缩进大括号",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.description": "确定新行缩进的基准",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.outermostParenthesis.description": "相对于最外的左括号缩进新行。",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.innermostParenthesis.description": "相对于最内侧的左括号缩进新行。",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.statementBegin.description": "相对于当前语句的开头缩进新行。",
"c_cpp.configuration.vcFormat.indent.withinParentheses.description": "键入新行时,新行对齐到左括号下或基于 \"C_Cpp.vcFormat.indent.multiLineRelativeTo\" 对齐",
"c_cpp.configuration.vcFormat.indent.withinParentheses.alignToParenthesis.description": "新行对齐到左括号下",
"c_cpp.configuration.vcFormat.indent.withinParentheses.indent.description": "新行基于 \"C_Cpp.vcFormat.indent.multiLineRelativeTo\" 缩进",
"c_cpp.configuration.vcFormat.indent.preserveWithinParentheses.description": "在现有代码中,保留括号内新行现有的缩进对齐方式",
"c_cpp.configuration.vcFormat.indent.caseLabels.description": "按照在“编辑器: 制表符大小”设置中指定的量,相对于 switch 语句缩进标签",
"c_cpp.configuration.vcFormat.indent.caseContents.description": "按照在“编辑器: 制表符大小”设置中指定的量,相对于标签缩进 case 中的代码",
"c_cpp.configuration.vcFormat.indent.caseContentsWhenBlock.description": "按照在“编辑器: 制表符大小”设置中指定的量,缩进 case 语句后面的大括号",
"c_cpp.configuration.vcFormat.indent.lambdaBracesWhenParameter.description": "按照在“编辑器: 制表符大小”设置中指定的量,相对于语句的开头缩进用作函数参数的 lambda 的大括号",
"c_cpp.configuration.vcFormat.indent.gotoLabels.description": "跳转标签的位置",
"c_cpp.configuration.vcFormat.indent.gotoLabels.oneLeft.description": "按照在“编辑器: 制表符大小”设置中指定的量移到当前代码缩进的左侧",
"c_cpp.configuration.vcFormat.indent.gotoLabels.leftmostColumn.description": "代码的最左侧边缘",
"c_cpp.configuration.vcFormat.indent.gotoLabels.none.description": "跳转标签将不会格式化",
"c_cpp.configuration.vcFormat.indent.gotoLabels.oneLeft.description": "按照在“编辑器: 制表符大小”设置中指定的量,将 goto 标签移到当前代码缩进的左侧",
"c_cpp.configuration.vcFormat.indent.gotoLabels.leftmostColumn.description": "将 goto 标签置于代码的最左侧边缘",
"c_cpp.configuration.vcFormat.indent.gotoLabels.none.description": "不会格式化 goto 标签。",
"c_cpp.configuration.vcFormat.indent.preprocessor.description": "预处理器指令的位置",
"c_cpp.configuration.vcFormat.indent.preprocessor.oneLeft.description": "按照在“编辑器: 制表符大小”设置中指定的量移到当前代码缩进的左侧",
"c_cpp.configuration.vcFormat.indent.preprocessor.leftmostColumn.description": "代码的最左侧边缘",
"c_cpp.configuration.vcFormat.indent.preprocessor.none.description": "预处理器指令将不会格式化",
"c_cpp.configuration.vcFormat.indent.preprocessor.oneLeft.description": "按照在“编辑器: 制表符大小”设置中指定的量,将预处理器指令置于当前代码缩进的左侧",
"c_cpp.configuration.vcFormat.indent.preprocessor.leftmostColumn.description": "预处理器指令位于代码的最左侧边缘",
"c_cpp.configuration.vcFormat.indent.preprocessor.none.description": "不会格式化预处理器指令",
"c_cpp.configuration.vcFormat.indent.accessSpecifiers.description": "按照在“编辑器: 制表符大小”设置中指定的量,相对于类或结构定义缩进访问说明符",
"c_cpp.configuration.vcFormat.indent.namespaceContents.description": "按照在“编辑器: 制表符大小”设置中指定的量,相对于封闭命名空间缩进代码",
"c_cpp.configuration.vcFormat.indent.preserveComment.description": "在格式设置操作过程中未更改注释的缩进",
"c_cpp.configuration.vcFormat.indent.preserveComments.description": "在格式设置操作过程中未更改注释的缩进",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.namespace.description": "用于命名空间的左大括号的位置",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.type.description": "用于类型定义的左大括号的位置",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.lambda.description": "用于 lambda 函数的左大括号的位置",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.function.description": "用于函数的左大括号的位置",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.block.description": "用于控制块的左大括号的位置",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.newLine.description": "将左大括号移动到新行",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.sameLine.description": "左大括号保留在同一行上,并在每个左大括号的前面添加一个空格",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.ignore.description": "左大括号格式化",
"c_cpp.configuration.vcFormat.newLine.scopeBracesOnSeparateLines.description": "在单独的行上放置用于范围的左大括号和右大括号",
"c_cpp.configuration.vcFormat.newLine.closeBraceSameLine.emptyType.description": "对于空类型,将右大括号移动到左大括号所在的同一行",
"c_cpp.configuration.vcFormat.newLine.closeBraceSameLine.emptyFunction.description": "对于空的函数体,将右大括号移动到左大括号所在的同一行",
"c_cpp.configuration.vcFormat.newLine.beforeCatch.description": "将catch和相似的关键字放在新行上",
"c_cpp.configuration.vcFormat.newLine.beforeElse.description": "将else放在新行上",
"c_cpp.configuration.vcFormat.newLine.beforeWhileInDoWhile.description": "将 do-while 循环中的while放在新行上",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.newLine.description": "将左大括号移动到新行",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.sameLine.description": "左大括号保留在同一行上,并在每个左大括号的前面添加一个空格",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.ignore.description": "左大括号没有格式化",
"c_cpp.configuration.vcFormat.newLine.scopeBracesOnSeparateLines.description": "在单独的行上放置用于范围的左大括号和右大括号",
"c_cpp.configuration.vcFormat.newLine.closeBraceSameLine.emptyType.description": "对于空类型,将右大括号移动到左大括号所在的同一行",
"c_cpp.configuration.vcFormat.newLine.closeBraceSameLine.emptyFunction.description": "对于空的函数体,将右大括号移动到左大括号所在的同一行",
"c_cpp.configuration.vcFormat.newLine.beforeCatch.description": "将 \"catch\" 和相似的关键字放在新行上",
"c_cpp.configuration.vcFormat.newLine.beforeElse.description": "将 \"else\" 放在新行上",
"c_cpp.configuration.vcFormat.newLine.beforeWhileInDoWhile.description": "将 do-while 循环中的 \"while\" 放在新行上",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.description": "在函数名称与参数列表的左括号之间插入空格",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.insert.description": "在函数的左括号前面添加一个空格",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.remove.description": "删除函数的左圆括号前的空格",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.ignore.description": "空格保留输入的位置",
"c_cpp.configuration.vcFormat.space.withinParameterListParentheses.description": "在函数参数中的左括号后面和右括号前面添加一个空格",
"c_cpp.configuration.vcFormat.space.betweenEmptyParameterListParentheses.description": "当函数参数列表为空时,在其括号之间插入一个空格",
"c_cpp.configuration.vcFormat.space.afterKeywordsInControlFlowStatements.description": "在关键字与控制流语句中的左括号之间添加一个空格",
"c_cpp.configuration.vcFormat.space.withinControlFlowStatementParentheses.description": "在控制流语句的左括号后面和右括号前面添加一个空格",
"c_cpp.configuration.vcFormat.space.beforeLambdaOpenParenthesis.description": "在 lambda 参数列表的左括号前面添加一个空格",
"c_cpp.configuration.vcFormat.space.withinCastParentheses.description": "在 C 样式的强制转换的左括号后面和右括号前面添加一个空格",
"c_cpp.configuration.vcFormat.space.afterCastCloseParenthesis.description": "在 C 样式的强制转换的右括号后面添加一个空格",
"c_cpp.configuration.vcFormat.space.withinExpressionParentheses.description": "在带圆括号的左括号后面和右括号前面添加一个空格",
"c_cpp.configuration.vcFormat.space.beforeBlockOpenBrace.description": "在范围块的左大括号前面添加一个空格",
"c_cpp.configuration.vcFormat.space.betweenEmptyBraces.description": "当大括号为空且位于同一行时,在它们之间插入一个空格",
"c_cpp.configuration.vcFormat.space.beforeInitializerListOpenBrace.description": "在统一初始化和初始值设定项列表的左大括号前面添加一个空格",
"c_cpp.configuration.vcFormat.space.withinInitializerListBraces.description": "在统一初始化和初始值设定项列表的左大括号后面和右大括号前面添加一个空格",
"c_cpp.configuration.vcFormat.space.preserveInInitializerList.description": "在统一初始化和初始值设定项列表中,逗号两侧的空格会保留",
"c_cpp.configuration.vcFormat.space.beforeOpenSquareBracket.description": "在左方括号的前面添加一个空格",
"c_cpp.configuration.vcFormat.space.withinSquareBrackets.description": "在左方括号后面和右方括号前面添加一个空格",
"c_cpp.configuration.vcFormat.space.beforeEmptySquareBrackets.description": "当方括号为空时,在左方括号前面添加一个空格",
"c_cpp.configuration.vcFormat.space.betweenEmptySquareBrackets.description": "当方括号为空时,在方括号之间插入一个空格",
"c_cpp.configuration.vcFormat.space.groupSquareBrackets.description": "对于多维数组,删除方括号之间的所有空格。控制空格的其他设置将被重写",
"c_cpp.configuration.vcFormat.space.withinLambdaBrackets.description": "在左方括号后面和右方括号前面添加一个空格",
"c_cpp.configuration.vcFormat.space.betweenEmptyLambdaBrackets.description": "当方括号为空时,在方括号之间插入一个空格",
"c_cpp.configuration.vcFormat.space.beforeComma.description": "在每个逗号的前面添加一个空格",
"c_cpp.configuration.vcFormat.space.afterComma.description": "在每个逗号后面添加一个空格",
"c_cpp.configuration.vcFormat.space.removeAroundMemberOperators.description": "成员访问运算符、指向成员的指针运算符和范围解析运算符前后的空格会被删除",
"c_cpp.configuration.vcFormat.space.beforeInheritanceColon.description": "在类定义中继承的类型的冒号前面添加一个空格",
"c_cpp.configuration.vcFormat.space.beforeConstructorColon.description": "在构造函数定义中的冒号前面添加一个空格",
"c_cpp.configuration.vcFormat.space.removeBeforeSemicolon.description": "除每个分号前的空格",
"c_cpp.configuration.vcFormat.space.insertAfterSemicolon.description": "在每个分号后面插入一个空格",
"c_cpp.configuration.vcFormat.space.removeAroundUnaryOperator.description": "除一元运算符和操作数之间的空格",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.insert.description": "在函数的左括号前面添加一个空格",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.remove.description": "删除函数括号前的空格",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.ignore.description": "保留输入的空格。",
"c_cpp.configuration.vcFormat.space.withinParameterListParentheses.description": "在函数参数列表中的左括号后面和右括号前面添加一个空格",
"c_cpp.configuration.vcFormat.space.betweenEmptyParameterListParentheses.description": "当函数参数列表为空时,在其括号之间插入一个空格",
"c_cpp.configuration.vcFormat.space.afterKeywordsInControlFlowStatements.description": "在关键字与控制流语句中的左括号之间添加一个空格",
"c_cpp.configuration.vcFormat.space.withinControlFlowStatementParentheses.description": "在控制流语句的左括号后面和右括号前面添加一个空格",
"c_cpp.configuration.vcFormat.space.beforeLambdaOpenParenthesis.description": "在 lambda 参数列表的左括号前面添加一个空格",
"c_cpp.configuration.vcFormat.space.withinCastParentheses.description": "在 C 样式的强制转换的左括号后面和右括号前面添加一个空格",
"c_cpp.configuration.vcFormat.space.afterCastCloseParenthesis.description": "在 C 样式的强制转换的右括号后面添加一个空格",
"c_cpp.configuration.vcFormat.space.withinExpressionParentheses.description": "在带圆括号的表达式的左括号后面和右括号前面添加一个空格",
"c_cpp.configuration.vcFormat.space.beforeBlockOpenBrace.description": "在范围块的左大括号前面添加一个空格",
"c_cpp.configuration.vcFormat.space.betweenEmptyBraces.description": "当大括号为空且位于同一行时,在它们之间插入一个空格",
"c_cpp.configuration.vcFormat.space.beforeInitializerListOpenBrace.description": "在统一初始化和初始值设定项列表的左大括号前面添加一个空格",
"c_cpp.configuration.vcFormat.space.withinInitializerListBraces.description": "在统一初始化和初始值设定项列表的左大括号后面和右大括号前面添加一个空格",
"c_cpp.configuration.vcFormat.space.preserveInInitializerList.description": "在统一初始化和初始值设定项列表中,逗号两侧的空格会保留",
"c_cpp.configuration.vcFormat.space.beforeOpenSquareBracket.description": "在左方括号之前添加一个空格",
"c_cpp.configuration.vcFormat.space.withinSquareBrackets.description": "在左方括号后面和右方括号前面添加一个空格",
"c_cpp.configuration.vcFormat.space.beforeEmptySquareBrackets.description": "当方括号为空时,在左方括号前面添加一个空格",
"c_cpp.configuration.vcFormat.space.betweenEmptySquareBrackets.description": "当方括号为空时,在方括号之间插入一个空格",
"c_cpp.configuration.vcFormat.space.groupSquareBrackets.description": "对于多维数组,删除方括号之间的所有空格。控制空格的其他设置将被重写",
"c_cpp.configuration.vcFormat.space.withinLambdaBrackets.description": "在左方括号后面和右方括号前面添加一个空格",
"c_cpp.configuration.vcFormat.space.betweenEmptyLambdaBrackets.description": "当方括号为空时,在方括号之间插入一个空格",
"c_cpp.configuration.vcFormat.space.beforeComma.description": "在每个逗号添加一个空格",
"c_cpp.configuration.vcFormat.space.afterComma.description": "在每个逗号后面添加一个空格",
"c_cpp.configuration.vcFormat.space.removeAroundMemberOperators.description": "成员访问运算符、指向成员的指针运算符和范围解析运算符前后的空格会被删除",
"c_cpp.configuration.vcFormat.space.beforeInheritanceColon.description": "在类定义中继承的类型的冒号前面添加一个空格",
"c_cpp.configuration.vcFormat.space.beforeConstructorColon.description": "在构造函数定义中的冒号前面添加一个空格",
"c_cpp.configuration.vcFormat.space.removeBeforeSemicolon.description": "将移除每个分号前的空格",
"c_cpp.configuration.vcFormat.space.insertAfterSemicolon.description": "在每个分号后面插入一个空格",
"c_cpp.configuration.vcFormat.space.removeAroundUnaryOperator.description": "除一元运算符和操作数之间的空格",
"c_cpp.configuration.vcFormat.space.aroundBinaryOperator.description": "二元运算符两侧的空格",
"c_cpp.configuration.vcFormat.space.aroundAssignmentOperator.description": "赋值运算符两侧的空格",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.description": "指针和引用运算符两侧的空格",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.left.description": "指针和引用运算符左对齐",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.center.description": "指针和引用运算符居中对齐",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.right.description": "指针和引用运算符右对齐",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.ignore.description": "指针和引用运算符没有格式化",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.left.description": "指针和引用运算符左对齐",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.center.description": "指针和引用运算符居中对齐",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.right.description": "指针和引用运算符右对齐",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.ignore.description": "指针和引用运算符没有格式化",
"c_cpp.configuration.vcFormat.space.aroundTernaryOperator.description": "条件运算符两侧的空格",
"c_cpp.configuration.vcFormat.space.aroundOperators.insert.description": "在运算符前后添加一个空格",
"c_cpp.configuration.vcFormat.space.aroundOperators.remove.description": "除运算符前后的空格",
"c_cpp.configuration.vcFormat.space.aroundOperators.ignore.description": "空格保留输入的位置",
"c_cpp.configuration.vcFormat.space.aroundOperators.insert.description": "在运算符前后添加一个空格",
"c_cpp.configuration.vcFormat.space.aroundOperators.remove.description": "除运算符前后的空格",
"c_cpp.configuration.vcFormat.space.aroundOperators.ignore.description": "保留输入的空格。",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.description": "块的换行选项",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.oneLiners.description": "无论任何“VC 格式: 新行”设置的值如何,在一行输入的完整代码块都保留在一行上",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.allOneLineScopes.description": "无论任何“VC 格式: 新行”设置的值如何,在一行输入左大括号和右大括号的任何代码都保留在一行上",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.allOneLineScopes.description": "无论任何“VC 格式: 新行”设置的值如何,在一行输入左大括号和右大括号的任何代码都保留在一行上",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.never.description": "始终根据“VC 格式: 新行”设置来设定代码块的格式",
"c_cpp.configuration.clang_format_path.description": "clang-format 可执行文件的完整路径。如果未指定,并且 Clang 格式在环境路径中可用,则使用 Clang 格式。如果在环境路径中找不到 Clang 格式,则将使用与该扩展绑定的 clang-format 的副本。",
"c_cpp.configuration.clang_format_style.description": "编码样式,当前支持: Visual Studio、LLVM、Google、Chromium、Mozilla、WebKit。使用 \"file\" 从当前目录或父目录中的 .clang 格式文件中加载样式。使用 {键: 值, ...} 设置特定参数。例如,\"Visual Studio\" 样式类似于: { BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4, NamespaceIndentation: All }",
@@ -127,7 +127,7 @@
"c_cpp.configuration.loggingLevel.description": "输出面板中日志记录的详细程度。从最低详细程度到最高详细程度的顺序为: None < Error < Warning < Information < Debug.",
"c_cpp.configuration.autoAddFileAssociations.description": "控制当文件是来自 C/C++ 文件的导航操作的目标时,是否将文件自动添加到 files.associations。",
"c_cpp.configuration.workspaceParsingPriority.description": "控制在分析非活动工作区文件时是否使用休眠以避免 CPU 使用率达到 100%。最高/高/中等/低的值约对应于 100/75/50/25% 的 CPU 使用率。",
"c_cpp.configuration.workspaceSymbols.description": "调用“转到工作区中的符号”时要包含在查询结果中的符号",
"c_cpp.configuration.workspaceSymbols.description": "调用“转到工作区中的符号”时要包含在查询结果中的符号",
"c_cpp.configuration.exclusionPolicy.description": "在遍历 \"browse.path\" 数组中的路径并确定应将哪些文件添加到代码导航数据库中时,指示扩展何时使用 \"files.exclude\" 设置。\"checkFolders\" 表示仅为每个文件夹评估一次排除筛选器(不检查单个文件)。\"checkFilesAndFolders\" 表示将对遇到的每个文件和文件夹评估排除筛选器。如果 \"files.exclude\" 设置仅包含文件夹,则 \"checkFolders\" 是最佳选择,可提高扩展对代码导航数据库执行初始化的速度。",
"c_cpp.configuration.preferredPathSeparator.description": "要作为 #include 自动完成结果的路径分隔符使用的字符。",
"c_cpp.configuration.simplifyStructuredComments.description": "如果为 true,则悬停和自动完成的工具提示将仅显示结构化注释的特定标签。否则,显示所有注释。",
@@ -138,6 +138,8 @@
"c_cpp.configuration.configurationWarnings.description": "确定在配置提供程序扩展无法提供源文件配置时是否显示弹出通知。",
"c_cpp.configuration.intelliSenseCachePath.description": "为 IntelliSense 使用的缓存预编译标头定义文件夹路径。Windows 上的默认缓存路径为 \"%LocalAppData%/Microsoft/vscode-cpptools\"Linux 上为 \"$XDG_CACHE_HOME/vscode-cpptools/\" (若未定义 XDG_CACHE_HOME,则为 \"$HOME/.cache/vscode-cpptools/\")Mac 上为 \"$HOME/Library/Caches/vscode-cpptools/\"。如果未指定路径或指定的路径无效,则使用默认路径。",
"c_cpp.configuration.intelliSenseCacheSize.description": "缓存的预编译标头的每个工作区硬盘驱动器空间的最大大小(MB);实际使用量可能在此值上下波动。默认大小为 5120 MB。当大小为 0 时,预编译的标头缓存将被禁用。",
"c_cpp.configuration.intelliSenseMemoryLimit.description": "IntelliSense 进程的内存使用限制(MB)。默认限制为 4096 MB,最大限制为 16 GB。当 IntelliSense 进程超出限制时,扩展将关闭并重新启动改进程。",
"c_cpp.configuration.intelliSenseUpdateDelay.description": "控制修改之后到 IntelliSense 开始更新之间的延迟(以毫秒为单位)。",
"c_cpp.configuration.default.includePath.description": "在 cpp_properties.json 中未指定 \"includePath\" 时要在配置中使用的值。如果指定了 \"includePath\",则向数组添加 \"${default}\" 以从此设置插入值。",
"c_cpp.configuration.default.defines.description": "未指定 \"defines\" 时要在配置中使用的值,或 \"defines\" 中存在 \"${default}\" 时要插入的值。",
"c_cpp.configuration.default.macFrameworkPath.description": "未指定 \"macFrameworkPath\" 时要在配置中使用的值,或 \"macFrameworkPath\" 中存在 \"${default}\" 时要插入的值。",
@@ -163,7 +165,7 @@
"c_cpp.configuration.codeFolding.description": "如果启用,则由语言服务器提供代码折叠范围。",
"c_cpp.configuration.vcpkg.enabled.markdownDescription": "为 [vcpkg 依赖关系管理器] 启用集成服务(https://aka.ms/vcpkg/)。",
"c_cpp.configuration.renameRequiresIdentifier.description": "如果为 true,则“重命名符号”将需要有效的 C/C++ 标识符。",
"c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "如果为 true,调试程序 shell 命令替换将使用过时的反引号(`)",
"c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "如果为 true,调试程序 shell 命令替换将使用过时的反引号(`)",
"c_cpp.contributes.views.cppReferencesView.title": "C/C++: 其他引用结果",
"c_cpp.debuggers.pipeTransport.description": "如果存在,这会指示调试程序使用其他可执行文件作为管道来连接到远程计算机,此管道将在 VS Code 和已启用 MI 的调试程序后端可执行文件(如 gdb)之间中继标准输入/输入。",
"c_cpp.debuggers.pipeTransport.default.pipeProgram": "输入管道程序名称的完全限定路径,例如 \"/usr/bin/ssh\"",
@@ -206,7 +208,7 @@
"c_cpp.debuggers.miDebuggerArgs.description": "MI 调试程序(如 gdb)的其他参数。",
"c_cpp.debuggers.miDebuggerServerAddress.description": "要连接到的 MI 调试程序服务器的网络地址(示例: localhost:1234)。",
"c_cpp.debuggers.stopAtEntry.description": "可选参数。如果为 true,则调试程序应在目标的入口点处停止。如果传递了 processId,则不起任何作用。",
"c_cpp.debuggers.debugServerPath.description": "要启动的调试服务器的可选完整路径。默认为 null。",
"c_cpp.debuggers.debugServerPath.description": "用于调试要启动的服务器的可选完整路径。默认设置为 null。通过运行“-target-select remote <server:port>”的 \"customSetupCommand\" 将它与 \"miDebugServerAddress\" 或你自己的服务器结合使用。",
"c_cpp.debuggers.debugServerArgs.description": "可选调试服务器参数。默认为 null。",
"c_cpp.debuggers.serverStarted.description": "要在调试服务器输出中查找的可选服务器启动模式。默认为 null。",
"c_cpp.debuggers.filterStdout.description": "在 stdout 流中搜索服务器启动模式,并将 stdout 记录到默认输出。默认为 true。",
@@ -224,5 +226,14 @@
"c_cpp.debuggers.symbolLoadInfo.description": "对符号加载的显式控制。",
"c_cpp.debuggers.symbolLoadInfo.loadAll.description": "如果为 true,则将加载所有 lib 的符号;否则不加载任何 solib 符号。默认值为 true。",
"c_cpp.debuggers.symbolLoadInfo.exceptionList.description": "以分号 \";\" 分隔的文件名列表(允许使用通配符)。修改 LoadAll 的行为。如果 LoadAll 为 true,则不加载与列表中任何名称匹配的 lib 的符号。否则,仅为匹配的 lib 加载符号。示例: \"foo.so;bar.so\"",
"c_cpp.debuggers.requireExactSource.description": "可选标志,用于要求当前源代码与 pdb 匹配。"
"c_cpp.debuggers.requireExactSource.description": "可选标志,用于要求当前源代码与 pdb 匹配。",
"c_cpp.taskDefinitions.name.description": "任务的名称",
"c_cpp.taskDefinitions.command.description": "执行编译的编译器或脚本的路径",
"c_cpp.taskDefinitions.args.description": "要传递给编译器或编译脚本的其他参数",
"c_cpp.taskDefinitions.options.description": "其他命令选项",
"c_cpp.taskDefinitions.options.cwd.description": "已执行程序或脚本的当前工作目录。如果省略,则使用代码的当前工作区根。",
"c_cpp.taskDefinitions.detail.description": "任务类型的其他详细信息",
"c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.description": "相同源树的当前路径和编译时路径。EditorPath 下的文件会映射到 CompileTimePath 路径以进行断点匹配,并在显示 stacktrace 位置时,从 CompileTimePath 映射到 EditorPath。",
"c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.editorPath.description": "编辑器将使用的源树的路径。",
"c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "如果此条目仅用于堆栈帧位置映射,则为 False。如果在指定断点位置时也需要使用此条目,则为 True。"
}
@@ -17,6 +17,7 @@
"envfale.failed": "未能使用 {0}。原因: {1}",
"replacing.sourcepath": "正在将 {0}“{1}”替换为“{2}”。",
"replacing.targetpath": "正在将 {0}“{1}”替换为“{2}”。",
"replacing.editorPath": "正在将 {0}“{1}”替换为“{2}”。",
"resolving.variables.in.sourcefilemap": "正在解析 {0} 中的变量...",
"open.envfile": "打开 {0}",
"unexpected.os": "意外的 OS 类型",
@@ -7,6 +7,6 @@
"build.and.debug.active.file": "生成和调试活动文件",
"cannot.build.non.cpp": "无法生成和调试,因为活动文件不是 C 或 C++ 源文件。",
"no.compiler.found": "未找到编译程序",
"select.compiler": "选择编译程序",
"select.configuration": "选择配置",
"cl.exe.not.available": "仅当从 VS 开发人员命令提示符处运行 VS Code 时,{0} 生成和调试才可用。"
}
@@ -0,0 +1,9 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
// Do not edit this file. It is machine generated.
{
"invalid.identifier.for.rename": "为“重命名符号”操作提供的标识符无效。",
"unable.to.locate.selected.symbol": "找不到所选符号的定义。"
}
@@ -5,8 +5,7 @@
// Do not edit this file. It is machine generated.
{
"c.cpp.debug.protocol": "C/C++ 调试协议",
"invalid.identifier.for.rename": "为“重命名符号”操作提供的标识符无效。",
"unable.to.locate.selected.symbol": "找不到所选符号的定义。",
"c.cpp.warnings": "C/C++ 配置警告",
"unable.to.start": "无法启动 C/C++ 语言服务器。IntelliSense 功能将被禁用。错误: {0}",
"check.permissions": "EPERM: 检查“{0}”的权限",
"server.crashed2": "在过去 3 分钟内,语言服务器崩溃了 5 次。它不会重新启动。",
+1 -1
View File
@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
// Do not edit this file. It is machine generated.
{
"failed.to.parse.tasks": "未能分析 tasks.json,可能是因注释或尾部逗号所致。",
"failed.to.parse.json": "未能分析 json 文件,可能是因注释或尾部逗号所致。",
"extension.not.ready": "C/C++ 扩展仍在安装。请查看输出窗口获取详细信息。",
"refer.read.me": "请参阅 {0} 了解疑难解答信息。可在 {1} 处创建问题",
"process.exited.with.code": "{0} 已退出,收到错误代码 {1}",
+31 -4
View File
@@ -92,8 +92,6 @@
"not_exited_yet": "尚未退出。将休眠 {0} 毫秒,然后重试。",
"failed_to_spawn_process": "未能生成进程。错误: {0}({1})",
"offering_completion": "提供完成",
"compiler_from_compiler_path": "正在尝试从 \"compilerPath\" 属性中的编译器获取默认值:“{0}”",
"compiler_from_compile_commands": "正在尝试从 compile_commands.json file 文件中的编译器获取默认值:“{0}”",
"compiler_on_machine": "正在尝试从计算机上找到的编译器获取默认值:“{0}”",
"unable_to_resolve_include_path": "无法解析包含路径: {0}",
"error_searching_for_intellisense_client": "搜索 IntelliSense 客户端时出错: {0}",
@@ -147,7 +145,7 @@
"timed_out_attempting_to_communicate_with_process": "尝试与进程通信时超时!",
"process_failed_to_run": "进程未能运行",
"wsl_not_detected": "未检测到 WSL",
"compiler_in_compilerpath_not_found": "找不到 \"compilerPath\" 属性中的编译器: {0}",
"compiler_in_compilerpath_not_found": "未找到指定的编译器: {0}",
"config_data_invalid": "配置数据无效,{0}",
"cmake_executable_not_found": "在 {0} 找不到 CMake 可执行文件",
"no_args_provider": "无参数提供程序",
@@ -177,5 +175,34 @@
"deprecated_label": "已弃用:",
"exceptions_label": "异常:",
"template_parameters_label": "模板参数:",
"compiler_probe_command_line": "编译器探测命令行: {0}"
"compiler_probe_command_line": "编译器探测命令行: {0}",
"c_compiler_from_compiler_path": "正在尝试从 \"compilerPath\" 属性中的 C 编译器获取默认值:“{0}”",
"cpp_compiler_from_compiler_path": "正在尝试从 \"compilerPath\" 属性中的 C++ 编译器获取默认值:“{0}”",
"c_compiler_from_compile_commands": "正在尝试从 compile_commands.json 文件中的 C 编译器获取默认值:“{0}”",
"cpp_compiler_from_compile_commands": "正在尝试从 compile_commands.json 文件中的 C++ 编译器获取默认值:“{0}”",
"c_intellisense_mode_changed": "对于 C 源文件,IntelliSenseMode 已从“{0}”更改为“{1}”。",
"cpp_intellisense_mode_changed": "对于 C++ 源文件,IntelliSenseMode 已从“{0}”更改为“{1}”。",
"c_std_version_changed": "对于 C 源文件,cStandard 已从“{0}”更改为“{1}”。",
"cpp_std_version_changed": "对于 C++ 源文件,cppStandard 已从“{0}”更改为“{1}”。",
"c_intellisense_mode_and_std_version_changed": "对于 C 源文件,IntelliSenseMode 已从“{0}”更改为“{1}”,cStandard 已从“{2}”更改为“{3}”。",
"cpp_intellisense_mode_and_std_version_changed": "对于 C++ 源文件,IntelliSenseMode 已从“{0}”更改为“{1}”,cppStandard 已从“{2}”更改为“{3}”。",
"c_intellisense_mode_changed_with_path": "对于 C 源文件,IntelliSenseMode 已根据编译器参数和探测 compilerPath 从“{0}”更改为“{1}”:“{2}”",
"cpp_intellisense_mode_changed_with_path": "对于 C++ 源文件,IntelliSenseMode 已根据编译器参数和探测 compilerPath 从“{0}”更改为“{1}”:“{2}”",
"c_std_version_changed_with_path": "对于 C 源文件,cStandard 已根据编译器参数和探测 compilerPath 从“{0}”更改为“{1}”:“{2}”",
"cpp_std_version_changed_with_path": "对于 C++ 源文件,cppStandard 已根据编译器参数和探测 compilerPath 从“{0}”更改为“{1}”:“{2}”",
"c_intellisense_mode_and_std_version_changed_with_path": "对于 C 源文件,IntelliSenseMode 已从“{0}”更改为“{1}”,cStandard 已根据编译器参数和探测 compilerPath 从“{2}”更改为“{3}”:“{4}”",
"cpp_intellisense_mode_and_std_version_changed_with_path": "对于 C++ 源文件,IntelliSenseMode 已从“{0}”更改为“{1}”,cppStandard 已根据编译器参数和探测 compilerPath 从“{2}”更改为“{3}”:“{4}”",
"compiler_path_changed": "无法使用 compilerPath“{0}”解析配置。 请改用“{1}”。",
"compiler_path_invalid": "无法使用 compilerPath 解析配置:“{0}”",
"compiler_path_empty": "由于 compilerPath 明确为空,因此正在跳过对编译器的探测",
"msvc_intellisense_specified": "已指定 MSVC intelliSenseMode。正在针对编译器 cl.exe 进行配置。",
"unable_to_configure_cl_exe": "无法针对编译器 cl.exe 进行配置。",
"probing_compiler_default_target": "正在使用命令行探测编译器的目标:“{0}”{1}",
"compiler_default_target": "编译器返回的默认目标值: {0}",
"c_probing_compiler_default_standard": "正在使用命令行探测默认 C 语言标准的编译器: {0}",
"cpp_probing_compiler_default_standard": "正在使用命令行探测默认 C++ 语言标准的编译器: {0}",
"detected_language_standard_version": "检测到的语言标准版本: {0}",
"unhandled_default_target_detected": "检测到未处理的默认编译器目标值: {0}",
"unhandled_target_arg_detected": "检测到未处理的目标参数值: {0}",
"memory_limit_shutting_down_intellisense": "正在关闭 IntelliSense 服务器: {0}。内存使用量为 {1} MB,已超过 {2} MB 的限制。"
}
@@ -32,7 +32,7 @@
"intellisense.mode": "IntelliSense 模式",
"intellisense.mode.description": "要使用的 IntelliSense 模式,该模式映射到 MSVC、gcc 或 Clang 的体系结构专属变体。如果未设置或设置为 {0},则扩展将选择该平台的默认值。Windows 默认为 {1}Linux 默认为 {2}macOS 默认为 {3}。选择特定 IntelliSense 模式以替代 {4} 模式。",
"include.path": "包含路径",
"include.path.description": "include 路径是包括源文件中随附的头文件(如 {0})的文件夹。指定 IntelliSense 引擎在搜索包含的头文件时要使用的列表路径。对这些路径的搜索不是递归搜索。指定 {1} 可指示递归搜索。例如,{2} 将搜索所有子目录,而 {3} 则不会。如果在安装了 Visual Studio 的 Windows 上,或者在 {4} 设置中指定了编译器,则无需在此列表中列出系统 include 路径。",
"include.path.description": "include 路径是包括源文件中随附的头文件(如 {0})的文件夹。指定 IntelliSense 引擎在搜索包含的头文件时要使用的列表路径。对这些路径进行的搜索不是递归搜索。指定 {1} 可指示递归搜索。例如,{2} 将搜索所有子目录,而 {3} 则不会。如果在安装了 Visual Studio 的 Windows 上,或者在 {4} 设置中指定了编译器,则无需在此列表中列出系统 include 路径。",
"one.include.path.per.line": "每行一个包含路径。",
"defines": "定义",
"defines.description": "分析文件时 IntelliSense 引擎要使用的预处理器定义的列表。(可选)使用 {0} 设置值,例如 {1}。",
+88 -77
View File
@@ -23,95 +23,95 @@
"c_cpp.command.vcpkgClipboardInstallSuggested.title": "將 vcpkg 安裝命令複製到剪貼簿",
"c_cpp.command.vcpkgOnlineHelpSuggested.title": "瀏覽 vcpkg 說明頁面",
"c_cpp.configuration.formatting.description": "選擇格式設定引擎",
"c_cpp.configuration.formatting.clangFormat.description": "將使用 clang-format 來格式化程式碼",
"c_cpp.configuration.formatting.vcFormat.description": "將使用 Visual C++ 格式化引擎來格式化程式碼",
"c_cpp.configuration.formatting.Default.description": "將使用 clang-format 來格式化程式碼",
"c_cpp.configuration.formatting.Disabled.description": "將停用程式碼格式化",
"c_cpp.configuration.vcFormat.indent.braces.description": "大括弧會依據 [Editor: Tab Size] 設定中指定的數量縮排",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.description": "縮排新行的相對位置:",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.outermostParenthesis.description": "最外層的左括弧",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.innermostParenthesis.description": "最內層的左括弧",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.statementBegin.description": "目前陳述式的開頭",
"c_cpp.configuration.vcFormat.indent.withinParentheses.description": "鍵入新行時,新行會對齊左括號之下,或依據 'C_Cpp.vcFormat.indent.multiLineRelativeTo' 對齊",
"c_cpp.configuration.vcFormat.indent.withinParentheses.alignToParenthesis.description": "將新行對齊在左括弧下",
"c_cpp.configuration.vcFormat.indent.withinParentheses.indent.description": "新行會依據 'C_Cpp.vcFormat.indent.multiLineRelativeTo' 縮排",
"c_cpp.configuration.vcFormat.indent.preserveWithinParentheses.description": "在現有程式碼中,將現有的新行縮排對齊保留在括弧內",
"c_cpp.configuration.vcFormat.indent.caseLabels.description": "標籤會依據 [Editor: Tab Size] 設定中指定的數量,按照 switch 陳述式的相對位置縮排",
"c_cpp.configuration.vcFormat.indent.caseContents.description": "case 中的程式碼會依據 [Editor: Tab Size] 設定中指定的數量,按照其標籤的相對位置縮排",
"c_cpp.configuration.formatting.clangFormat.description": "將使用 clang-format 來格式化程式碼",
"c_cpp.configuration.formatting.vcFormat.description": "將使用 Visual C++ 格式化引擎來格式化程式碼",
"c_cpp.configuration.formatting.Default.description": "將使用 clang-format 來格式化程式碼",
"c_cpp.configuration.formatting.Disabled.description": "將停用程式碼格式化",
"c_cpp.configuration.vcFormat.indent.braces.description": "大括弧會依據 [Editor: Tab Size] 設定中指定的數量縮排",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.description": "決定換行縮排相對於",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.outermostParenthesis.description": "相對於最外層的左括弧,縮排新行。",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.innermostParenthesis.description": "相對於最內層的左括弧,縮排新行。",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.statementBegin.description": "相對於目前陳述式的開頭,縮排新行。",
"c_cpp.configuration.vcFormat.indent.withinParentheses.description": "鍵入新行時,新行會對齊左括弧或依 `C_Cpp.vcFormat.indent.multiLineRelativeTo` 對齊",
"c_cpp.configuration.vcFormat.indent.withinParentheses.alignToParenthesis.description": "將新行對齊在左括弧下",
"c_cpp.configuration.vcFormat.indent.withinParentheses.indent.description": "新行會依據 `C_Cpp.vcFormat.indent.multiLineRelativeTo` 縮排",
"c_cpp.configuration.vcFormat.indent.preserveWithinParentheses.description": "在現有程式碼中,將新行的現有縮排對齊保留在括弧內",
"c_cpp.configuration.vcFormat.indent.caseLabels.description": "標籤會依據 [Editor: Tab Size] 設定中指定的數量,按照 switch 陳述式的相對位置縮排",
"c_cpp.configuration.vcFormat.indent.caseContents.description": "案例區塊中的程式碼會依據 [Editor: Tab Size] 設定中指定的數量,按照其標籤的相對位置縮排",
"c_cpp.configuration.vcFormat.indent.caseContentsWhenBlock.description": "依據 [Editor: Tab Size] 設定中指定的數量,縮排 case 陳述式之後的大括弧",
"c_cpp.configuration.vcFormat.indent.lambdaBracesWhenParameter.description": "依據 [Editor: Tab Size] 設定中指定的數量,按照陳述式開頭的相對位置,縮排用為函式參數的 Lambda 大括弧",
"c_cpp.configuration.vcFormat.indent.gotoLabels.description": "goto 標籤的位置",
"c_cpp.configuration.vcFormat.indent.gotoLabels.oneLeft.description": "依編輯器中指定的數量,將目前程式碼向左縮排: [定位點大小] 設定",
"c_cpp.configuration.vcFormat.indent.gotoLabels.leftmostColumn.description": "位於程式碼的最左側",
"c_cpp.configuration.vcFormat.indent.gotoLabels.none.description": "將不會格式化 goto 標籤",
"c_cpp.configuration.vcFormat.indent.gotoLabels.oneLeft.description": "依據 [Editor: Tab Size] 設定中指定的數量,將 goto 標籤定位在目前程式碼縮排的左側",
"c_cpp.configuration.vcFormat.indent.gotoLabels.leftmostColumn.description": "將 goto 標籤固定在程式碼的最左側",
"c_cpp.configuration.vcFormat.indent.gotoLabels.none.description": "將不會格式化 goto 標籤",
"c_cpp.configuration.vcFormat.indent.preprocessor.description": "前置處理器指示詞的位置",
"c_cpp.configuration.vcFormat.indent.preprocessor.oneLeft.description": "依編輯器中指定的數量,將目前程式碼向左縮排: [定位點大小] 設定",
"c_cpp.configuration.vcFormat.indent.preprocessor.leftmostColumn.description": "位於程式碼的最左側",
"c_cpp.configuration.vcFormat.indent.preprocessor.none.description": "將不會格式化前置處理器指示詞",
"c_cpp.configuration.vcFormat.indent.preprocessor.oneLeft.description": "依編輯器中指定的數量,將前置處理器指示詞縮排到目前程式碼的左側: [定位點大小] 設定",
"c_cpp.configuration.vcFormat.indent.preprocessor.leftmostColumn.description": "前置處理器指示詞位於程式碼的最左側",
"c_cpp.configuration.vcFormat.indent.preprocessor.none.description": "將不會格式化前置處理器指示詞",
"c_cpp.configuration.vcFormat.indent.accessSpecifiers.description": "存取指定名稱會依據 [Editor: Tab Size] 設定中指定的數量,按照類別或結構定義的相對位置縮排",
"c_cpp.configuration.vcFormat.indent.namespaceContents.description": "程式碼會依據 [Editor: Tab Size] 設定中指定的數量,按照其封入之命名空間的相對位置縮排",
"c_cpp.configuration.vcFormat.indent.preserveComment.description": "格式化作業期間未變更註解的縮排",
"c_cpp.configuration.vcFormat.indent.preserveComments.description": "格式化作業期間註解的縮排未變更。",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.namespace.description": "命名空間之左大括弧的位置",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.type.description": "型別定義之左大括弧的位置",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.lambda.description": "Lambda 函式之左大括弧的位置",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.function.description": "函式之左大括弧的位置",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.block.description": "控制區塊之左大括弧的位置",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.newLine.description": "將左大括移至新行",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.sameLine.description": "將左大括保持在同一行,並在每個左大括前加入一個空格",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.ignore.description": "左大括未格式化",
"c_cpp.configuration.vcFormat.newLine.scopeBracesOnSeparateLines.description": "將範圍的左大括與右大括弧個別置於一行",
"c_cpp.configuration.vcFormat.newLine.closeBraceSameLine.emptyType.description": "針對空的類型,將右大括號移至與左大括號同一行",
"c_cpp.configuration.vcFormat.newLine.closeBraceSameLine.emptyFunction.description": "針對空的函式主體,將右大括號移至與左大括號同一行",
"c_cpp.configuration.vcFormat.newLine.beforeCatch.description": "將 'catch' 類似的關鍵字放在新行",
"c_cpp.configuration.vcFormat.newLine.beforeElse.description": "將 'else' 放在新行",
"c_cpp.configuration.vcFormat.newLine.beforeWhileInDoWhile.description": "將 do-while 迴圈中的 'while' 放在新行",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.newLine.description": "將左大括移至新行",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.sameLine.description": "將左大括保持在同一行,並在每個左大括前加入一個空格",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.ignore.description": "左大括未格式化",
"c_cpp.configuration.vcFormat.newLine.scopeBracesOnSeparateLines.description": "將範圍的左大括與右大括號置於不同行。",
"c_cpp.configuration.vcFormat.newLine.closeBraceSameLine.emptyType.description": "若是空的類型,將右大括號移至與左大括號同一行",
"c_cpp.configuration.vcFormat.newLine.closeBraceSameLine.emptyFunction.description": "若是空的函式主體,將右大括號移至與左大括號同一行",
"c_cpp.configuration.vcFormat.newLine.beforeCatch.description": "將 'catch' 類似的關鍵字置於新行",
"c_cpp.configuration.vcFormat.newLine.beforeElse.description": "將 'else' 置於新行",
"c_cpp.configuration.vcFormat.newLine.beforeWhileInDoWhile.description": "將 do-while 迴圈中的 'while' 置於新行",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.description": "在引數清單中的函式名稱與左括弧之間新增空格",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.insert.description": "在函式的左括號前加上空格",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.remove.description": "已移除函式左括前的空格",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.ignore.description": "輸入時保留空格",
"c_cpp.configuration.vcFormat.space.withinParameterListParentheses.description": "在函式參數清單的左括弧後與右括弧前新增空格",
"c_cpp.configuration.vcFormat.space.betweenEmptyParameterListParentheses.description": "若函式參數清單是空的,在其括弧之間插入空格",
"c_cpp.configuration.vcFormat.space.afterKeywordsInControlFlowStatements.description": "在控制流程陳述式的關鍵字與左括弧之間新增空格",
"c_cpp.configuration.vcFormat.space.withinControlFlowStatementParentheses.description": "在控制流程陳述式的左括弧後與右括弧前新增空格",
"c_cpp.configuration.vcFormat.space.beforeLambdaOpenParenthesis.description": "在 Lambda 引數清單的左括弧之前新增空格",
"c_cpp.configuration.vcFormat.space.withinCastParentheses.description": "在 C 樣式轉換的左括弧後與右括弧前新增空格",
"c_cpp.configuration.vcFormat.space.afterCastCloseParenthesis.description": "在 C 樣式轉換的右括弧之後新增空格",
"c_cpp.configuration.vcFormat.space.withinExpressionParentheses.description": "在括有括弧之運算式的左括弧後與右括弧前新增空格",
"c_cpp.configuration.vcFormat.space.beforeBlockOpenBrace.description": "在範圍區塊的左大括弧之前新增空格",
"c_cpp.configuration.vcFormat.space.betweenEmptyBraces.description": "若同一行的大括是空的,在其間插入空格",
"c_cpp.configuration.vcFormat.space.beforeInitializerListOpenBrace.description": "在統一初始設定與初始設定清單左大括弧前新增空格",
"c_cpp.configuration.vcFormat.space.withinInitializerListBraces.description": "在統一初始設定與初始設定清單左大括弧後與右大括弧前新增空格",
"c_cpp.configuration.vcFormat.space.preserveInInitializerList.description": "統一初始設定與初始設定清單內會保留逗號前後空格",
"c_cpp.configuration.vcFormat.space.beforeOpenSquareBracket.description": "在左方括號之前新增空格",
"c_cpp.configuration.vcFormat.space.withinSquareBrackets.description": "在左方括號後右方括號前新增空格",
"c_cpp.configuration.vcFormat.space.beforeEmptySquareBrackets.description": "方括號是空的,在左方括號之前新增空格",
"c_cpp.configuration.vcFormat.space.betweenEmptySquareBrackets.description": "方括號是空的,在其間插入空格",
"c_cpp.configuration.vcFormat.space.groupSquareBrackets.description": "移除多維陣列中之方括號間的所有空格。其他用以控制空格的設定將予忽略",
"c_cpp.configuration.vcFormat.space.withinLambdaBrackets.description": "在左方括號後右方括號前新增空格",
"c_cpp.configuration.vcFormat.space.betweenEmptyLambdaBrackets.description": "方括號是空的,在其間插入空格",
"c_cpp.configuration.vcFormat.space.beforeComma.description": "在每個逗號之前新增空格",
"c_cpp.configuration.vcFormat.space.afterComma.description": "在每個逗號之後新增空格",
"c_cpp.configuration.vcFormat.space.removeAroundMemberOperators.description": "移除成員存取運算子、成員指標運算子與範圍解析運算子前後的空格",
"c_cpp.configuration.vcFormat.space.beforeInheritanceColon.description": "在類別定義中繼承而來類型的冒號前新增空格",
"c_cpp.configuration.vcFormat.space.beforeConstructorColon.description": "在建構函式定義的冒號之前新增空格",
"c_cpp.configuration.vcFormat.space.removeBeforeSemicolon.description": "移除每個分號前的空格",
"c_cpp.configuration.vcFormat.space.insertAfterSemicolon.description": "在每個分號之後插入空格",
"c_cpp.configuration.vcFormat.space.removeAroundUnaryOperator.description": "移除一元運算子與運算元之間的空格",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.insert.description": "在函式的左括弧前,加入一個空格",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.remove.description": "已移除函式左括號之前的空格",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.ignore.description": "將空格保持輸入的狀態。",
"c_cpp.configuration.vcFormat.space.withinParameterListParentheses.description": "在函式參數清單的左括弧後與右括弧前,加入一個空格",
"c_cpp.configuration.vcFormat.space.betweenEmptyParameterListParentheses.description": "若函式參數清單是空的,在其括弧之間插入空格",
"c_cpp.configuration.vcFormat.space.afterKeywordsInControlFlowStatements.description": "在控制流程陳述式的關鍵字與左括弧之間,加入一個空格",
"c_cpp.configuration.vcFormat.space.withinControlFlowStatementParentheses.description": "在控制流程陳述式的左括弧後與右括弧前,加入一個空格",
"c_cpp.configuration.vcFormat.space.beforeLambdaOpenParenthesis.description": "在 Lambda 引數清單的左括弧前,加入一個空格",
"c_cpp.configuration.vcFormat.space.withinCastParentheses.description": "在 C-style 轉換的左括弧後與右括弧前,加入一個空格",
"c_cpp.configuration.vcFormat.space.afterCastCloseParenthesis.description": "在 C-Style 轉換的右括弧後,加入一個空格",
"c_cpp.configuration.vcFormat.space.withinExpressionParentheses.description": "在括有括弧之運算式的左括弧後與右括弧前,加入一個空格",
"c_cpp.configuration.vcFormat.space.beforeBlockOpenBrace.description": "在範圍區塊的左大括號前,加入一個空格",
"c_cpp.configuration.vcFormat.space.betweenEmptyBraces.description": "若同一行的大括是空的,在其間插入空格",
"c_cpp.configuration.vcFormat.space.beforeInitializerListOpenBrace.description": "在統一初始設定與初始設定清單左大括號前,加入一個空格",
"c_cpp.configuration.vcFormat.space.withinInitializerListBraces.description": "在統一初始設定與初始設定清單左大括號後以及右大括號前,加入一個空格",
"c_cpp.configuration.vcFormat.space.preserveInInitializerList.description": "統一初始設定與初始設定清單內逗號前後會保留空格",
"c_cpp.configuration.vcFormat.space.beforeOpenSquareBracket.description": "在左方括號前面加入空格",
"c_cpp.configuration.vcFormat.space.withinSquareBrackets.description": "在左方括號後面和右方括號前面加入空格",
"c_cpp.configuration.vcFormat.space.beforeEmptySquareBrackets.description": "如果方括號空白,在左方括號前面加入空格",
"c_cpp.configuration.vcFormat.space.betweenEmptySquareBrackets.description": "如果方括號空白,在方括號之間插入空格",
"c_cpp.configuration.vcFormat.space.groupSquareBrackets.description": "針對多維陣列,移除方括號間的所有空格。覆寫其他控制空格的設定",
"c_cpp.configuration.vcFormat.space.withinLambdaBrackets.description": "在左方括號後面和右方括號前面加入空格",
"c_cpp.configuration.vcFormat.space.betweenEmptyLambdaBrackets.description": "如果方括號空白,在方括號之間插入空格",
"c_cpp.configuration.vcFormat.space.beforeComma.description": "在每個逗號前面加入空格",
"c_cpp.configuration.vcFormat.space.afterComma.description": "在每個逗號後面加入空格",
"c_cpp.configuration.vcFormat.space.removeAroundMemberOperators.description": "移除成員存取運算子、成員指標運算子與範圍解析運算子前後的空格",
"c_cpp.configuration.vcFormat.space.beforeInheritanceColon.description": "在類別定義中繼承而來類型的冒號前,加入一個空格",
"c_cpp.configuration.vcFormat.space.beforeConstructorColon.description": "在建構函式定義的冒號前,加入一個空格",
"c_cpp.configuration.vcFormat.space.removeBeforeSemicolon.description": "移除每個分號前的空格",
"c_cpp.configuration.vcFormat.space.insertAfterSemicolon.description": "在每個分號之後插入一個空格",
"c_cpp.configuration.vcFormat.space.removeAroundUnaryOperator.description": "移除一元運算子與運算元之間的空格",
"c_cpp.configuration.vcFormat.space.aroundBinaryOperator.description": "二元運算子前後的空格",
"c_cpp.configuration.vcFormat.space.aroundAssignmentOperator.description": "指派運算子前後的空格",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.description": "在指標與參考運算子前後新增空格",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.left.description": "指標與參考運算子靠左對齊",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.center.description": "指標與參考運算子置中",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.right.description": "指標與參考運算子靠右對齊",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.ignore.description": "指標與參考運算子未格式化",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.left.description": "指標與參考運算子靠左對齊",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.center.description": "指標與參考運算子置中",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.right.description": "指標與參考運算子靠右對齊",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.ignore.description": "指標與參考運算子未格式化",
"c_cpp.configuration.vcFormat.space.aroundTernaryOperator.description": "條件運算子前後的空格",
"c_cpp.configuration.vcFormat.space.aroundOperators.insert.description": "在運算子的前後加上空格",
"c_cpp.configuration.vcFormat.space.aroundOperators.remove.description": "移除運算子前後的空格",
"c_cpp.configuration.vcFormat.space.aroundOperators.ignore.description": "輸入時保留空格",
"c_cpp.configuration.vcFormat.space.aroundOperators.insert.description": "在運算子的前後都加入空格",
"c_cpp.configuration.vcFormat.space.aroundOperators.remove.description": "移除運算子前後的空格",
"c_cpp.configuration.vcFormat.space.aroundOperators.ignore.description": "將空格保持輸入的狀態。",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.description": "區塊的換行選項",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.oneLiners.description": "在一行中輸入的完整程式碼區塊保留在同一行,而不考慮任何 VC 格式的值: [行] 設定",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.allOneLineScopes.description": "在一行中輸入由左大括和右大括括住的任何程式碼都保留在同一行,而不考慮任何 VC 格式的值: [行] 設定",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.never.description": "程式碼區塊的格式一律取決於 VC 格式的值: [行] 設定",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.oneLiners.description": "在一行中輸入的完整程式碼區塊保留在同一行,而不考慮任何 VC 格式的值: [行] 設定",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.allOneLineScopes.description": "在一行中輸入由左大括和右大括括住的任何程式碼都保留在同一行,而不考慮任何 VC 格式的值: [行] 設定",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.never.description": "程式碼區塊的格式一律 VC 格式的值為準: [行] 設定",
"c_cpp.configuration.clang_format_path.description": "此為 clang-format 可執行檔的完整路徑。如果未指定,且在環境路徑中可用 clang-format,即會使用該格式。如果在環境路徑中找不到,則會使用延伸模組所配備的 clang-format 複本。",
"c_cpp.configuration.clang_format_style.description": "編碼樣式,目前支援: Visual Studio、LLVM、Google、Chromium、Mozilla、WebKit。使用「檔案」可從目前目錄或父目錄的 .clang-format 檔案載入樣式。使用 {鍵: 值, ...} 可設定特定參數。例如,\"Visual Studio\" 樣式類似於: { BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4, NamespaceIndentation: All }",
"c_cpp.configuration.clang_format_fallbackStyle.description": "當已使用樣式 \"file\" 叫用 clang 格式,但找不到 .clang-format 檔案時,用作後援的預先定義樣式名稱。可能的值包括 Visual Studio、LLVM、Google、Chromium、Mozilla、WebKit、none 或使用 {key: value, ...} 來設定特定參數。例如,\"Visual Studio\" 樣式類似於: { BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4 }",
@@ -127,7 +127,7 @@
"c_cpp.configuration.loggingLevel.description": "輸出面板中記錄的詳細程度。從最不詳細到最詳細的層級順序為: None < Error < Warning < Information < Debug.",
"c_cpp.configuration.autoAddFileAssociations.description": "控制是否會在檔案為 C/C++ 檔案的瀏覽作業目標時,自動將檔案新增至 files.associations。",
"c_cpp.configuration.workspaceParsingPriority.description": "控制非作用中工作區檔案的剖析是否會使用睡眠來避免使用 100% 的 CPU。值 highest/high/medium/low 會約略對應至 100/75/50/25% CPU 使用率。",
"c_cpp.configuration.workspaceSymbols.description": "叫用 'Go to Symbol in Workspace' 時,要包含在查詢結果中的符號",
"c_cpp.configuration.workspaceSymbols.description": "叫用「前往工作區中的符號」時,要包含在查詢結果中的符號",
"c_cpp.configuration.exclusionPolicy.description": "指示延伸模組在周遊穿過 \"browse.path\" 陣列,為決定應新增至程式碼瀏覽資料庫的檔案而使用 \"files.exclude\" 設定的時機。\"checkFolders\" 代表每個資料夾 (不會檢查個別檔案) 只會評估一次排除篩選。\"checkFilesAndFolders\" 表示將對遇到的所有檔案和資料夾評估排除篩選。如果您的 \"files.exclude\" 設定只包含資料夾,則 \"checkFolders\" 為最佳選擇,且會增加延伸模組可將程式碼瀏覽資料庫初始化的速度。",
"c_cpp.configuration.preferredPathSeparator.description": "用作 #include 自動完成結果路徑分隔符號的字元。",
"c_cpp.configuration.simplifyStructuredComments.description": "若為 true,暫留與自動完成的工具提示只會顯示特定結構化註解標籤,否則將會顯示所有註解。",
@@ -137,7 +137,9 @@
"c_cpp.configuration.commentContinuationPatterns.description": "定義在多行或單行註解區塊按下 ENTER 的編輯器行為。",
"c_cpp.configuration.configurationWarnings.description": "決定當組態提供者延伸模組無法提供來源檔案的組態時,是否會顯示快顯通知。",
"c_cpp.configuration.intelliSenseCachePath.description": "定義 IntelliSense 使用之快取先行編譯標頭檔的資料夾路徑。預設快取路徑在 Windows 上為 \"%LocalAppData%/Microsoft/vscode-cpptools\",在 Linux 上為 \"$XDG_CACHE_HOME/vscode-cpptools/\" (若未定義 XDG_CACHE_HOME,則為 \"$HOME/.cache/vscode-cpptools/\"),在 Mac 上則為 \"$HOME/Library/Caches/vscode-cpptools/\"。如果未指定路徑或指定的路徑無效,就會使用預設路徑。",
"c_cpp.configuration.intelliSenseCacheSize.description": "快取先行編譯標頭檔的每個工作區硬碟空間大小上限 (mb); 實際使用量可能會在此值周圍波動。預設大小為 5120 MB。大小為 0,會停用先行編譯標頭快取。",
"c_cpp.configuration.intelliSenseCacheSize.description": "快取先行編譯標頭檔可使用的每個工作區硬碟空間大小上限 (MB); 實際使用量會在此值附近波動。預設大小為 5120 MB。大小為 0會停用先行編譯標頭快取。",
"c_cpp.configuration.intelliSenseMemoryLimit.description": "IntelliSense 處理序所能使用的記憶體上限 (MB)。預設限制為 4096 MB,上限為 16 GB。當超過此限制時,此延伸模組將會關閉再重新啟動 IntelliSense 處理序。",
"c_cpp.configuration.intelliSenseUpdateDelay.description": "控制 IntelliSense 在修改之後,開始更新前的延遲 (毫秒)。",
"c_cpp.configuration.default.includePath.description": "若 c_cpp_properties.json 中未指定 \"includePath\" 時,要在設定中使用的值。如有指定 \"includePath\",請將 \"${default}\" 新增到陣列中,以插入此設定的值。",
"c_cpp.configuration.default.defines.description": "當 \"defines\" 未指定時,要在設定中使用的值,或 \"defines\" 中有 \"${default}\" 時要插入的值。",
"c_cpp.configuration.default.macFrameworkPath.description": "當 \"macFrameworkPath\" 未指定時,要在設定中使用的值,或 \"macFrameworkPath\" 中有 \"${default}\" 時要插入的值。",
@@ -163,7 +165,7 @@
"c_cpp.configuration.codeFolding.description": "若啟用,則由語言伺服器提供程式碼摺疊功能範圍。",
"c_cpp.configuration.vcpkg.enabled.markdownDescription": "啟用 [vcpkg 相依性管理員](https://aka.ms/vcpkg/)的整合服務。",
"c_cpp.configuration.renameRequiresIdentifier.description": "若為 true,則「重新命名符號」需要有效的 C/C++ 識別碼。",
"c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "若為 true,偵錯工具殼層命令替代將會使用已淘汰的反引號 (`)",
"c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "若為 true,偵錯工具殼層命令替代將會使用已淘汰的反引號 (`)",
"c_cpp.contributes.views.cppReferencesView.title": "C/C++: 其他參考結果",
"c_cpp.debuggers.pipeTransport.description": "出現時,會指示偵錯工具使用另一個可執行檔來連線至遠端電腦,該管道會在 VS Code 與 MI 啟用偵錯工具後端可執行檔之間傳送標準輸入/輸出 (例如 gdb)。",
"c_cpp.debuggers.pipeTransport.default.pipeProgram": "輸入管道程式名稱的完整路徑,例如 '/usr/bin/ssh'",
@@ -206,7 +208,7 @@
"c_cpp.debuggers.miDebuggerArgs.description": "MI 偵錯工具 (例如 gdb) 的其他引數。",
"c_cpp.debuggers.miDebuggerServerAddress.description": "MI 偵錯工具伺服器要連線至的網路位址 (範例: localhost:1234)。",
"c_cpp.debuggers.stopAtEntry.description": "選擇性參數。若為 true,則偵錯工具應該在目標的進入點停止。如果已傳遞 processId。就沒有效果。",
"c_cpp.debuggers.debugServerPath.description": "要啟動的偵錯伺服器選擇性完整路徑。預設為 null。",
"c_cpp.debuggers.debugServerPath.description": "要啟動的偵錯伺服器選完整路徑。預設為 Null。使用時,會將 \"miDebugServerAddress\" 或您自己的伺服器與 \"customSetupCommand\" 連接,以執行 \"-target-select remote <伺服器:連接埠>\"`。",
"c_cpp.debuggers.debugServerArgs.description": "選擇性偵錯伺服器引數。預設為 null。",
"c_cpp.debuggers.serverStarted.description": "要在偵錯伺服器輸出中尋找的選擇性伺服器啟動模式。預設為 null。",
"c_cpp.debuggers.filterStdout.description": "搜尋 stdout 資料流以取得伺服器啟動的模式,並將 stdout 記錄到偵錯輸出。預設為 true。",
@@ -224,5 +226,14 @@
"c_cpp.debuggers.symbolLoadInfo.description": "符號載入的明確控制。",
"c_cpp.debuggers.symbolLoadInfo.loadAll.description": "若為 true,將會載入所有程式庫的符號,否則不會載入任何 solib 符號。預設值為 true。",
"c_cpp.debuggers.symbolLoadInfo.exceptionList.description": "以分號 ';' 分隔的檔名清單 (允許使用萬用字元)。修改 LoadAll 的行為。如果 LoadAll 為 true,則不會載入與清單中任何名稱相符的程式庫符號。否則只會載入相符的程式庫符號。範例: \"foo.so;bar.so\"",
"c_cpp.debuggers.requireExactSource.description": "要求目前原始程式碼與 pdb 相符的選用旗標。"
"c_cpp.debuggers.requireExactSource.description": "要求目前原始程式碼與 pdb 相符的選用旗標。",
"c_cpp.taskDefinitions.name.description": "工作的名稱",
"c_cpp.taskDefinitions.command.description": "執行編譯的編譯器或指令碼路徑",
"c_cpp.taskDefinitions.args.description": "要傳遞給編譯器或編譯指令碼的其他引數",
"c_cpp.taskDefinitions.options.description": "其他命令選項",
"c_cpp.taskDefinitions.options.cwd.description": "所執行程式或指令碼的目前工作目錄。如果省略,則會使用 Code 的目前工作區根目錄。",
"c_cpp.taskDefinitions.detail.description": "工作的其他詳細資料",
"c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.description": "相同來源樹狀的目前路徑和編譯時間路徑。在顯示 stacktrace 位置時,在 EditorPath 下找到的檔案會對應到 CompileTimePath 路徑,以進行中斷點必對,並會從 CompileTimePath 對應到 EditorPath。",
"c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.editorPath.description": "編輯器要使用的來源樹狀路徑。",
"c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "若此項目只用於堆疊框架位置對應,則為 False; 若在指定中斷點位置時也應該使用此項目,則為 True。"
}
@@ -17,6 +17,7 @@
"envfale.failed": "無法使用 {0}。原因: {1}",
"replacing.sourcepath": "正在以 '{2}' 取代 {0} '{1}'。",
"replacing.targetpath": "正在以 '{2}' 取代 {0} '{1}'。",
"replacing.editorPath": "正在以 '{2}' 取代 {0} '{1}'。",
"resolving.variables.in.sourcefilemap": "正在解析 {0} 中的變數...",
"open.envfile": "開啟 {0}",
"unexpected.os": "未預期的 OS 類型",
@@ -7,6 +7,6 @@
"build.and.debug.active.file": "建置及偵錯使用中的檔案",
"cannot.build.non.cpp": "因為作用中的檔案不是 C 或 C++ 來源檔案,所以無法建立和偵錯。",
"no.compiler.found": "找不到任何編譯器",
"select.compiler": "選取編譯器",
"select.configuration": "選取組態",
"cl.exe.not.available": "只有從 VS 的開發人員命令提示字元執行 VS Code 時,才可使用 {0} 組建和偵錯。"
}
@@ -0,0 +1,9 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
// Do not edit this file. It is machine generated.
{
"invalid.identifier.for.rename": "為重新命名符號作業提供的識別碼無效。",
"unable.to.locate.selected.symbol": "找不到所選符號的定義。"
}
@@ -5,8 +5,7 @@
// Do not edit this file. It is machine generated.
{
"c.cpp.debug.protocol": "C/C++ 偵錯通訊協定",
"invalid.identifier.for.rename": "為重新命名符號作業提供的識別碼無效。",
"unable.to.locate.selected.symbol": "找不到所選符號的定義。",
"c.cpp.warnings": "C/C++ 設定警告",
"unable.to.start": "無法啟動 C/C + + 語言伺服器。將停用 IntelliSense 功能。錯誤: {0}",
"check.permissions": "EPERM: 檢查 '{0}' 的權限",
"server.crashed2": "語言伺服器在過去 3 分鐘內發生 5 次故障。將不會重新啟動。",
+1 -1
View File
@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
// Do not edit this file. It is machine generated.
{
"failed.to.parse.tasks": "無法剖析工作 tasks.json,這可能是因為註解或結尾逗號所致。",
"failed.to.parse.json": "無法剖析 json 檔案,這可能是因為註解或結尾逗號所致。",
"extension.not.ready": "C/C ++ 延伸模組仍在安裝。如需詳細資訊,請查看輸出視窗。",
"refer.read.me": "如需疑難排解資訊,請參閱 {0}。問題可在 {1} 建立",
"process.exited.with.code": "{0} 已結束,錯誤碼為 {1}",
+31 -4
View File
@@ -92,8 +92,6 @@
"not_exited_yet": "尚未結束。將睡眠 {0} 毫秒並再試一次。",
"failed_to_spawn_process": "無法產生處理序。錯誤: {0} ({1})",
"offering_completion": "正在提供完成",
"compiler_from_compiler_path": "正在嘗試從 \"compilerPath\" 屬性中的編譯器取得預設: '{0}'",
"compiler_from_compile_commands": "正在嘗試從 compile_commands.json 檔案中的編譯器取得預設: '{0}'",
"compiler_on_machine": "正在嘗試從電腦上找到的編譯器取得預設: '{0}'",
"unable_to_resolve_include_path": "無法解析包含路徑: {0}。",
"error_searching_for_intellisense_client": "搜尋 IntelliSense 用戶端時發生錯誤: {0}",
@@ -147,7 +145,7 @@
"timed_out_attempting_to_communicate_with_process": "嘗試與處理序通訊時發生逾時!",
"process_failed_to_run": "處理序無法執行",
"wsl_not_detected": "未偵測到 WSL",
"compiler_in_compilerpath_not_found": "找不到 \"compilerPath\" 屬性中的編譯器: {0}",
"compiler_in_compilerpath_not_found": "找不到指定的編譯器: {0}",
"config_data_invalid": "組態資料無效,{0}",
"cmake_executable_not_found": "在 {0} 找不到 CMake 可執行檔",
"no_args_provider": "沒有任何引數提供者",
@@ -177,5 +175,34 @@
"deprecated_label": "已淘汰:",
"exceptions_label": "例外狀況:",
"template_parameters_label": "範本參數:",
"compiler_probe_command_line": "編譯器探查命令列: {0}"
"compiler_probe_command_line": "編譯器探查命令列: {0}",
"c_compiler_from_compiler_path": "正在嘗試從 C 編譯器的 \"compilerPath\" 屬性中取得預設值: '{0}'",
"cpp_compiler_from_compiler_path": "正在嘗試從 C++ 編譯器的 \"compilerPath\" 屬性中取得預設值: '{0}'",
"c_compiler_from_compile_commands": "正在嘗試從 C 編譯器的 compile_commands.json 檔案中取得預設值: '{0}'",
"cpp_compiler_from_compile_commands": "正在嘗試從 C++ 編譯器的 compile_commands.json 檔案中取得預設值: '{0}'",
"c_intellisense_mode_changed": "若為 C 原始程式檔,IntelliSenseMode 已從 \"{0}\" 變更為 \"{1}\"。",
"cpp_intellisense_mode_changed": "若為 C++ 原始程式檔,IntelliSenseMode 已從 \"{0}\" 變更為 \"{1}\"。",
"c_std_version_changed": "若為 C 原始程式檔,cStandard 已從 \"{0}\" 變更為 \"{1}\"。",
"cpp_std_version_changed": "若為 C 原始程式檔,cppStandard 已從 \"{0}\" 變更為 \"{1}\"。",
"c_intellisense_mode_and_std_version_changed": "若為 C 原始程式檔,IntelliSenseMode 已從 \"{0}\" 變更為 \"{1}\",且 cStandard 已從 \"{2}\" 變更為 \"{3}\"。",
"cpp_intellisense_mode_and_std_version_changed": "若為 C++ 原始程式檔,IntelliSenseMode 已從 \"{0}\" 變更為 \"{1}\",且 cppStandard 已從 \"{2}\" 變更為 \"{3}\"。",
"c_intellisense_mode_changed_with_path": "若為 C 原始程式檔,依據編譯器引數與探查 compilerPathIntelliSenseMode 已從 \"{0}\" 變更為 \"{1}\": \"{2}\"",
"cpp_intellisense_mode_changed_with_path": "若為 C++ 原始程式檔,依據編譯器引數與探查 compilerPathIntelliSenseMode 已從 \"{0}\" 變更為 \"{1}\": \"{2}\"",
"c_std_version_changed_with_path": "若為 C 原始程式檔,依據編譯器引數與探查 compilerPathcStandard 已從 \"{0}\" 變更為 \"{1}\": \"{2}\"",
"cpp_std_version_changed_with_path": "若為 C++ 原始程式檔,依據編譯器引數與探查 compilerPathcppStandard 已從 \"{0}\" 變更為 \"{1}\": \"{2}\"",
"c_intellisense_mode_and_std_version_changed_with_path": "若為 C 原始程式檔,依據編譯器引數與探查 compilerPathIntelliSenseMode 已從 \"{0}\" 變更為 \"{1}\",且 cStandard 已從 \"{2}\" 變更為 \"{3}\": \"{4}\"",
"cpp_intellisense_mode_and_std_version_changed_with_path": "若為 C++ 原始程式檔,依據編譯器引數與探查 compilerPathIntelliSenseMode 已從 \"{0}\" 變更為 \"{1}\",且 cppStandard 已從 \"{2}\" 變更為 \"{3}\": \"{4}\"",
"compiler_path_changed": "無法解析 compilerPath \"{0}\" 的設定。請改為使用 \"{1}\"。",
"compiler_path_invalid": "無法解析 compilerPath 的設定: \"{0}\"",
"compiler_path_empty": "因已明確清空 compilerPath,所以略過探查編譯器",
"msvc_intellisense_specified": "已指定 MSVC intelliSenseMode。正在進行編譯器 cl.exe 的設定。",
"unable_to_configure_cl_exe": "無法進行編譯器 cl.exe 的設定。",
"probing_compiler_default_target": "使用命令列探查編譯器的預設目標: \"{0}\" {1}",
"compiler_default_target": "編譯器傳回了預設目標值: {0}",
"c_probing_compiler_default_standard": "使用命令列探查預設 C 語言標準的編譯器: {0}",
"cpp_probing_compiler_default_standard": "使用命令列探查預設 C++ 語言標準的編譯器: {0}",
"detected_language_standard_version": "已偵測到語言標準版本: {0}",
"unhandled_default_target_detected": "偵測到未處理的預設編譯器目標值: {0}",
"unhandled_target_arg_detected": "偵測到未處理的目標引數值: {0}",
"memory_limit_shutting_down_intellisense": "IntelliSense 伺服器即將關機: {0}。記憶體使用量為 {1} MB,超過了 {2} MB 的限制。"
}
@@ -32,7 +32,7 @@
"intellisense.mode": "IntelliSense 模式",
"intellisense.mode.description": "要使用的 IntelliSense 模式 (對應到 MSVC、gcc 或 Clang 的架構專屬變體)。如果未設定或設為 {0},延伸模組會選擇該平台的預設。Windows 預設為 {1}、Linux 預設為 {2}、macOS 預設為 {3}。選取特定的 IntelliSense 模式即可覆寫 {4} 模式。",
"include.path": "包含路徑",
"include.path.description": "include 路徑是包含來源檔案所含之標頭檔 (例如 {0}) 的資料夾。請為 Intellisense 引擎指定搜尋所含標頭檔時所要使用的清單路徑。這些路徑不會重複搜尋。若要重複搜尋,請指定 {1}。例如 {2} 會搜尋所有子目錄,而 {3} 不會。若在安裝了 Visual Studio 的 Windows 上,或在 {4} 設定中指定了編譯器,就無須在此清單中列出系統的 include 路徑。",
"include.path.description": "include 路徑是包含來源檔案所含之標頭檔 (例如 {0}) 的資料夾。請為 Intellisense 引擎指定搜尋所含標頭檔時所要使用的路徑清單。這些路徑不會重複搜尋。若要重複搜尋,請指定 {1}。例如 {2} 會搜尋所有子目錄,而 {3} 不會。若在安裝了 Visual Studio 的 Windows 上,或在 {4} 設定中指定了編譯器,就無須在此清單中列出系統的 include 路徑。",
"one.include.path.per.line": "每行一個包含路徑。",
"defines": "定義",
"defines.description": "剖析檔案時,IntelliSense 引擎要使用的前置處理器定義清單。可使用 {0} 來設定值,例如 {1}。",
+51 -40
View File
@@ -28,47 +28,47 @@
"c_cpp.configuration.formatting.Default.description": "K formátování kódu se použije clang-format.",
"c_cpp.configuration.formatting.Disabled.description": "Formátování kódu bude zakázané.",
"c_cpp.configuration.vcFormat.indent.braces.description": "Složené závorky se odsazují mezerou zadanou v nastavení Editor: Velikost tabulátoru.",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.description": "Odsadit nové řádky relativně k:",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.outermostParenthesis.description": "vnější levé závorce",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.innermostParenthesis.description": "vnitřní levé závorce",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.statementBegin.description": "začátku aktuálního příkazu",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.description": "Určuje, k čemu bude relativní odsazení nových řádků.",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.outermostParenthesis.description": "Odsadí nový řádek relativně k nejzevnější levé závorce.",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.innermostParenthesis.description": "Odsadí nový řádek relativně k nejvnitřnější levé závorce.",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.statementBegin.description": "Odsadí nový řádek relativně k začátku aktuálního příkazu.",
"c_cpp.configuration.vcFormat.indent.withinParentheses.description": "Když se napíše nový řádek, zarovná se pod levou závorkou nebo podle hodnoty parametru C_Cpp.vcFormat.indent.multiLineRelativeTo.",
"c_cpp.configuration.vcFormat.indent.withinParentheses.alignToParenthesis.description": "Nový řádek je zarovnaný pod levou závorkou.",
"c_cpp.configuration.vcFormat.indent.withinParentheses.indent.description": "Nový řádek je odsazený podle hodnoty parametru C_Cpp.vcFormat.indent.multiLineRelativeTo.",
"c_cpp.configuration.vcFormat.indent.withinParentheses.alignToParenthesis.description": "Nový řádek se zarovná pod levou závorkou.",
"c_cpp.configuration.vcFormat.indent.withinParentheses.indent.description": "Nový řádek se odsa podle hodnoty parametru C_Cpp.vcFormat.indent.multiLineRelativeTo.",
"c_cpp.configuration.vcFormat.indent.preserveWithinParentheses.description": "V existujícím kódu se zachová stávající zarovnání odsazení nových řádků v závorkách.",
"c_cpp.configuration.vcFormat.indent.caseLabels.description": "Popisky se odsazují relativně k příkazům switch mezerou zadanou v nastavení Editor: Velikost tabulátoru.",
"c_cpp.configuration.vcFormat.indent.caseContents.description": "Kód v příkazu case se odsazuje relativně ke svému popisku mezerou zadanou v nastavení Editor: Velikost tabulátoru.",
"c_cpp.configuration.vcFormat.indent.caseContents.description": "Kód v bloku case se odsazuje relativně ke svému popisku mezerou zadanou v nastavení Editor: Velikost tabulátoru.",
"c_cpp.configuration.vcFormat.indent.caseContentsWhenBlock.description": "Odsadit složené závorky za příkazem case mezerou zadanou v nastavení Editor: Velikost tabulátoru",
"c_cpp.configuration.vcFormat.indent.lambdaBracesWhenParameter.description": "Odsadit složené závorky výrazů lambda, které se používají jako parametry funkcí, relativně k začátku příkazu mezerou zadanou v nastavení Editor: Velikost tabulátoru",
"c_cpp.configuration.vcFormat.indent.gotoLabels.description": "Pozice popisků goto",
"c_cpp.configuration.vcFormat.indent.gotoLabels.oneLeft.description": "nalevo od aktuálního odsazení kódu mezerou zadanou v nastavení Editor: Velikost tabulátoru",
"c_cpp.configuration.vcFormat.indent.gotoLabels.leftmostColumn.description": "ke zcela levému okraji kódu",
"c_cpp.configuration.vcFormat.indent.gotoLabels.none.description": "Popisky goto se nebudou formátovat",
"c_cpp.configuration.vcFormat.indent.gotoLabels.oneLeft.description": "Popisky goto se umístí nalevo od aktuálního odsazení kódu mezerou zadanou v nastavení Editor: Velikost tabulátoru.",
"c_cpp.configuration.vcFormat.indent.gotoLabels.leftmostColumn.description": "Popisky goto se umístí ke zcela levému okraji kódu.",
"c_cpp.configuration.vcFormat.indent.gotoLabels.none.description": "Popisky goto se nebudou formátovat.",
"c_cpp.configuration.vcFormat.indent.preprocessor.description": "Pozice direktiv preprocesoru",
"c_cpp.configuration.vcFormat.indent.preprocessor.oneLeft.description": "nalevo od aktuálního odsazení kódu mezerou zadanou v nastavení Editor: Velikost tabulátoru",
"c_cpp.configuration.vcFormat.indent.preprocessor.leftmostColumn.description": "ke zcela levému okraji kódu",
"c_cpp.configuration.vcFormat.indent.preprocessor.none.description": "direktivy preprocesoru se nebudou formátovat",
"c_cpp.configuration.vcFormat.indent.preprocessor.oneLeft.description": "Direktivy preprocesoru se umístí nalevo od aktuálního odsazení kódu mezerou zadanou v nastavení Editor: Velikost tabulátoru.",
"c_cpp.configuration.vcFormat.indent.preprocessor.leftmostColumn.description": "Direktivy preprocesoru se umístí ke zcela levému okraji kódu.",
"c_cpp.configuration.vcFormat.indent.preprocessor.none.description": "Direktivy preprocesoru se nebudou formátovat.",
"c_cpp.configuration.vcFormat.indent.accessSpecifiers.description": "Specifikátory přístupu jsou odsazené relativně k definicím tříd nebo struktur mezerou zadanou v nastavení Editor: Velikost tabulátoru.",
"c_cpp.configuration.vcFormat.indent.namespaceContents.description": "Kód se odsazuje relativně ke svému uzavírajícímu oboru názvů mezerou zadanou v nastavení Editor: Velikost tabulátoru.",
"c_cpp.configuration.vcFormat.indent.preserveComment.description": "Při formátovacích operacích se nezmění odsazení komentářů.",
"c_cpp.configuration.vcFormat.indent.preserveComments.description": "Při formátovacích operacích se nezmění odsazení komentářů.",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.namespace.description": "Pozice levých složených závorek pro obory názvů",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.type.description": "Pozice levých složených závorek pro definice typů",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.lambda.description": "Pozice levých složených závorek pro funkce lambda",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.function.description": "Pozice levých složených závorek pro funkce",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.block.description": "Pozice levých složených závorek pro řídicí bloky",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.newLine.description": "levá složená závorka se přesune na nový řádek",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.sameLine.description": "levé složené závorky se zachovají na stejném řádku a před každou se přidá mezera",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.ignore.description": "levé složené závorky se neformátují",
"c_cpp.configuration.vcFormat.newLine.scopeBracesOnSeparateLines.description": "Umístit levé a pravé složené závorky pro obory na samostatné řádky",
"c_cpp.configuration.vcFormat.newLine.closeBraceSameLine.emptyType.description": "V případě prázdných typů přesunout pravou složenou závorku na řádek, na kterém je levá složená závorka",
"c_cpp.configuration.vcFormat.newLine.closeBraceSameLine.emptyFunction.description": "V případě prázdných těl funkcí nout pravou závorku na řádek, na kterém je levá závorka",
"c_cpp.configuration.vcFormat.newLine.beforeCatch.description": "Umísťovat catch a podobná klíčová slova na nový řádek",
"c_cpp.configuration.vcFormat.newLine.beforeElse.description": "Umístit else na nový řádek",
"c_cpp.configuration.vcFormat.newLine.beforeWhileInDoWhile.description": "Umístit while ve smyčce do-while na nový řádek",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.newLine.description": "Levá složená závorka se přesune na nový řádek.",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.sameLine.description": "Levé složené závorky se zachovají na stejném řádku a před každou se přidá mezera.",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.ignore.description": "Levé složené závorky se nebudou formátovat.",
"c_cpp.configuration.vcFormat.newLine.scopeBracesOnSeparateLines.description": "Levé a pravé složené závorky pro obory se umístí na samostatné řádky.",
"c_cpp.configuration.vcFormat.newLine.closeBraceSameLine.emptyType.description": "V případě prázdných typů se pravá závorka přesune na stejný řádek, na kterém je levá závorka.",
"c_cpp.configuration.vcFormat.newLine.closeBraceSameLine.emptyFunction.description": "V případě prázdných těl funkcí se pravá závorka přesune na stejný řádek, na kterém je levá závorka.",
"c_cpp.configuration.vcFormat.newLine.beforeCatch.description": "Catch a podobná klíčová slova se budou umísťovat na nový řádek.",
"c_cpp.configuration.vcFormat.newLine.beforeElse.description": "Else se umístí na nový řádek.",
"c_cpp.configuration.vcFormat.newLine.beforeWhileInDoWhile.description": "While ve smyčce do-while se umístí na nový řádek.",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.description": "Mezery mezi názvy funkcí a levými závorkami seznamů argumentů",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.insert.description": "Před levou závorku funkce přidat mezeru",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.remove.description": "mezery před levými závorkami funkce se odeberou",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.ignore.description": "mezery zůstanou tak, jak se zadají",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.insert.description": "Před levou závorku funkce se přidá mezera.",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.remove.description": "Odstraní se mezery před levými závorkami funkce.",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.ignore.description": "Mezery zůstanou tak, jak se zadají.",
"c_cpp.configuration.vcFormat.space.withinParameterListParentheses.description": "Přidá se mezera za levou závorku i před pravou závorku v seznamech parametrů funkcí.",
"c_cpp.configuration.vcFormat.space.betweenEmptyParameterListParentheses.description": "Pokud je seznam parametrů funkce prázdný, vloží se mezera mezi jeho závorky.",
"c_cpp.configuration.vcFormat.space.afterKeywordsInControlFlowStatements.description": "Mezi klíčové slovo a levou závorku v příkazech řízení toků se přidá mezera.",
@@ -95,23 +95,23 @@
"c_cpp.configuration.vcFormat.space.beforeInheritanceColon.description": "Před dvojtečku pro zděděné typy v definicích tříd se přidá mezera.",
"c_cpp.configuration.vcFormat.space.beforeConstructorColon.description": "Před dvojtečku v definicích konstruktorů se přidá mezera.",
"c_cpp.configuration.vcFormat.space.removeBeforeSemicolon.description": "Odeberou se mezery před všemi středníky.",
"c_cpp.configuration.vcFormat.space.insertAfterSemicolon.description": "Vloží mezeru za každý středník.",
"c_cpp.configuration.vcFormat.space.insertAfterSemicolon.description": "Za každý středník se vloží mezera.",
"c_cpp.configuration.vcFormat.space.removeAroundUnaryOperator.description": "Mezery mezi unárními operátory a jejich operandy se odeberou.",
"c_cpp.configuration.vcFormat.space.aroundBinaryOperator.description": "Mezery okolo binárních operátorů",
"c_cpp.configuration.vcFormat.space.aroundAssignmentOperator.description": "Mezery okolo operátorů přiřazení",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.description": "Mezery okolo operátorů ukazatelů a referencí",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.left.description": "operátory ukazatelů a referencí jsou zarovna doleva",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.center.description": "operátory ukazatelů a referencí jsou zarovna na střed",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.right.description": "operátory ukazatelů a referencí jsou zarovna doprava",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.ignore.description": "operátory ukazatelů a referencí se neformátují",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.left.description": "Operátory ukazatelů a referencí se zarovna doleva.",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.center.description": "Operátory ukazatelů a referencí se zarovna na střed.",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.right.description": "Operátory ukazatelů a referencí se zarovna doprava.",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.ignore.description": "Operátory ukazatelů a referencí se nebudou formátovat.",
"c_cpp.configuration.vcFormat.space.aroundTernaryOperator.description": "Mezery okolo podmíněných operátorů",
"c_cpp.configuration.vcFormat.space.aroundOperators.insert.description": "Před operátor i za něj se přidá mezera.",
"c_cpp.configuration.vcFormat.space.aroundOperators.remove.description": "Mezery před a za operátorem se odeberou.",
"c_cpp.configuration.vcFormat.space.aroundOperators.ignore.description": "mezery zůstanou tak, jak se zadají",
"c_cpp.configuration.vcFormat.space.aroundOperators.insert.description": "Před operátor a taky za něj se přidá mezera.",
"c_cpp.configuration.vcFormat.space.aroundOperators.remove.description": "Odeberou se mezery před a za operátorem.",
"c_cpp.configuration.vcFormat.space.aroundOperators.ignore.description": "Mezery zůstanou tak, jak se zadají.",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.description": "Možnosti zalamování pro bloky",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.oneLiners.description": "Celý blok kódu, který se zadá na jednom řádku, zůstane na jednom řádku bez ohledu na hodnoty kteréhokoli nastavení Formát VC: Nový řádek.",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.allOneLineScopes.description": "Jakýkoli kód, ve kterém se na jednom řádku zadají levá a pravá složená závorka, zůstane na jednom řádku bez ohledu na hodnoty kteréhokoli nastavení Formát VC: Nový řádek.",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.never.description": "Bloky kódu se vždy formátují podle hodnot v nastaveních Formát VC: Nový řádek.",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.oneLiners.description": "Celý blok kódu, který se zadá na jednom řádku, zůstane na jednom řádku bez ohledu na hodnoty nastavení Formát VC: Nový řádek.",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.allOneLineScopes.description": "Jakýkoliv kód, ve kterém se na jednom řádku zadají levá a pravá složená závorka, zůstane na jednom řádku bez ohledu na hodnoty nastavení Formát VC: Nový řádek.",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.never.description": "Bloky kódu se budou vždy formátovat podle hodnot nastavení Formát VC: Nový řádek.",
"c_cpp.configuration.clang_format_path.description": "Úplná cesta ke spustitelnému souboru clang-format. Pokud se nezadá, clang-format je k dispozici na cestě prostředí a ta se použije. Pokud se na cestě prostředí nenajde, použije se kopie clang-format, která se dodává spolu s rozšířením.",
"c_cpp.configuration.clang_format_style.description": "Styl kódování, v současné době se podporuje: Visual Studio, LLVM, Google, Chromium, Mozilla, WebKit. Pokud chcete načíst styl ze souboru .clang-format v aktuálním nebo nadřazeném adresáři, použijte možnost file. Pokud chcete zadat konkrétní parametry, použijte {klíč: hodnota, ...}. Například styl Visual Studio je podobný tomuto: { BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4, NamespaceIndentation: All }",
"c_cpp.configuration.clang_format_fallbackStyle.description": "Název předdefinovaného stylu, který se použije jako záloha v případě, že se vyvolá formát Clang se stylem file, ale nenajde se soubor .clang-format. Možné hodnoty jsou Visual Studio, LLVM, Google, Chromium, Mozilla, WebKit, none, případně můžete použít {klíč: hodnota, ...} a nastavit konkrétní parametry. Například styl Visual Studio je podobný tomuto: { BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4 }",
@@ -137,7 +137,9 @@
"c_cpp.configuration.commentContinuationPatterns.description": "Definuje chování editoru, když se ve víceřádkovém nebo jednořádkovém bloku komentáře stiskne klávesa Enter.",
"c_cpp.configuration.configurationWarnings.description": "Určuje, jestli se budou zobrazovat automaticky otevíraná oznámení, když rozšíření poskytovatele konfigurací nebude moct poskytnout konfiguraci pro určitý zdrojový soubor.",
"c_cpp.configuration.intelliSenseCachePath.description": "Definuje cestu ke složce pro předkompilované hlavičky uložené do mezipaměti, které používá IntelliSense. Výchozí cesta k mezipaměti je %LocalAppData%/Microsoft/vscode-cpptools ve Windows, $XDG_CACHE_HOME/vscode-cpptools/ v Linuxu (případně $HOME/.cache/vscode-cpptools/, pokud se nedefinovalo XDG_CACHE_HOME) a $HOME/Library/Caches/vscode-cpptools/ na Macu. Výchozí cesta se použije, když se nezadá žádná cesta nebo když zadaná cesta nebude platná.",
"c_cpp.configuration.intelliSenseCacheSize.description": "Maximální velikost místa na pevném disku pro předkompilované hlavičky uložené do mezipaměti na jeden pracovní prostor v megabajtech. Skutečné využití se může pohybovat kolem této hodnoty. Výchozí velikost je 5120 MB. Když se velikost nastaví na 0, ukládání předkompilovaných hlaviček do mezipaměti se zakáže.",
"c_cpp.configuration.intelliSenseCacheSize.description": "Maximální velikost místa na pevném disku pro předkompilované hlavičky uložené do mezipaměti na jeden pracovní prostor v megabajtech (MB). Skutečné využití se může pohybovat kolem této hodnoty. Výchozí velikost je 5120 MB. Když se velikost nastaví na 0, ukládání předkompilovaných hlaviček do mezipaměti se zakáže.",
"c_cpp.configuration.intelliSenseMemoryLimit.description": "Omezení využití paměti v megabajtech (MB) procesu IntelliSense. Výchozí limit je 4096 MB a maximální velikost je 16 GB. Rozšíření se vypne a restartuje proces IntelliSense, pokud limit překročí.",
"c_cpp.configuration.intelliSenseUpdateDelay.description": "Určuje prodlevu v milisekundách, než se po úpravě začne aktualizovat IntelliSense.",
"c_cpp.configuration.default.includePath.description": "Hodnota, která se použije v konfiguraci, když se v souboru c_cpp_properties.json nezadá includePath. Pokud se includePath zadá, přidejte do pole ${default}, aby se vložily hodnoty z tohoto nastavení.",
"c_cpp.configuration.default.defines.description": "Hodnota, která se použije v konfiguraci, pokud se nezadá defines, nebo hodnoty, které se mají vložit, pokud se v defines nachází ${default}",
"c_cpp.configuration.default.macFrameworkPath.description": "Hodnota, která se použije v konfiguraci, pokud se nezadá macFrameworkPath, nebo hodnoty, které se mají vložit, pokud se ve macFrameworkPath nachází ${default}",
@@ -206,7 +208,7 @@
"c_cpp.debuggers.miDebuggerArgs.description": "Další argumenty pro ladicí program MI (třeba gdb)",
"c_cpp.debuggers.miDebuggerServerAddress.description": "Síťová adresa MI Debugger Serveru, ke kterému se má připojit (příklad: localhost:1234)",
"c_cpp.debuggers.stopAtEntry.description": "Nepovinný parametr. Když se nastaví na true, ladicí program by se měl zastavit u vstupního bodu cíle. Pokud se předá processId, nemá parametr žádný vliv.",
"c_cpp.debuggers.debugServerPath.description": "Volitelná úplná cesta k ladicímu serveru, který se má spustit. Výchozí hodnota je null.",
"c_cpp.debuggers.debugServerPath.description": "Nepovinná úplná cesta k ladicímu serveru, který se má spustit. Výchozí hodnota je null. Používá se ve spojení buď s miDebugServerAddress, nebo s vlastním serverem s customSetupCommand, na kterém běží -target-select remote <server:port>.",
"c_cpp.debuggers.debugServerArgs.description": "Volitelné argumenty ladicího serveru. Výchozí hodnota je null.",
"c_cpp.debuggers.serverStarted.description": "Volitelný vzorek spuštěný na serveru, který se má vyhledat ve výstupu ladicího serveru. Výchozí hodnota je null.",
"c_cpp.debuggers.filterStdout.description": "Vyhledá ve vzorku spuštěném na serveru stream stdout a zaznamená stdout do výstupu ladění. Výchozí hodnota je true.",
@@ -224,5 +226,14 @@
"c_cpp.debuggers.symbolLoadInfo.description": "Explicitní řízení načítání symbolů",
"c_cpp.debuggers.symbolLoadInfo.loadAll.description": "V případě hodnoty true se načtou symboly pro všechny knihovny (lib), jinak se nenačtou žádné symboly solib. Výchozí hodnota je true.",
"c_cpp.debuggers.symbolLoadInfo.exceptionList.description": "Seznam názvů souborů (s povolenými zástupnými znaky) oddělených středníky (;). Upraví chování pro LoadAll. Hodnota true pro LoadAll znamená, že se nemají načítat symboly pro knihovny (lib), které odpovídají libovolnému názvu v seznamu. V opačném případě se mají načíst symboly pro všechny odpovídající knihovny. Příklad: foo.so;bar.so",
"c_cpp.debuggers.requireExactSource.description": "Volitelný příznak, který vyžaduje, aby aktuální zdrojový kód odpovídal souboru pdb"
"c_cpp.debuggers.requireExactSource.description": "Volitelný příznak, který vyžaduje, aby aktuální zdrojový kód odpovídal souboru pdb",
"c_cpp.taskDefinitions.name.description": "Název úlohy",
"c_cpp.taskDefinitions.command.description": "Cesta ke kompilátoru nebo skriptu, který provádí kompilaci",
"c_cpp.taskDefinitions.args.description": "Další argumenty, které se mají předat kompilátoru nebo kompilačnímu skriptu",
"c_cpp.taskDefinitions.options.description": "Další možnosti příkazu",
"c_cpp.taskDefinitions.options.cwd.description": "The current working directory of the executed program or script. If omitted Code's current workspace root is used.",
"c_cpp.taskDefinitions.detail.description": "Další podrobnosti o typu úlohy",
"c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.description": "Aktuální cesta a cesta při kompilaci ke stejným zdrojovým stromům. Soubory, které se najdou na cestě EditorPath, se namapují na cestu CompileTimePath pro odpovídající zarážku, která se při zobrazování umístění stacktrace mapuje z CompileTimePath na EditorPath.",
"c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.editorPath.description": "Cesta ke zdrojovému souboru, který se použije v editoru",
"c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "False, pokud se tato položka používá jen k mapování umístění bloku zásobníku. True, pokud se tato entita má použít i při zadávání umístění zarážek"
}
@@ -17,6 +17,7 @@
"envfale.failed": "Nepovedlo se použít {0}. Příčina: {1}",
"replacing.sourcepath": "{1} v {0} se nahrazuje za {2}.",
"replacing.targetpath": "{1} v {0} se nahrazuje za {2}.",
"replacing.editorPath": "Nahrazuje se {0} {1} za {2}.",
"resolving.variables.in.sourcefilemap": "Překládají se proměnné v {0}...",
"open.envfile": "Otevřít {0}",
"unexpected.os": "Neočekávaný typ operačního systému",
@@ -7,6 +7,6 @@
"build.and.debug.active.file": "Sestavit a ladit aktivní soubor",
"cannot.build.non.cpp": "Sestavení a ladění není možné, protože aktivní soubor není zdrojový soubor jazyka C ani C++.",
"no.compiler.found": "Nenašel se žádný kompilátor.",
"select.compiler": "Vyberte kompilátor.",
"select.configuration": "Vybrat konfiguraci",
"cl.exe.not.available": "Sestavení a ladění {0} je k dispozici jen v případě, že se nástroj VS Code spustil z nástroje Developer Command Prompt pro VS."
}
@@ -0,0 +1,9 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
// Do not edit this file. It is machine generated.
{
"invalid.identifier.for.rename": "Pro operaci Přejmenovat symbol se zadal neplatný identifikátor.",
"unable.to.locate.selected.symbol": "Definice pro vybraný symbol se nenašla."
}
@@ -5,8 +5,7 @@
// Do not edit this file. It is machine generated.
{
"c.cpp.debug.protocol": "Protokol ladění C/C++",
"invalid.identifier.for.rename": "Pro operaci Přejmenovat symbol se zadal neplatný identifikátor.",
"unable.to.locate.selected.symbol": "Definice pro vybraný symbol se nenašla.",
"c.cpp.warnings": "Upozornění konfigurace C/C++",
"unable.to.start": "Nepovedlo se spustit jazykový server C/C++. Funkce IntelliSense se zakážou. Chyba: {0}",
"check.permissions": "EPERM: Zkontrolujte oprávnění pro {0}.",
"server.crashed2": "Jazykový server se 5krát za poslední 3 minuty chybově ukončil. Nebude se restartovat.",
+1 -1
View File
@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
// Do not edit this file. It is machine generated.
{
"failed.to.parse.tasks": "Nepovedlo se parsovat soubor tasks.json, pravděpodobně kvůli komentářům nebo čárkám na konci.",
"failed.to.parse.json": "Nepovedlo se parsovat soubor json, pravděpodobně kvůli komentářům nebo čárkám na konci.",
"extension.not.ready": "Rozšíření C/C++ se stále instaluje. Další informace najdete v okně výstupu.",
"refer.read.me": "Informace o řešení problémů najdete v {0}. Problémy se dají vytvořit v {1}.",
"process.exited.with.code": "{0} se ukončilo s kódem chyby {1}.",
+31 -4
View File
@@ -92,8 +92,6 @@
"not_exited_yet": "Proces se ještě neukončil. Počká se {0} ms a proběhne nový pokus.",
"failed_to_spawn_process": "Nepovedlo se vygenerovat proces. Chyba: {0} ({1})",
"offering_completion": "Nabízí se dokončení.",
"compiler_from_compiler_path": "Probíhá pokus získat výchozí hodnoty od kompilátoru ve vlastnosti compilerPath: {0}",
"compiler_from_compile_commands": "Probíhá pokus získat výchozí hodnoty od kompilátoru v souboru compile_commands.json: {0}",
"compiler_on_machine": "Probíhá pokus získat výchozí hodnoty od kompilátoru nalezeného na počítači: {0}",
"unable_to_resolve_include_path": "Nepovedlo se přeložit cestu pro vložené soubory: {0}",
"error_searching_for_intellisense_client": "Při hledání klienta IntelliSense došlo k chybě: {0}",
@@ -147,7 +145,7 @@
"timed_out_attempting_to_communicate_with_process": "Při pokusu komunikovat s procesem vypršel časový limit!",
"process_failed_to_run": "Proces se nepovedlo spustit.",
"wsl_not_detected": "WSL se nezjistilo",
"compiler_in_compilerpath_not_found": "Kompilátor ve vlastnosti compilerPath nebyl nalezen: {0}",
"compiler_in_compilerpath_not_found": "Zadaný kompilátor se nenašel: {0}",
"config_data_invalid": "Neplatná data konfigurace, {0}",
"cmake_executable_not_found": "Spustitelný soubor CMake se v místě {0} nenašel.",
"no_args_provider": "Žádný zprostředkovatel argumentů",
@@ -177,5 +175,34 @@
"deprecated_label": "Zastaralé:",
"exceptions_label": "Výjimky:",
"template_parameters_label": "Parametry šablony:",
"compiler_probe_command_line": "Příkazový řádek sondy kompilátoru: {0}"
"compiler_probe_command_line": "Příkazový řádek sondy kompilátoru: {0}",
"c_compiler_from_compiler_path": "Probíhá pokus o získání výchozích hodnot z kompilátoru jazyka C ve vlastnosti compilerPath: {0}",
"cpp_compiler_from_compiler_path": "Probíhá pokus o získání výchozích hodnot z kompilátoru jazyka C++ ve vlastnosti compilerPath: {0}",
"c_compiler_from_compile_commands": "Probíhá pokus o získání výchozích hodnot z kompilátoru jazyka C v souboru compile_commands.json: {0}",
"cpp_compiler_from_compile_commands": "Probíhá pokus o získání výchozích hodnot z kompilátoru jazyka C++ v souboru compile_commands.json: {0}",
"c_intellisense_mode_changed": "Pro zdrojové soubory jazyka C se režim IntelliSenseMode změnil z {0} na {1}.",
"cpp_intellisense_mode_changed": "Pro zdrojové soubory jazyka C++ se režim IntelliSenseMode změnil z {0} na {1}.",
"c_std_version_changed": "Pro zdrojové soubory jazyka C se cStandard změnil z {0} na {1}.",
"cpp_std_version_changed": "Pro zdrojové soubory jazyka C++ se cppStandard změnil z {0} na {1}.",
"c_intellisense_mode_and_std_version_changed": "Pro zdrojové soubory jazyka C se režim IntelliSenseMode změnil z {0} na {1} a cStandard se změnil z {2} na {3}.",
"cpp_intellisense_mode_and_std_version_changed": "Pro zdrojové soubory jazyka C++ se režim IntelliSenseMode změnil z {0} na {1} a cppStandard se změnil z {2} na {3}.",
"c_intellisense_mode_changed_with_path": "Pro zdrojové soubory jazyka C se režim IntelliSenseMode změnil z {0} na {1}, a to na základě argumentů kompilátoru a dotazu na vlastnost compilerPath: {2}",
"cpp_intellisense_mode_changed_with_path": "Pro zdrojové soubory jazyka C++ se režim IntelliSenseMode změnil z {0} na {1}, a to na základě argumentů kompilátoru a dotazu na vlastnost compilerPath: {2}",
"c_std_version_changed_with_path": "Pro zdrojové soubory jazyka C se cStandard změnil z {0} na {1}, a to na základě argumentů kompilátoru a dotazu na vlastnost compilerPath: {2}",
"cpp_std_version_changed_with_path": "Pro zdrojové soubory jazyka C++ se cppStandard změnil z {0} na {1}, a to na základě argumentů kompilátoru a dotazu na vlastnost compilerPath: {2}",
"c_intellisense_mode_and_std_version_changed_with_path": "Pro zdrojové soubory jazyka C se režim IntelliSenseMode změnil z {0} na {1} a cStandard se změnil z {2} na {3}, a to na základě argumentů kompilátoru a dotazu na vlastnost compilerPath: {4}",
"cpp_intellisense_mode_and_std_version_changed_with_path": "Pro zdrojové soubory jazyka C++ se režim IntelliSenseMode změnil z {0} na {1} a cppStandard se změnil z {2} na {3}, a to na základě argumentů kompilátoru a dotazu na vlastnost compilerPath: {4}",
"compiler_path_changed": "Nepovedlo se přeložit konfiguraci s vlastností compilerPath {0}. Místo toho se použije {1}.",
"compiler_path_invalid": "Nepovedlo se přeložit konfiguraci s vlastností compilerPath: {0}",
"compiler_path_empty": "Vynechává se dotaz na kompilátor kvůli explicitně prázdné vlastnosti compilerPath.",
"msvc_intellisense_specified": "Je zadaný režim intelliSenseMode MSVC. Probíhá konfigurace pro kompilátor cl.exe.",
"unable_to_configure_cl_exe": "Konfigurace pro kompilátor cl.exe nebyla úspěšná.",
"probing_compiler_default_target": "Probíhá dotazování na výchozí cíl kompilátoru pomocí příkazového řádku: {0} {1}",
"compiler_default_target": "Kompilátor vrátil výchozí hodnotu cíle: {0}",
"c_probing_compiler_default_standard": "Probíhá dotazování kompilátoru na výchozí standard jazyka C pomocí příkazového řádku: {0}",
"cpp_probing_compiler_default_standard": "Probíhá dotazování kompilátoru na výchozí standard jazyka C++ pomocí příkazového řádku: {0}",
"detected_language_standard_version": "Zjištěná verze standardu jazyka: {0}",
"unhandled_default_target_detected": "Zjistila se neošetřená výchozí hodnota cíle kompilátoru: {0}",
"unhandled_target_arg_detected": "Zjistila se neošetřená hodnota argumentu target: {0}",
"memory_limit_shutting_down_intellisense": "Vypíná se server technologie IntelliSense: {0}. Využití paměti je {1} MB a překročilo limit {2} MB."
}
+62 -51
View File
@@ -23,34 +23,34 @@
"c_cpp.command.vcpkgClipboardInstallSuggested.title": "vcpkg-Installationsbefehl in Zwischenablage kopieren",
"c_cpp.command.vcpkgOnlineHelpSuggested.title": "vcpkg-Hilfeseite aufrufen",
"c_cpp.configuration.formatting.description": "Konfiguriert das Formatierungsmodul.",
"c_cpp.configuration.formatting.clangFormat.description": "Zum Formatieren von Code wird clang-format verwendet.",
"c_cpp.configuration.formatting.clangFormat.description": "Zum Formatieren von Code wird \"clang-format\" verwendet.",
"c_cpp.configuration.formatting.vcFormat.description": "Das Visual C++-Formatierungsmodul wird zum Formatieren von Code verwendet.",
"c_cpp.configuration.formatting.Default.description": "Zum Formatieren von Code wird clang-format verwendet.",
"c_cpp.configuration.formatting.Default.description": "Zum Formatieren von Code wird \"clang-format\" verwendet.",
"c_cpp.configuration.formatting.Disabled.description": "Die Codeformatierung wird deaktiviert.",
"c_cpp.configuration.vcFormat.indent.braces.description": "Geschweifte Klammern werden um den im Editor in der Einstellung für die Tabstoppgröße angegebenen Wert eingerückt.",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.description": "Neue Zeilen einrücken relativ zu:",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.outermostParenthesis.description": "Äußerste geöffnete Klammer",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.innermostParenthesis.description": "Innerste geöffnete Klammer",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.statementBegin.description": "Anfang der aktuellen Anweisung",
"c_cpp.configuration.vcFormat.indent.withinParentheses.description": "Beim Einfügen einer neuen Zeile wird diese unter der öffnenden Klammer oder basierend auf \"C_Cpp.vcFormat.indent.multiLineRelativeTo\" ausgerichtet.",
"c_cpp.configuration.vcFormat.indent.withinParentheses.alignToParenthesis.description": "Hiermit wird die neue Zeile unter der öffnenden Klammer ausgerichtet.",
"c_cpp.configuration.vcFormat.indent.withinParentheses.indent.description": "Hiermit wird die neue Zeile basierend auf \"C_Cpp.vcFormat.indent.multiLineRelativeTo\" eingerückt.",
"c_cpp.configuration.vcFormat.indent.preserveWithinParentheses.description": "Hiermit wird in vorhandenem Code die vorhandene Einstellung zum Einrücken neuer Zeilen innerhalb von Klammern beibehalten.",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.description": "Legt den Bezugspunkt für den neuen Zeileneinzug fest.",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.outermostParenthesis.description": "Eine neue Zeile wird relativ zur äußersten geöffneten Klammer eingezogen.",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.innermostParenthesis.description": "Eine neue Zeile wird relativ zur innersten geöffneten Klammer eingezogen.",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.statementBegin.description": "Eine neue Zeile wird relativ zum Anfang der aktuellen Anweisung eingezogen.",
"c_cpp.configuration.vcFormat.indent.withinParentheses.description": "Beim Einfügen einer neuen Zeile wird diese unter der runden Klammer links oder basierend auf \"C_Cpp.vcFormat.indent.multiLineRelativeTo\" ausgerichtet.",
"c_cpp.configuration.vcFormat.indent.withinParentheses.alignToParenthesis.description": "Die neue Zeile wird unter der öffnenden Klammer ausgerichtet.",
"c_cpp.configuration.vcFormat.indent.withinParentheses.indent.description": "Die neue Zeile wird basierend auf \"C_Cpp.vcFormat.indent.multiLineRelativeTo\" eingerückt.",
"c_cpp.configuration.vcFormat.indent.preserveWithinParentheses.description": "In vorhandenem Code wird die vorhandene Einstellung zum Einzug neuer Zeilen innerhalb von Klammern beibehalten.",
"c_cpp.configuration.vcFormat.indent.caseLabels.description": "Bezeichnungen werden relativ zu switch-Anweisungen um den im Editor in der Einstellung für die Tabstoppgröße angegebenen Wert eingerückt.",
"c_cpp.configuration.vcFormat.indent.caseContents.description": "Der Code in einer case-Anweisung wird relativ zu seiner Bezeichnung um den im Editor in der Einstellung für die Tabstoppgröße angegebenen Wert eingerückt.",
"c_cpp.configuration.vcFormat.indent.caseContents.description": "Der Code in einem case-Block wird relativ zu seiner Bezeichnung um den im Editor in der Einstellung für die Tabstoppgröße angegebenen Wert eingerückt.",
"c_cpp.configuration.vcFormat.indent.caseContentsWhenBlock.description": "Geschweifte Klammern nach einer case-Anweisung um den im Editor in der Einstellung für die Tabstoppgröße angegebenen Wert einrücken",
"c_cpp.configuration.vcFormat.indent.lambdaBracesWhenParameter.description": "Geschweifte Klammern von Lambdas, die als Funktionsparameter relativ zum Anfang der Anweisung verwendet werden, um den im Editor in der Einstellung für die Tabstoppgröße angegebenen Wert einrücken",
"c_cpp.configuration.vcFormat.indent.gotoLabels.description": "Die Position von goto-Bezeichnungen",
"c_cpp.configuration.vcFormat.indent.gotoLabels.oneLeft.description": "Links vom aktuellen Codeeinzug um den im Editor in der Einstellung für die Tabstoppgröße angegebenen Wert",
"c_cpp.configuration.vcFormat.indent.gotoLabels.leftmostColumn.description": "Am Rand ganz links im Code",
"c_cpp.configuration.vcFormat.indent.gotoLabels.none.description": "Keine Formatierung von goto-Bezeichnungen",
"c_cpp.configuration.vcFormat.indent.gotoLabels.oneLeft.description": "Goto-Bezeichnungen werden links vom aktuellen Codeeinzug um den im Editor in der Einstellung für die Tabstoppgröße angegebenen Wert positioniert.",
"c_cpp.configuration.vcFormat.indent.gotoLabels.leftmostColumn.description": "Positionieren Sie goto-Bezeichnungen ganz links im Code.",
"c_cpp.configuration.vcFormat.indent.gotoLabels.none.description": "Goto-Bezeichnungen werden nicht formatiert.",
"c_cpp.configuration.vcFormat.indent.preprocessor.description": "Position der Präprozessoranweisungen",
"c_cpp.configuration.vcFormat.indent.preprocessor.oneLeft.description": "Links vom aktuellen Codeeinzug um den im Editor in der Einstellung für die Tabstoppgröße angegebenen Wert",
"c_cpp.configuration.vcFormat.indent.preprocessor.leftmostColumn.description": "Am Rand ganz links im Code",
"c_cpp.configuration.vcFormat.indent.preprocessor.oneLeft.description": "Präprozessoranweisungen werden links vom aktuellen Codeeinzug um den im Editor in der Einstellung für die Tabstoppgröße angegebenen Wert positioniert.",
"c_cpp.configuration.vcFormat.indent.preprocessor.leftmostColumn.description": "Präprozessoranweisungen werden am linken Rand des Codes positioniert.",
"c_cpp.configuration.vcFormat.indent.preprocessor.none.description": "Präprozessoranweisungen werden nicht formatiert.",
"c_cpp.configuration.vcFormat.indent.accessSpecifiers.description": "Zugriffsspezifizierer werden relativ zu Klassen- oder Strukturdefinitionen um den im Editor in der Einstellung für die Tabstoppgröße angegebenen Wert eingerückt.",
"c_cpp.configuration.vcFormat.indent.namespaceContents.description": "Der Code wird relativ zu seinem einschließenden Namespace um den im Editor in der Einstellung für die Tabstoppgröße angegebenen Wert eingerückt.",
"c_cpp.configuration.vcFormat.indent.preserveComment.description": "Einzug von Kommentaren wird bei Formatierungsvorgängen nicht geändert",
"c_cpp.configuration.vcFormat.indent.preserveComments.description": "Der Einzug von Kommentaren wird bei Formatierungsvorgängen nicht geändert.",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.namespace.description": "Die Position der öffnenden geschweiften Klammern für Namespaces",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.type.description": "Die Position der öffnenden geschweiften Klammern für Typdefinitionen",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.lambda.description": "Die Position der öffnenden geschweiften Klammern für Lambda-Funktionen",
@@ -58,56 +58,56 @@
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.block.description": "Die Position der öffnenden geschweiften Klammern für Kontrollblöcke",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.newLine.description": "Öffnende geschweifte Klammern werden in eine neue Zeile verschoben.",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.sameLine.description": "Öffnende geschweifte Klammern verbleiben in derselben Zeile, und es wird vor jeder Klammer ein Leerzeichen hinzugefügt.",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.ignore.description": "Keine Formatierung für öffnende geschweifte Klammern",
"c_cpp.configuration.vcFormat.newLine.scopeBracesOnSeparateLines.description": "Öffnende und schließende geschweifte Klammern für Bereiche werden in getrennten Zeilen platziert.",
"c_cpp.configuration.vcFormat.newLine.closeBraceSameLine.emptyType.description": "Schließende geschweifte Klammern für leere Typen in dieselbe Zeile wie öffnende geschweifte Klammern verschieben",
"c_cpp.configuration.vcFormat.newLine.closeBraceSameLine.emptyFunction.description": "In leeren Funktionsrümpfen schließende geschweifte Klammern in dieselbe Zeile wie öffnende geschweifte Klammern verschieben",
"c_cpp.configuration.vcFormat.newLine.beforeCatch.description": "\"catch\" und ähnliche Schlüsselwörter in neuer Zeile platzieren",
"c_cpp.configuration.vcFormat.newLine.beforeElse.description": "else-Anweisung in neuer Zeile anordnen",
"c_cpp.configuration.vcFormat.newLine.beforeWhileInDoWhile.description": "'while' in einer do-while-Schleife in einer neuen Zeile platzieren",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.ignore.description": "Geschweifte Klammern links werden nicht formatiert.",
"c_cpp.configuration.vcFormat.newLine.scopeBracesOnSeparateLines.description": "Geschweifte Klammern links und rechts für Bereiche werden in getrennten Zeilen platziert.",
"c_cpp.configuration.vcFormat.newLine.closeBraceSameLine.emptyType.description": "In leeren Typen werden schließende geschweifte Klammern in dieselbe Zeile wie öffnende geschweifte Klammern verschoben.",
"c_cpp.configuration.vcFormat.newLine.closeBraceSameLine.emptyFunction.description": "In leeren Funktionskörpern werden geschweifte Klammern rechts in dieselbe Zeile wie die dazugehörenden geschweiften Klammern links verschoben.",
"c_cpp.configuration.vcFormat.newLine.beforeCatch.description": "\"catch\" und ähnliche Schlüsselwörter werden in einer neuen Zeile platziert.",
"c_cpp.configuration.vcFormat.newLine.beforeElse.description": "\"else\" wird in einer neuen Zeile platziert.",
"c_cpp.configuration.vcFormat.newLine.beforeWhileInDoWhile.description": "\"while\" wird in einer do-while-Schleife in einer neuen Zeile platziert.",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.description": "Abstand zwischen Funktionsnamen und öffnende Klammern von Argumentenlisten",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.insert.description": "Vor der öffnenden Klammer einer Funktion wird ein Leerzeichen hinzugefügt.",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.remove.description": "Leerzeichen vor den öffnenden Klammern einer Funktionen werden entfernt.",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.ignore.description": "Leerzeichen werden wie eingegeben beibehalten.",
"c_cpp.configuration.vcFormat.space.withinParameterListParentheses.description": "Nach der öffnenden und vor der schließenden Klammer in Funktionsparameterlisten wird ein Leerzeichen hinzugefügt.",
"c_cpp.configuration.vcFormat.space.betweenEmptyParameterListParentheses.description": "Wenn eine Funktionsparameterliste leer ist, wird zwischen den Klammern ein Leerzeichen eingefügt.",
"c_cpp.configuration.vcFormat.space.afterKeywordsInControlFlowStatements.description": "In Anweisungen der Ablaufsteuerung werden zwischen Schlüsselwort und öffnender Klammer Leerzeichen hinzugefügt.",
"c_cpp.configuration.vcFormat.space.withinControlFlowStatementParentheses.description": "Nach der öffnenden und vor der schließenden Klammer in Ablaufsteuerungsanweisungen wird ein Leerzeichen hinzugefügt.",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.remove.description": "Leerzeichen vor öffnenden Klammern von Funktionen werden entfernt.",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.ignore.description": "Die Leerzeichen werden wie eingegeben beibehalten.",
"c_cpp.configuration.vcFormat.space.withinParameterListParentheses.description": "In Funktionsparameterlisten wird nach der runden Klammer links und auch vor der runden Klammer rechts ein Leerzeichen hinzugefügt.",
"c_cpp.configuration.vcFormat.space.betweenEmptyParameterListParentheses.description": "Wenn eine Funktionsparameterliste leer ist, wird zwischen den runden Klammern ein Leerzeichen eingefügt.",
"c_cpp.configuration.vcFormat.space.afterKeywordsInControlFlowStatements.description": "In Ablaufsteuerungsanweisungen wird zwischen Schlüsselwort und runder Klammer links ein Leerzeichen hinzugefügt.",
"c_cpp.configuration.vcFormat.space.withinControlFlowStatementParentheses.description": "In Ablaufsteuerungsanweisungen wird nach der runden Klammer links und auch vor der runden Klammer rechts ein Leerzeichen hinzugefügt.",
"c_cpp.configuration.vcFormat.space.beforeLambdaOpenParenthesis.description": "Vor der öffnenden Klammer von Lambdaargumentlisten wird ein Leerzeichen hinzugefügt.",
"c_cpp.configuration.vcFormat.space.withinCastParentheses.description": "Nach der öffnenden und vor der schließenden Klammer einer Umwandlung im C-Stil wird ein Leerzeichen hinzugefügt.",
"c_cpp.configuration.vcFormat.space.withinCastParentheses.description": "Bei einer Umwandlung im C-Stil wird nach der runden Klammer links und auch vor der runden Klammer rechts ein Leerzeichen hinzugefügt.",
"c_cpp.configuration.vcFormat.space.afterCastCloseParenthesis.description": "Nach der schließenden Klammer einer Umwandlung im C-Stil wird ein Leerzeichen hinzugefügt.",
"c_cpp.configuration.vcFormat.space.withinExpressionParentheses.description": "Nach der öffnenden und vor der schließenden Klammer eines Ausdrucks in Klammern wird ein Leerzeichen hinzugefügt.",
"c_cpp.configuration.vcFormat.space.beforeBlockOpenBrace.description": "Vor den öffnenden geschweiften Klammern von Bereichsblöcken wird ein Leerzeichen hinzugefügt.",
"c_cpp.configuration.vcFormat.space.betweenEmptyBraces.description": "Wenn geschweifte Klammern leer sind und sich in derselben Zeile befinden, wird ein Leerzeichen zwischen ihnen eingefügt.",
"c_cpp.configuration.vcFormat.space.beforeInitializerListOpenBrace.description": "Vor der öffnenden geschweiften Klammer einheitlicher Initialisierungs- und Initialisiererlisten wird ein Leerzeichen hinzugefügt.",
"c_cpp.configuration.vcFormat.space.withinInitializerListBraces.description": "Nach der öffnenden und vor der schließenden geschweiften Klammer einheitlicher Initialisierungs- und Initialisiererlisten wird ein Leerzeichen hinzugefügt.",
"c_cpp.configuration.vcFormat.space.withinInitializerListBraces.description": "In einheitlichen Initialisierungs- und Initialisiererlisten wird nach der geschweiften Klammer links und auch vor der geschweiften Klammer rechts ein Leerzeichen hinzugefügt.",
"c_cpp.configuration.vcFormat.space.preserveInInitializerList.description": "Leerzeichen um Kommas werden in einheitlichen Initialisierungs- und Initialisiererlisten beibehalten.",
"c_cpp.configuration.vcFormat.space.beforeOpenSquareBracket.description": "Vor öffnenden eckigen Klammern wird ein Leerzeichen hinzugefügt.",
"c_cpp.configuration.vcFormat.space.withinSquareBrackets.description": "Nach der öffnenden eckigen Klammer und vor der schließenden eckigen Klammer wird ein Leerzeichen eingefügt.",
"c_cpp.configuration.vcFormat.space.beforeEmptySquareBrackets.description": "Wenn eckige Klammern leer sind, wird vor der öffnenden Klammer ein Leerzeichen hinzugefügt.",
"c_cpp.configuration.vcFormat.space.betweenEmptySquareBrackets.description": "Wenn eckige Klammern leer sind, wird zwischen diesen ein Leerzeichen eingefügt.",
"c_cpp.configuration.vcFormat.space.groupSquareBrackets.description": "Bei mehrdimensionalen Arrays werden alle Leerzeichen zwischen Klammern entfernt. Andere Leerzeicheneinstellungen werden überschrieben.",
"c_cpp.configuration.vcFormat.space.withinLambdaBrackets.description": "Nach der öffnenden eckigen Klammer und vor der schließenden eckigen Klammer wird ein Leerzeichen eingefügt.",
"c_cpp.configuration.vcFormat.space.betweenEmptyLambdaBrackets.description": "Wenn eckige Klammern leer sind, wird ein Leerzeichen zwischen ihnen eingefügt.",
"c_cpp.configuration.vcFormat.space.beforeOpenSquareBracket.description": "Vor öffnenden eckigen Klammern wird ein Leerzeichen eingefügt.",
"c_cpp.configuration.vcFormat.space.withinSquareBrackets.description": "Es wird ein Leerzeichen nach der öffnenden eckigen Klammer und vor der schließenden eckigen Klammer eingefügt.",
"c_cpp.configuration.vcFormat.space.beforeEmptySquareBrackets.description": "Wenn die eckigen Klammern leer sind, wird vor der öffnenden Klammer ein Leerzeichen hinzugefügt.",
"c_cpp.configuration.vcFormat.space.betweenEmptySquareBrackets.description": "Wenn die eckigen Klammern leer sind, wird zwischen diesen ein Leerzeichen eingefügt.",
"c_cpp.configuration.vcFormat.space.groupSquareBrackets.description": "Für mehrdimensionale Arrays werden alle Leerzeichen zwischen den Klammern entfernt. Andere Leerzeicheneinstellungen werden überschrieben.",
"c_cpp.configuration.vcFormat.space.withinLambdaBrackets.description": "Es wird ein Leerzeichen nach der öffnenden eckigen Klammer und vor der schließenden eckigen Klammer eingefügt.",
"c_cpp.configuration.vcFormat.space.betweenEmptyLambdaBrackets.description": "Wenn die eckigen Klammern leer sind, wird zwischen diesen ein Leerzeichen eingefügt.",
"c_cpp.configuration.vcFormat.space.beforeComma.description": "Vor jedem Komma wird ein Leerzeichen hinzugefügt.",
"c_cpp.configuration.vcFormat.space.afterComma.description": "Nach jedem Komma wird ein Leerzeichen hinzugefügt.",
"c_cpp.configuration.vcFormat.space.removeAroundMemberOperators.description": "Leerzeichen um Memberzugriffsoperatoren, Pointer-to-Member-Operatoren und Bereichsauflösungsoperatoren werden entfernt.",
"c_cpp.configuration.vcFormat.space.beforeInheritanceColon.description": "In Klassendefinitionen wird vor dem Doppelpunkt für geerbte Typen ein Leerzeichen hinzugefügt.",
"c_cpp.configuration.vcFormat.space.beforeInheritanceColon.description": "Für vererbte Typen wird in Klassendefinitionen vor dem Doppelpunkt ein Leerzeichen hinzugefügt.",
"c_cpp.configuration.vcFormat.space.beforeConstructorColon.description": "In Konstruktordefinitionen wird vor dem Doppelpunkt ein Leerzeichen hinzugefügt.",
"c_cpp.configuration.vcFormat.space.removeBeforeSemicolon.description": "Vor allen Semikolons werden die Leerzeichen entfernt.",
"c_cpp.configuration.vcFormat.space.insertAfterSemicolon.description": "Nach jedem Semikolon wird ein Leerzeichen eingefügt.",
"c_cpp.configuration.vcFormat.space.removeAroundUnaryOperator.description": "Die Leerzeichen zwischen unären Operatoren und Operanden werden entfernt.",
"c_cpp.configuration.vcFormat.space.removeAroundUnaryOperator.description": "Die Leerzeichen zwischen unären Operatoren und den Operanden werden entfernt.",
"c_cpp.configuration.vcFormat.space.aroundBinaryOperator.description": "Leerzeichen um binäre Operatoren",
"c_cpp.configuration.vcFormat.space.aroundAssignmentOperator.description": "Leerzeichen um Zuweisungsoperatoren",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.description": "Leerzeichen um Zeiger- und Verweisoperatoren",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.left.description": "Zeiger- und Verweisoperatoren sind links ausgerichtet.",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.center.description": "Zeiger- und Verweisoperatoren sind zentriert.",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.right.description": "Zeiger- und Verweisoperatoren sind rechts ausgerichtet.",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.ignore.description": "Zeiger- und Verweisoperatoren sind nicht formatiert.",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.left.description": "Zeiger- und Verweisoperatoren werden links ausgerichtet.",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.center.description": "Zeiger- und Verweisoperatoren werden zentriert.",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.right.description": "Zeiger- und Verweisoperatoren werden rechts ausgerichtet.",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.ignore.description": "Zeiger- und Verweisoperatoren werden nicht formatiert.",
"c_cpp.configuration.vcFormat.space.aroundTernaryOperator.description": "Leerzeichen um bedingte Operatoren",
"c_cpp.configuration.vcFormat.space.aroundOperators.insert.description": "Vor und nach dem Operator werden Leerzeichen hinzugefügt.",
"c_cpp.configuration.vcFormat.space.aroundOperators.remove.description": "Leerzeichen vor und nach dem Operator werden entfernt.",
"c_cpp.configuration.vcFormat.space.aroundOperators.ignore.description": "Leerzeichen werden wie eingegeben beibehalten.",
"c_cpp.configuration.vcFormat.space.aroundOperators.remove.description": "Die Leerzeichen vor und nach dem Operator werden entfernt.",
"c_cpp.configuration.vcFormat.space.aroundOperators.ignore.description": "Die Leerzeichen werden wie eingegeben beibehalten.",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.description": "Umbruchoptionen für Blöcke",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.oneLiners.description": "Ein vollständiger Codeblock, der in einer Zeile eingegeben wird, wird unabhängig von den Einstellungen für neue Zeilen im VC-Format in einer Zeile beibehalten.",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.allOneLineScopes.description": "Jeglicher Code, in dem die öffnende und schließende geschweifte Klammer in einer Zeile eingegeben wird, wird unabhängig von den Einstellungen für neue Zeilen im VC-Format in einer Zeile beibehalten.",
@@ -127,7 +127,7 @@
"c_cpp.configuration.loggingLevel.description": "Die Ausführlichkeit der Protokollierung im Ausgabebereich. Die Reihenfolge der Stufen von \"am wenigsten ausführlich\" bis \"am ausführlichsten\" lautet: None < Error < Warning < Information < Debug.",
"c_cpp.configuration.autoAddFileAssociations.description": "Hiermit wird gesteuert, ob Dateien automatisch zu \"files.associations\" hinzugefügt werden, wenn sie das Ziel eines Navigationsvorgangs aus einer C/C++-Datei sind.",
"c_cpp.configuration.workspaceParsingPriority.description": "Hiermit wird gesteuert, ob beim Analysieren der nicht aktiven Arbeitsbereichsdateien Standbyfunktionen verwendet werden, um eine 100-prozentige Auslastung der CPU zu vermeiden. Die Werte \"highest\", \"high\", \"medium\" und \"low\" entsprechen jeweils etwa 100, 75, 50 und 25 % CPU-Auslastung.",
"c_cpp.configuration.workspaceSymbols.description": "Die Symbole, die in die Abfrageergebnisse einbezogen werden sollen, wenn \"Zu Symbol im Arbeitsbereich wechseln\" aufgerufen wird",
"c_cpp.configuration.workspaceSymbols.description": "Die Symbole, die in die Abfrageergebnisse einbezogen werden sollen, wenn \"Zu Symbol im Arbeitsbereich wechseln\" aufgerufen wird.",
"c_cpp.configuration.exclusionPolicy.description": "Weist die Erweiterung an, wann die Einstellung \"files.exclude\" verwendet werden soll, wenn ermittelt wird, welche Dateien beim Durchlaufen der Pfade im Array \"browse.path\" der Codenavigationsdatenbank hinzugefügt werden sollen. \"checkFolders\" bedeutet, dass die Ausschlussfilter nur einmal pro Ordner ausgewertet werden (einzelne Dateien sind nicht aktiviert). \"checkFilesAndFolders\" bedeutet, dass die Ausschlussfilter für jede gefundene Datei und jeden gefundenen Ordner ausgewertet werden. Wenn die Einstellung \"files.exclude\" nur Ordner enthält, ist \"checkFolders\" die beste Wahl und erhöht die Geschwindigkeit, mit der die Erweiterung die Codenavigationsdatenbank initialisieren kann.",
"c_cpp.configuration.preferredPathSeparator.description": "Das Zeichen, das als Pfadtrennzeichen für #include-Ergebnisse der automatischen Vervollständigung verwendet wird.",
"c_cpp.configuration.simplifyStructuredComments.description": "Wenn TRUE, zeigen die QuickInfos für \"Darauf zeigen\" und \"Automatisch abschließen\" nur bestimmte Bezeichnungen strukturierter Kommentare an. Andernfalls werden alle Kommentare angezeigt.",
@@ -137,7 +137,9 @@
"c_cpp.configuration.commentContinuationPatterns.description": "Definiert das Editor-Verhalten, wenn innerhalb eines mehrzeiligen oder einzeiligen Kommentarblocks die EINGABETASTE gedrückt wird.",
"c_cpp.configuration.configurationWarnings.description": "Bestimmt, ob Popupbenachrichtigungen angezeigt werden, wenn eine Konfigurationsanbietererweiterung keine Konfiguration für eine Quelldatei bereitstellen kann.",
"c_cpp.configuration.intelliSenseCachePath.description": "Hiermit wird der Ordnerpfad für zwischengespeicherte vorkompilierte Header definiert, die von IntelliSense verwendet werden. Der Standardcachepfad lautet unter Windows \"%LocalAppData%/Microsoft/vscode-cpptools\", unter Linux \"$XDG_CACHE_HOME/vscode-cpptools/\" (bzw. \"$HOME/.cache/vscode-cpptools/\", wenn XDG_CACHE_HOME nicht definiert ist) und auf dem Mac \"$HOME/Library/Caches/vscode-cpptools/\". Der Standardpfad wird verwendet, wenn kein Pfad angegeben wurde oder ein angegebener Pfad ungültig ist.",
"c_cpp.configuration.intelliSenseCacheSize.description": "Maximale Größe des Festplattenspeichers pro Arbeitsbereich in MB für zwischengespeicherte vorkompilierte Header; die tatsächliche Nutzung schwankt möglicherweise um diesen Wert. Die Standardgröße beträgt 5120 MB. Das Zwischenspeichern vorkompilierter Header ist deaktiviert, wenn die Größe 0 ist.",
"c_cpp.configuration.intelliSenseCacheSize.description": "Maximale Größe des Festplattenspeichers pro Arbeitsbereich in MB für zwischengespeicherte vorkompilierte Header. Die tatsächliche Nutzung schwankt möglicherweise um diesen Wert. Die Standardgröße beträgt 5120 MB. Das Zwischenspeichern vorkompilierter Header ist deaktiviert, wenn die Größe 0 ist.",
"c_cpp.configuration.intelliSenseMemoryLimit.description": "Grenzwert für die Arbeitsspeicherauslastung in MB für einen IntelliSense-Prozess. Der Standardgrenzwert beträgt 4096 MB, der Höchstwert liegt bei 16 GB. Bei Überschreiten des Grenzwerts wird die Erweiterung heruntergefahren, und ein IntelliSense-Prozess wird neu gestartet.",
"c_cpp.configuration.intelliSenseUpdateDelay.description": "Steuert die Verzögerung in Millisekunden, bevor IntelliSense nach einer Änderung aktualisiert wird.",
"c_cpp.configuration.default.includePath.description": "Der Wert, der in einer Konfiguration verwendet werden soll, wenn \"includePath\" nicht in c_cpp_properties.json angegeben ist. Wenn \"includePath\" angegeben ist, fügen Sie dem Array \"${default}\" hinzu, um die Werte aus dieser Einstellung einzufügen.",
"c_cpp.configuration.default.defines.description": "Der Wert, der in einer Konfiguration verwendet werden soll, wenn \"defines\" nicht angegeben ist, oder die einzufügenden Werte, wenn \"${default}\" in \"defines\" vorhanden ist.",
"c_cpp.configuration.default.macFrameworkPath.description": "Der Wert, der in einer Konfiguration verwendet werden soll, wenn \"macFrameworkPath\" nicht angegeben ist, oder die einzufügenden Werte, wenn \"${default}\" in \"macFrameworkPath\" vorhanden ist.",
@@ -206,7 +208,7 @@
"c_cpp.debuggers.miDebuggerArgs.description": "Zusätzliche Argumente für den MI-Debugger (z. B. gdb).",
"c_cpp.debuggers.miDebuggerServerAddress.description": "Netzwerkadresse des MI-Debugger-Servers, mit dem eine Verbindung hergestellt werden soll (Beispiel: localhost:1234).",
"c_cpp.debuggers.stopAtEntry.description": "Optionaler Parameter. Wenn dieser Wert auf TRUE festgelegt ist, sollte der Debugger am Einstiegspunkt des Ziels anhalten. Wenn die processId übergeben wird, hat dies keine Auswirkungen.",
"c_cpp.debuggers.debugServerPath.description": "Optionaler vollständiger Pfad zum zu startenden Debugserver. Der Standardwert ist \"null\".",
"c_cpp.debuggers.debugServerPath.description": "Optionaler vollständiger Pfad zu dem Debugserver, der gestartet werden soll. Der Standardwert ist NULL. Dies wird in Verbindung mit \"miDebugServerAddress\" oder Ihrem eigenen Server mit \"customSetupCommand\" verwendet, auf dem \"-target-select remote <server:port>\" ausgeführt wird.",
"c_cpp.debuggers.debugServerArgs.description": "Optionale Debugserverargumente. Der Standardwert ist \"null\".",
"c_cpp.debuggers.serverStarted.description": "Optionales vom Server gestartetes Muster, nach dem in der Ausgabe des Debugservers gesucht wird. Der Standardwert ist \"null\".",
"c_cpp.debuggers.filterStdout.description": "stdout-Stream für ein vom Server gestartetes Muster suchen und stdout in der Debugausgabe protokollieren. Der Standardwert ist \"true\".",
@@ -224,5 +226,14 @@
"c_cpp.debuggers.symbolLoadInfo.description": "Explizite Steuerung des Symbolladevorgangs.",
"c_cpp.debuggers.symbolLoadInfo.loadAll.description": "Bei TRUE werden Symbole für alle Bibliotheken geladen, andernfalls werden keine solib-Symbole geladen. Der Standardwert ist TRUE.",
"c_cpp.debuggers.symbolLoadInfo.exceptionList.description": "Liste der Dateinamen (Platzhalter zulässig), durch Semikolons \";\" getrennt. Ändert das Verhalten von LoadAll. Wenn LoadAll auf TRUE festgelegt ist, werden keine Symbole für Bibliotheken geladen, die einem beliebigen Namen in der Liste entsprechen. Andernfalls werden nur Symbole für übereinstimmende Bibliotheken geladen. Beispiel: \"foo.so;bar.so\"",
"c_cpp.debuggers.requireExactSource.description": "Optionales Flag, um anzufordern, dass der aktuelle Quellcode mit der PDB-Datei übereinstimmt."
"c_cpp.debuggers.requireExactSource.description": "Optionales Flag, um anzufordern, dass der aktuelle Quellcode mit der PDB-Datei übereinstimmt.",
"c_cpp.taskDefinitions.name.description": "Der Name der Aufgabe",
"c_cpp.taskDefinitions.command.description": "Der Pfad zu einem Compiler oder einem Skript, über den/das die Kompilierung ausgeführt wird",
"c_cpp.taskDefinitions.args.description": "Zusätzliche Argumente, die an den Compiler oder das Kompilierungsskript übergeben werden sollen",
"c_cpp.taskDefinitions.options.description": "Zusätzliche Befehlsoptionen",
"c_cpp.taskDefinitions.options.cwd.description": "Das aktuelle Arbeitsverzeichnis des ausgeführten Programms oder Skripts. Wenn keine Angabe erfolgt, wird das aktuelle Arbeitsbereich-Stammverzeichnis des Codes verwendet.",
"c_cpp.taskDefinitions.detail.description": "Zusätzliche Details zur Aufgabe",
"c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.description": "Dies sind die Pfade zu denselben Quellstrukturen einmal aktuell und einmal zur Kompilierzeit. Im EditorPath gefundene Dateien werden zum Haltepunktabgleich dem CompileTimePath-Pfad zugeordnet. Bei der Anzeige von Speicherorten für die Stapelüberwachung erfolgt die Zuordnung vom CompileTimePath zum EditorPath.",
"c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.editorPath.description": "Der Pfad zur Quellstruktur, die vom Editor verwendet wird.",
"c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "FALSE, wenn dieser Eintrag nur für eine Stapelrahmen-Speicherortzuordnung verwendet wird. TRUE, wenn dieser Eintrag auch zum Angeben von Haltepunktpositionen verwendet werden soll."
}
@@ -17,6 +17,7 @@
"envfale.failed": "Fehler beim Verwenden von \"{0}\". Grund: {1}",
"replacing.sourcepath": "{0} \"{1}\" wird durch \"{2}\" ersetzt.",
"replacing.targetpath": "{0} \"{1}\" wird durch \"{2}\" ersetzt.",
"replacing.editorPath": "{0} \"{1}\" wird durch \"{2}\" ersetzt.",
"resolving.variables.in.sourcefilemap": "Variablen in \"{0}\" werden aufgelöst...",
"open.envfile": "{0} öffnen",
"unexpected.os": "Unerwarteter Betriebssystemtyp",
@@ -7,6 +7,6 @@
"build.and.debug.active.file": "Aktive Datei erstellen und debuggen",
"cannot.build.non.cpp": "Erstellen und Debuggen nicht möglich, da die aktive Datei keine C- oder C++-Quelldatei ist.",
"no.compiler.found": "Kein Compiler gefunden.",
"select.compiler": "Compiler auswählen",
"select.configuration": "Konfiguration auswählen",
"cl.exe.not.available": "{0}-Build und -Debuggen können nur verwendet werden, wenn VS Code von der Developer-Eingabeaufforderung für VS ausgeführt wird."
}
@@ -0,0 +1,9 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
// Do not edit this file. It is machine generated.
{
"invalid.identifier.for.rename": "Für den Vorgang zum Umbenennen eines Symbols wurde ein ungültiger Bezeichner angegeben.",
"unable.to.locate.selected.symbol": "Eine Definition für das ausgewählte Symbol wurde nicht gefunden."
}
@@ -5,8 +5,7 @@
// Do not edit this file. It is machine generated.
{
"c.cpp.debug.protocol": "C/C++-Debugprotokoll",
"invalid.identifier.for.rename": "Für den Vorgang zum Umbenennen eines Symbols wurde ein ungültiger Bezeichner angegeben.",
"unable.to.locate.selected.symbol": "Eine Definition für das ausgewählte Symbol wurde nicht gefunden.",
"c.cpp.warnings": "C/C++-Konfigurationswarnungen",
"unable.to.start": "Der C/C++-Sprachserver kann nicht gestartet werden. IntelliSense-Features werden deaktiviert. Fehler: {0}",
"check.permissions": "EPERM: Berechtigungen für \"{0}\" überprüfen",
"server.crashed2": "Der Sprachserver ist in den letzten 3 Minuten 5-mal abgestürzt. Er wird nicht neu gestartet.",
+1 -1
View File
@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
// Do not edit this file. It is machine generated.
{
"failed.to.parse.tasks": "Fehler beim Analysieren von \"tasks.json\", möglicherweise aufgrund von Kommentaren oder nachfolgenden Kommas.",
"failed.to.parse.json": "Fehler beim Analysieren der JSON-Datei, möglicherweise aufgrund von Kommentaren oder nachgestellten Kommas.",
"extension.not.ready": "Die C/C++-Erweiterung wird noch installiert. Weitere Informationen finden Sie im Ausgabefenster.",
"refer.read.me": "Informationen zur Problembehandlung finden Sie hier: {0}. Issues können hier erstellt werden: {1}.",
"process.exited.with.code": "\"{0}\" wurde mit Fehlercode \"{1}\" beendet.",
+31 -4
View File
@@ -92,8 +92,6 @@
"not_exited_yet": "Der Prozess wurde noch nicht beendet. Ruhezustand für {0} Millisekunden, anschließend wird der Vorgang wiederholt.",
"failed_to_spawn_process": "Fehler beim Erzeugen des Prozesses. Fehler: {0} ({1})",
"offering_completion": "Vervollständigung wird angeboten.",
"compiler_from_compiler_path": "Es wird versucht, Standardwerte vom Compiler in der Eigenschaft \"compilerPath\" abzurufen: {0}",
"compiler_from_compile_commands": "Es wird versucht, Standardwerte vom Compiler in der Datei \"compile_commands.json\" abzurufen: {0}",
"compiler_on_machine": "Es wird versucht, Standardwerte vom Compiler abzurufen, die auf dem Computer gefunden wurden: {0}",
"unable_to_resolve_include_path": "Der Includepfad \"{0}\" kann nicht aufgelöst werden.",
"error_searching_for_intellisense_client": "Fehler beim Suchen nach dem IntelliSense-Client: {0}",
@@ -147,7 +145,7 @@
"timed_out_attempting_to_communicate_with_process": "Timeout beim Versuch, mit dem Prozess zu kommunizieren.",
"process_failed_to_run": "Fehler beim Ausführen des Prozesses.",
"wsl_not_detected": "WSL nicht erkannt.",
"compiler_in_compilerpath_not_found": "Der Compiler in der compilerPath-Eigenschaft wurde nicht gefunden: {0}",
"compiler_in_compilerpath_not_found": "Der angegebene Compiler wurde nicht gefunden: {0}",
"config_data_invalid": "Konfigurationsdaten ungültig, {0}",
"cmake_executable_not_found": "Ausführbare CMake-Datei wurde unter \"{0}\" nicht gefunden.",
"no_args_provider": "Kein Anbieter für Argumente",
@@ -177,5 +175,34 @@
"deprecated_label": "Veraltet:",
"exceptions_label": "Ausnahmen:",
"template_parameters_label": "Vorlagenparameter:",
"compiler_probe_command_line": "Befehlszeile des Compilertests: {0}"
"compiler_probe_command_line": "Befehlszeile des Compilertests: {0}",
"c_compiler_from_compiler_path": "Es wird versucht, Standardwerte vom C-Compiler in der Eigenschaft \"compilerPath\" abzurufen: {0}",
"cpp_compiler_from_compiler_path": "Es wird versucht, Standardwerte vom C++-Compiler in der Eigenschaft \"compilerPath\" abzurufen: {0}",
"c_compiler_from_compile_commands": "Es wird versucht, Standardwerte vom C-Compiler in der Datei \"compile_commands.json\" abzurufen: {0}",
"cpp_compiler_from_compile_commands": "Es wird versucht, Standardwerte vom C++-Compiler in der Datei \"compile_commands.json\" abzurufen: {0}",
"c_intellisense_mode_changed": "Für C-Quelldateien wurde \"IntelliSenseMode\" von \"{0}\" in \"{1}\" geändert.",
"cpp_intellisense_mode_changed": "Für C++-Quelldateien wurde \"IntelliSenseMode\" von \"{0}\" in \"{1}\" geändert.",
"c_std_version_changed": "Für C-Quelldateien wurde \"cStandard\" von \"{0}\" in \"{1}\" geändert.",
"cpp_std_version_changed": "Für C++-Quelldateien wurde \"cppStandard\" von \"{0}\" in \"{1}\" geändert.",
"c_intellisense_mode_and_std_version_changed": "Für C-Quelldateien wurde \"IntelliSenseMode\" von \"{0}\" in \"{1}\" und \"cStandard\" von \"{2}\" in \"{3}\" geändert.",
"cpp_intellisense_mode_and_std_version_changed": "Für C++-Quelldateien wurde \"IntelliSenseMode\" von \"{0}\" in \"{1}\" und \"cppStandard\" von \"{2}\" in \"{3}\" geändert.",
"c_intellisense_mode_changed_with_path": "Für C-Quelldateien wurde \"IntelliSenseMode\" basierend auf Compilerargumenten und \"compilerPath\" von \"{0}\" in \"{1}\" geändert: \"{2}\"",
"cpp_intellisense_mode_changed_with_path": "Für C++-Quelldateien wurde \"IntelliSenseMode\" basierend auf Compilerargumenten und \"compilerPath\" von \"{0}\" in \"{1}\" geändert: \"{2}\"",
"c_std_version_changed_with_path": "Für C-Quelldateien wurde \"cStandard\" basierend auf Compilerargumenten und \"compilerPath\" von \"{0}\" in \"{1}\" geändert: \"{2}\"",
"cpp_std_version_changed_with_path": "Für C++-Quelldateien wurde \"cppStandard\" basierend auf Compilerargumenten und \"compilerPath\" von \"{0}\" in \"{1}\" geändert: \"{2}\"",
"c_intellisense_mode_and_std_version_changed_with_path": "Für C-Quelldateien wurde basierend auf Compilerargumenten und \"compilerPath\" der IntelliSenseMode-Wert von \"{0}\" in \"{1}\" und \"cStandard\" von \"{2}\" in \"{3}\" geändert: \"{4}\"",
"cpp_intellisense_mode_and_std_version_changed_with_path": "Für C++-Quelldateien wurde basierend auf Compilerargumenten und \"compilerPath\" der IntelliSenseMode-Wert von \"{0}\" in \"{1}\" und \"cppStandard\" von \"{2}\" in \"{3}\" geändert: \"{4}\"",
"compiler_path_changed": "Die Konfiguration mit compilerPath \"{0}\" kann nicht aufgelöst werden. Stattdessen wird \"{1}\" verwendet.",
"compiler_path_invalid": "Die Konfiguration mit compilerPath \"{0}\" kann nicht aufgelöst werden.",
"compiler_path_empty": "Der Compilertest wird aufgrund eines explizit leeren compilerPath-Werts übersprungen.",
"msvc_intellisense_specified": "Es wurde der MSVC-IntelliSenseMode angegeben. Der Compiler (cl.exe) wird konfiguriert.",
"unable_to_configure_cl_exe": "Der Compiler (cl.exe) kann nicht konfiguriert werden.",
"probing_compiler_default_target": "Das Standardziel des Compilers wird über die Befehlszeile getestet: \"{0}\" {1}",
"compiler_default_target": "Der Compiler hat den Standardzielwert zurückgegeben: {0}",
"c_probing_compiler_default_standard": "Der Compiler für den Standard-C-Sprachstandard wird über die Befehlszeile getestet: {0}",
"cpp_probing_compiler_default_standard": "Der Compiler für den Standard-C++-Sprachstandard wird über die Befehlszeile getestet: {0}",
"detected_language_standard_version": "Erkannte Sprachstandardversion: {0}",
"unhandled_default_target_detected": "Unbehandelter Standardzielwert für Compiler erkannt: {0}",
"unhandled_target_arg_detected": "Unbehandelter Zielargumentwert erkannt: {0}",
"memory_limit_shutting_down_intellisense": "IntelliSense-Server wird heruntergefahren: {0}. Die Arbeitsspeicherauslastung beträgt {1} MB und hat das Limit von {2} MB überschritten."
}
@@ -11,7 +11,7 @@
"switch.to.json": "Wechseln Sie zur {0}-Datei, indem Sie auf den Link klicken oder diesen Befehl verwenden:",
"edit.configurations.in.json": "Konfigurationen in JSON-Datei bearbeiten",
"edit.configurations.json": "C/C++: Konfigurationen bearbeiten (JSON)",
"check.the.schema": "Unter \"{0}\" erhalten Sie weitere Informationen zu den C-/C++-Eigenschaften.",
"check.the.schema": "Weitere Informationen zu den C-/C++-Eigenschaften finden Sie unter {0}.",
"view.schema.reference": "Referenz zu Eigenschaftsschemas",
"intellisense.configurations": "IntelliSense-Konfigurationen",
"intellisense.configurations.description": "Verwenden Sie diesen Editor zum Bearbeiten von IntelliSense-Einstellungen, die in der zugrunde liegenden Datei \"{0}\" definiert sind. In diesem Editor vorgenommene Änderungen gelten nur für die ausgewählte Konfiguration. Um mehrere Konfigurationen gleichzeitig zu bearbeiten, wechseln Sie zu \"{1}\".",
+57 -46
View File
@@ -23,55 +23,55 @@
"c_cpp.command.vcpkgClipboardInstallSuggested.title": "Copiar el comando vcpkg install en el Portapapeles",
"c_cpp.command.vcpkgOnlineHelpSuggested.title": "Visitar la página de ayuda de vcpkg",
"c_cpp.configuration.formatting.description": "Configura el motor de formato",
"c_cpp.configuration.formatting.clangFormat.description": "clang-format se usará para formatear el código",
"c_cpp.configuration.formatting.clangFormat.description": "El archivo clang-format se usará para formatear el código.",
"c_cpp.configuration.formatting.vcFormat.description": "El motor de formato de Visual C++ se usará para formatear el código.",
"c_cpp.configuration.formatting.Default.description": "clang-format se usará para formatear el código",
"c_cpp.configuration.formatting.Default.description": "El archivo clang-format se usará para formatear el código.",
"c_cpp.configuration.formatting.Disabled.description": "El formato del código se deshabilitará.",
"c_cpp.configuration.vcFormat.indent.braces.description": "Se aplica a las llaves la sangría especificada en la configuración de Editor: Tamaño de tabulación.",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.description": "Aplicar sangría a las líneas nuevas en relación a:",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.outermostParenthesis.description": "el paréntesis de apertura externo",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.innermostParenthesis.description": "el paréntesis de apertura interno",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.statementBegin.description": "el principio de la instrucción actual",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.description": "Determina en relación con qué se aplica la sangría de línea nueva.",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.outermostParenthesis.description": "Aplica sangría a la nueva línea en relación con el paréntesis de apertura más externo.",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.innermostParenthesis.description": "Aplica sangría a la nueva línea en relación con el paréntesis de apertura más interno.",
"c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.statementBegin.description": "Aplica sangría a la nueva línea en relación con el principio de la instrucción actual.",
"c_cpp.configuration.vcFormat.indent.withinParentheses.description": "Al escribirse una línea nueva, se alinea bajo el paréntesis de apertura o en función del valor \"C_Cpp.vcFormat.indent.multiLineRelativeTo\".",
"c_cpp.configuration.vcFormat.indent.withinParentheses.alignToParenthesis.description": "La línea nueva se alinea bajo el paréntesis de apertura.",
"c_cpp.configuration.vcFormat.indent.withinParentheses.indent.description": "Se aplica sangría a la línea nueva en función del valor \"C_Cpp.vcFormat.indent.multiLineRelativeTo\".",
"c_cpp.configuration.vcFormat.indent.preserveWithinParentheses.description": "En el código existente, conserve la alineación de sangría existente de las líneas nuevas entre paréntesis.",
"c_cpp.configuration.vcFormat.indent.caseLabels.description": "Se aplica sangría a las etiquetas en relación con las instrucciones switch, según lo especificado en la configuración de Editor: Tamaño de tabulación.",
"c_cpp.configuration.vcFormat.indent.caseContents.description": "Se aplica sangría al código incluido en \"case\" en relación con su etiqueta, según lo especificado en la configuración de Editor: Tamaño de tabulación.",
"c_cpp.configuration.vcFormat.indent.caseContents.description": "Se aplica sangría al código incluido en el bloque case en relación con su etiqueta, según lo especificado en la configuración de Editor: Tamaño de tabulación.",
"c_cpp.configuration.vcFormat.indent.caseContentsWhenBlock.description": "Se aplica sangría a las llaves siguiendo una instrucción Case, según lo especificado en la configuración de Editor: Tamaño de tabulación.",
"c_cpp.configuration.vcFormat.indent.lambdaBracesWhenParameter.description": "Se aplica sangría a las llaves de expresiones lambda usadas como parámetros de función en relación con el inicio de la instrucción, según lo especificado en la configuración de Editor: Tamaño de tabulación.",
"c_cpp.configuration.vcFormat.indent.gotoLabels.description": "La posición de las etiquetas goto",
"c_cpp.configuration.vcFormat.indent.gotoLabels.oneLeft.description": "a la izquierda de la sangría de código actual, según la cantidad especificada en la configuración del Editor: Tamaño de tabulación",
"c_cpp.configuration.vcFormat.indent.gotoLabels.leftmostColumn.description": "al borde izquierdo del código",
"c_cpp.configuration.vcFormat.indent.gotoLabels.none.description": "las etiquetas goto no se formatearán",
"c_cpp.configuration.vcFormat.indent.gotoLabels.oneLeft.description": "Coloca las etiquetas goto a la izquierda de la sangría de código actual, según la cantidad especificada en la configuración del Editor: Tamaño de tabulación.",
"c_cpp.configuration.vcFormat.indent.gotoLabels.leftmostColumn.description": "Coloca las etiquetas goto en el borde izquierdo del código.",
"c_cpp.configuration.vcFormat.indent.gotoLabels.none.description": "Las etiquetas Goto no se formatearán.",
"c_cpp.configuration.vcFormat.indent.preprocessor.description": "La posición de las directivas de preprocesador",
"c_cpp.configuration.vcFormat.indent.preprocessor.oneLeft.description": "a la izquierda de la sangría de código actual, según la cantidad especificada en la configuración del Editor: Tamaño de tabulación",
"c_cpp.configuration.vcFormat.indent.preprocessor.leftmostColumn.description": "al borde izquierdo del código",
"c_cpp.configuration.vcFormat.indent.preprocessor.none.description": "las directivas de preprocesador no se formatearán",
"c_cpp.configuration.vcFormat.indent.preprocessor.oneLeft.description": "Las directivas de preprocesador se colocan a la izquierda de la sangría de código actual, según la cantidad especificada en la configuración del Editor: Tamaño de tabulación.",
"c_cpp.configuration.vcFormat.indent.preprocessor.leftmostColumn.description": "Las directivas de preprocesador se colocan en el borde izquierdo del código.",
"c_cpp.configuration.vcFormat.indent.preprocessor.none.description": "Las directivas de preprocesador no se formatearán.",
"c_cpp.configuration.vcFormat.indent.accessSpecifiers.description": "Se aplica sangría a los especificadores de acceso en relación con las definiciones de clase o struct, según lo especificado en la configuración de Editor: Tamaño de tabulación.",
"c_cpp.configuration.vcFormat.indent.namespaceContents.description": "Se aplica sangría al código en relación con su espacio de nombres envolvente, según lo especificado en la configuración de Editor: Tamaño de tabulación.",
"c_cpp.configuration.vcFormat.indent.preserveComment.description": "La sangría de los comentarios no se cambia durante la operación de formato",
"c_cpp.configuration.vcFormat.indent.preserveComments.description": "La sangría de los comentarios no se cambia durante las operaciones de formato.",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.namespace.description": "La posición de las llaves de apertura para los espacios de nombres",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.type.description": "La posición de las llaves de apertura para las definiciones de tipo",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.lambda.description": "La posición de las llaves de apertura para las funciones lambda",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.function.description": "La posición de las llaves de apertura para las funciones",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.block.description": "La posición de las llaves de apertura de los bloques de control",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.newLine.description": "las llaves de apertura se mueven a una nueva línea",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.sameLine.description": "las llaves de apertura se mantienen en la misma línea y se agrega un espacio delante de cada una",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.ignore.description": "las llaves de apertura no tienen formato",
"c_cpp.configuration.vcFormat.newLine.scopeBracesOnSeparateLines.description": "Coloca llaves de apertura y de cierre para los ámbitos en líneas separadas.",
"c_cpp.configuration.vcFormat.newLine.closeBraceSameLine.emptyType.description": "Para los tipos vacíos, mover las llaves de cierre a la misma línea que las de apertura",
"c_cpp.configuration.vcFormat.newLine.closeBraceSameLine.emptyFunction.description": "Para los cuerpos de función vacíos, mover las llaves de cierre a la misma línea que las de apertura",
"c_cpp.configuration.vcFormat.newLine.beforeCatch.description": "Colocar 'catch' y palabras clave similares en una nueva línea",
"c_cpp.configuration.vcFormat.newLine.beforeElse.description": "Colocar 'else' en una nueva línea",
"c_cpp.configuration.vcFormat.newLine.beforeWhileInDoWhile.description": "Colocar 'while' de un bucle do-while en una nueva línea",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.newLine.description": "Las llaves de apertura se mueven a una nueva línea.",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.sameLine.description": "Las llaves de apertura se mantienen en la misma línea y se agrega un espacio delante de cada una.",
"c_cpp.configuration.vcFormat.newLine.beforeOpenBrace.ignore.description": "Las llaves de apertura no tienen formato.",
"c_cpp.configuration.vcFormat.newLine.scopeBracesOnSeparateLines.description": "Coloca las llaves de apertura y de cierre para los ámbitos en líneas separadas.",
"c_cpp.configuration.vcFormat.newLine.closeBraceSameLine.emptyType.description": "Para los tipos vacíos, mueve las llaves de cierre a la misma línea que las de apertura.",
"c_cpp.configuration.vcFormat.newLine.closeBraceSameLine.emptyFunction.description": "Para los cuerpos de función vacíos, mueve las llaves de cierre a la misma línea que las de apertura.",
"c_cpp.configuration.vcFormat.newLine.beforeCatch.description": "Coloca \"catch\" y palabras clave similares en una línea nueva.",
"c_cpp.configuration.vcFormat.newLine.beforeElse.description": "Coloca \"else\" en una línea nueva.",
"c_cpp.configuration.vcFormat.newLine.beforeWhileInDoWhile.description": "Coloca \"while\" de un bucle do-while en una línea nueva.",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.description": "Espaciado entre nombres de funciones y paréntesis de apertura de listas de argumentos",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.insert.description": "agregar un espacio delante del paréntesis de apertura de una función",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.remove.description": "se quitan los espacios que están delante del paréntesis de apertura de una función",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.ignore.description": "los espacios se dejan tal como se insertan",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.insert.description": "Agrega un espacio delante del paréntesis de apertura de una función.",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.remove.description": "Se quitan los espacios que están delante del paréntesis de apertura de una función.",
"c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.ignore.description": "Los espacios se dejan tal como se insertan.",
"c_cpp.configuration.vcFormat.space.withinParameterListParentheses.description": "Se agrega un espacio después del paréntesis de apertura y también antes del paréntesis de cierre de las listas de parámetros de función.",
"c_cpp.configuration.vcFormat.space.betweenEmptyParameterListParentheses.description": "Cuando una lista de parámetros de función está vacía, se inserta un espacio entre los paréntesis de esta.",
"c_cpp.configuration.vcFormat.space.afterKeywordsInControlFlowStatements.description": "Se agrega un espacio entre palabra clave y paréntesis de apertura en instrucciones de flujo de control.",
"c_cpp.configuration.vcFormat.space.afterKeywordsInControlFlowStatements.description": "Se agrega un espacio entre la palabra clave y el paréntesis de apertura en las instrucciones de flujo de control.",
"c_cpp.configuration.vcFormat.space.withinControlFlowStatementParentheses.description": "Se agrega un espacio después del paréntesis de apertura y también antes del paréntesis de cierre de las instrucciones de flujo de control.",
"c_cpp.configuration.vcFormat.space.beforeLambdaOpenParenthesis.description": "Se agrega un espacio delante del paréntesis de apertura de las listas de argumentos lambda.",
"c_cpp.configuration.vcFormat.space.withinCastParentheses.description": "Se agrega un espacio después del paréntesis de apertura y también antes del paréntesis de cierre de una conversión de estilo de C.",
@@ -79,8 +79,8 @@
"c_cpp.configuration.vcFormat.space.withinExpressionParentheses.description": "Se agrega un espacio después del paréntesis de apertura y también antes del paréntesis de cierre de una expresión entre paréntesis.",
"c_cpp.configuration.vcFormat.space.beforeBlockOpenBrace.description": "Se agrega un espacio delante de las llaves de apertura de los bloques de ámbito.",
"c_cpp.configuration.vcFormat.space.betweenEmptyBraces.description": "Cuando las llaves están vacías y en la misma línea, se inserta un espacio entre ellas.",
"c_cpp.configuration.vcFormat.space.beforeInitializerListOpenBrace.description": "Se agrega un espacio delante de la llave de apertura de las listas uniformes de inicialización y del inicializador.",
"c_cpp.configuration.vcFormat.space.withinInitializerListBraces.description": "Se agrega un espacio después de la llave de apertura y también antes de la llave de cierre de las listas uniformes de inicialización y del inicializador.",
"c_cpp.configuration.vcFormat.space.beforeInitializerListOpenBrace.description": "Se agrega un espacio delante de la llave de apertura de inicialización uniforme y las listas de inicializadores.",
"c_cpp.configuration.vcFormat.space.withinInitializerListBraces.description": "Se agrega un espacio después de la llave de apertura y también antes de la llave de cierre de las listas de inicializadores e inicialización uniforme.",
"c_cpp.configuration.vcFormat.space.preserveInInitializerList.description": "Los espacios alrededor de las comas se mantienen en la inicialización uniforme y las listas de inicializadores.",
"c_cpp.configuration.vcFormat.space.beforeOpenSquareBracket.description": "Se agrega un espacio delante de los corchetes de apertura.",
"c_cpp.configuration.vcFormat.space.withinSquareBrackets.description": "Se agrega un espacio después del corchete de apertura y también antes del corchete de cierre.",
@@ -91,27 +91,27 @@
"c_cpp.configuration.vcFormat.space.betweenEmptyLambdaBrackets.description": "Cuando los corchetes están vacíos, se inserta un espacio entre ellos.",
"c_cpp.configuration.vcFormat.space.beforeComma.description": "Se agrega un espacio delante de cada coma.",
"c_cpp.configuration.vcFormat.space.afterComma.description": "Se agrega un espacio después de cada coma.",
"c_cpp.configuration.vcFormat.space.removeAroundMemberOperators.description": "Se quitan los espacios alrededor de los operadores de acceso a miembros, operadores de puntero a miembro y operadores de resolución de ámbito.",
"c_cpp.configuration.vcFormat.space.beforeInheritanceColon.description": "Se agrega un espacio antes de los dos puntos para los tipos heredados en las definiciones de clase",
"c_cpp.configuration.vcFormat.space.beforeConstructorColon.description": "Se agrega un espacio antes de los dos puntos en las definiciones de constructor.",
"c_cpp.configuration.vcFormat.space.removeAroundMemberOperators.description": "Se quitan los espacios alrededor de los operadores de acceso a miembros, los operadores de puntero a miembro y los operadores de resolución de ámbito.",
"c_cpp.configuration.vcFormat.space.beforeInheritanceColon.description": "Se agrega un espacio delante de los dos puntos para los tipos heredados en las definiciones de clase.",
"c_cpp.configuration.vcFormat.space.beforeConstructorColon.description": "Se agrega un espacio delante de los dos puntos en las definiciones de constructor.",
"c_cpp.configuration.vcFormat.space.removeBeforeSemicolon.description": "Se quitan los espacios delante de cada punto y coma.",
"c_cpp.configuration.vcFormat.space.insertAfterSemicolon.description": "Se inserta un espacio después de cada punto y coma.",
"c_cpp.configuration.vcFormat.space.removeAroundUnaryOperator.description": "Se quitan los espacios entre los operadores unarios y los operandos.",
"c_cpp.configuration.vcFormat.space.aroundBinaryOperator.description": "Espacios alrededor de los operadores binarios",
"c_cpp.configuration.vcFormat.space.aroundAssignmentOperator.description": "Espacios alrededor de los operadores de asignación",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.description": "Espacios alrededor de los operadores de puntero y de referencia",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.left.description": "los operadores de puntero y de referencia se alinean a la izquierda",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.center.description": "los operadores de puntero y de referencia se centran",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.right.description": "los operadores de puntero y de referencia se alinean a la derecha",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.ignore.description": "los operadores de puntero y de referencia no tienen formato",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.left.description": "Los operadores de puntero y de referencia se alinean a la izquierda.",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.center.description": "Los operadores de puntero y de referencia se centran.",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.right.description": "Los operadores de puntero y de referencia se alinean a la derecha.",
"c_cpp.configuration.vcFormat.space.pointerReferenceAlignment.ignore.description": "Los operadores de puntero y de referencia no tienen formato.",
"c_cpp.configuration.vcFormat.space.aroundTernaryOperator.description": "Espacios alrededor de los operadores condicionales",
"c_cpp.configuration.vcFormat.space.aroundOperators.insert.description": "se agrega un espacio delante del operador y también después de este",
"c_cpp.configuration.vcFormat.space.aroundOperators.remove.description": "se quitan los espacios delante y detrás del operador",
"c_cpp.configuration.vcFormat.space.aroundOperators.ignore.description": "los espacios se dejan tal como se insertan",
"c_cpp.configuration.vcFormat.space.aroundOperators.insert.description": "Se agrega un espacio delante de operador y también después de este.",
"c_cpp.configuration.vcFormat.space.aroundOperators.remove.description": "Se quitan los espacios delante y detrás del operador.",
"c_cpp.configuration.vcFormat.space.aroundOperators.ignore.description": "Los espacios se dejan tal como se insertan.",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.description": "Opciones de ajuste para bloques",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.oneLiners.description": "un bloque de código completo que se escribe en una línea se mantiene en una sola línea, independientemente de cualquiera de los valores de formato de VC: Nueva línea",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.allOneLineScopes.description": "cualquier código en el que la llave de apertura y de cierre se escriba en una línea se mantiene en una sola línea, independientemente de cualquiera de los valores de formato de VC: Nueva línea",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.never.description": "siempre se da formato a los bloques de código de acuerdo con los valores de formato de VC: Nueva línea",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.oneLiners.description": "Un bloque de código completo que se escribe en una línea se mantiene en una sola línea, independientemente de cualquiera de los valores de formato de VC: Nueva línea.",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.allOneLineScopes.description": "Cualquier código en el que la llave de apertura y de cierre se escriba en una línea se mantiene en una sola línea, independientemente de cualquiera de los valores de formato de VC: Nueva línea",
"c_cpp.configuration.vcFormat.wrap.preserveBlocks.never.description": "Siempre se da formato a los bloques de código de acuerdo con los valores de formato de VC: Nueva línea",
"c_cpp.configuration.clang_format_path.description": "Ruta de acceso completa del archivo ejecutable clang-format. Si no se especifica y clang-format está disponible en la ruta de acceso del entorno, se usa este. Si no se encuentra en la ruta de acceso del entorno, se usará una copia de clang-format incluida con la extensión.",
"c_cpp.configuration.clang_format_style.description": "Estilo de codificación. Actualmente, admite: Visual Studio, LLVM, Google, Chromium, Mozilla, WebKit. Use \"file\" para cargar el estilo de un archivo .clang-format en el directorio actual o primario. Use {clave: valor,...} para establecer parámetros específicos. Por ejemplo, el estilo de \"Visual Studio\" es similar a: { BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4, NamespaceIndentation: All }",
"c_cpp.configuration.clang_format_fallbackStyle.description": "Nombre del estilo predefinido que se usa como elemento Fallback en el caso de que se invoque a clang-format con el estilo \"file\" y no se encuentre el archivo .clang-format. Los valores posibles son Visual Studio, LLVM, Google, Chromium, Mozilla, WebKit, ninguno o usar {clave: valor,...} para establecer parámetros específicos. Por ejemplo, el estilo \"Visual Studio\" es similar a: { BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4 }",
@@ -127,7 +127,7 @@
"c_cpp.configuration.loggingLevel.description": "Nivel de detalle del registro en el panel de salida. El orden de los niveles de menos detallado a más detallado es: None < Error < Warning < Information < Debug.",
"c_cpp.configuration.autoAddFileAssociations.description": "Controla si los archivos se agregan automáticamente a files.associations cuando son el destino de una operación de navegación desde un archivo de C/C++.",
"c_cpp.configuration.workspaceParsingPriority.description": "Controla si el análisis de los archivos de área de trabajo no activos los pone en suspensión para evitar el uso del 100 % de la CPU. Los valores highest/high/medium/low corresponden a un uso de la CPU aproximado del 100 %, 75 %, 50 % y 25 % respectivamente.",
"c_cpp.configuration.workspaceSymbols.description": "Símbolos que se incluirán en los resultados de la consulta cuando se invoque \"Ir al símbolo en el área de trabajo\"",
"c_cpp.configuration.workspaceSymbols.description": "Símbolos que se incluirán en los resultados de la consulta cuando se invoque \"Ir al símbolo en el área de trabajo\".",
"c_cpp.configuration.exclusionPolicy.description": "Indica a la extensión cuándo debe usarse la configuración \"files.exclude\" para determinar qué archivos deben agregarse a la base de datos de navegación del código mientras se recorren las rutas de acceso de la matriz \"browse.path\". \"checkFolders\" indica que los filtros de exclusión solo se evaluarán una vez por carpeta (no se comprueban los archivos individuales). \"checkFilesAndFolders\" indica que los filtros de exclusión se evaluarán en todas las carpetas y los archivos encontrados. Si \"files.exclude\" solo contiene carpetas, entonces \"checkFolders\" es la mejor opción y aumentará la velocidad con la que la extensión puede inicializar la base de datos de navegación del código.",
"c_cpp.configuration.preferredPathSeparator.description": "Carácter usado como separador de ruta de acceso para los resultados de finalización automática de instrucciones #include.",
"c_cpp.configuration.simplifyStructuredComments.description": "Si es verdadero, la información sobre herramientas al mantener el puntero y autocompletar solo mostrará ciertas etiquetas de comentarios estructurados. De lo contrario, se muestran todos los comentarios.",
@@ -137,7 +137,9 @@
"c_cpp.configuration.commentContinuationPatterns.description": "Define el comportamiento del editor para cuando se presiona la tecla Entrar dentro de un bloque de comentario de una o varias líneas.",
"c_cpp.configuration.configurationWarnings.description": "Determina si se muestran notificaciones emergentes cuando una extensión del proveedor de configuración no puede proporcionar una configuración para un archivo de código fuente.",
"c_cpp.configuration.intelliSenseCachePath.description": "Define la ruta de acceso de la carpeta para los encabezados precompilados almacenados en caché que usa IntelliSense. La ruta de acceso de caché predeterminada es \"%LocalAppData%/Microsoft/vscode-cpptools\" en Windows, \"$XDG_CACHE_HOME/vscode-cpptools/\" en Linux (o \"$HOME/.cache/vscode-cpptools\" si XDG_CACHE_HOME no se ha definido) y \"$HOME/Library/Caches/vscode-cpptools/\" en Mac. La ruta de acceso predeterminada se utiliza si no se especifica ninguna ruta de acceso o se especifica una que no es válida.",
"c_cpp.configuration.intelliSenseCacheSize.description": "Tamaño máximo del espacio del disco duro por área de trabajo en megabytes para los encabezados precompilados almacenados en caché. El uso real puede fluctuar en torno a este valor. El tamaño predeterminado es 5120 MB. El almacenamiento en caché de encabezados precompilados está deshabilitado cuando el tamaño es 0.",
"c_cpp.configuration.intelliSenseCacheSize.description": "Tamaño máximo del espacio del disco duro por área de trabajo en megabytes (MB) para los encabezados precompilados almacenados en caché. El uso real puede fluctuar en torno a este valor. El tamaño predeterminado es 5120 MB. El almacenamiento en caché de encabezados precompilados está deshabilitado cuando el tamaño es 0.",
"c_cpp.configuration.intelliSenseMemoryLimit.description": "Límite de uso de memoria en megabytes (MB) de un proceso de IntelliSense. El límite predeterminado es de 4096 MB y el límite máximo es de 16 GB. La extensión se cerrará y reiniciará un proceso de IntelliSense cuando supere el límite.",
"c_cpp.configuration.intelliSenseUpdateDelay.description": "Controla el retraso en milisegundos antes de que IntelliSense inicie la actualización después de una modificación.",
"c_cpp.configuration.default.includePath.description": "Valor que se va a usar en una configuración si \"includePath\" no se especifica en c_cpp_properties.json. Si se especifica \"includePath\", agregue \"${default}\" a la matriz para insertar los valores de esta configuración.",
"c_cpp.configuration.default.defines.description": "Valor que debe usarse en una configuración si no se especifica \"defines\", o bien los valores que se deben insertar si se especifica \"${default}\" en \"defines\".",
"c_cpp.configuration.default.macFrameworkPath.description": "Valor que debe usarse en una configuración si no se especifica \"macFrameworkPath\", o bien los valores que deben insertarse si se especifica \"${default}\" en \"macFrameworkPath\".",
@@ -206,7 +208,7 @@
"c_cpp.debuggers.miDebuggerArgs.description": "Argumentos adicionales para el depurador MI (como gdb).",
"c_cpp.debuggers.miDebuggerServerAddress.description": "Dirección de red del servidor del depurador MI al que debe conectarse (ejemplo: localhost:1234).",
"c_cpp.debuggers.stopAtEntry.description": "Parámetro opcional. Si se establece en true, el depurador debe detenerse en el punto de entrada del destino. Si se pasa processId, no tiene efecto.",
"c_cpp.debuggers.debugServerPath.description": "Ruta de acceso completa opcional al servidor de depuración que se va a iniciar. El valor predeterminado es NULL.",
"c_cpp.debuggers.debugServerPath.description": "Ruta de acceso completa opcional al servidor de depuración que se va a iniciar. El valor predeterminado es NULL. Se usa junto con \"miDebugServerAddress\" o su servidor propio con un comando \"customSetupCommand\" que ejecuta \"-target-select remote <server:port>\".",
"c_cpp.debuggers.debugServerArgs.description": "Argumentos opcionales del servidor de depuración. El valor predeterminado es NULL.",
"c_cpp.debuggers.serverStarted.description": "Patrón opcional iniciado por el servidor que debe buscarse en la salida del servidor de depuración. El valor predeterminado es NULL.",
"c_cpp.debuggers.filterStdout.description": "Busca la secuencia stdout para el patrón iniciado por el servidor y registra stdout en la salida de depuración. El valor predeterminado es true.",
@@ -224,5 +226,14 @@
"c_cpp.debuggers.symbolLoadInfo.description": "Control explícito de la carga de símbolos.",
"c_cpp.debuggers.symbolLoadInfo.loadAll.description": "Si es true, se cargan los símbolos de todas las bibliotecas; de lo contrario, no se cargará ningún símbolo de la biblioteca compartida (solib). El valor predeterminado es true.",
"c_cpp.debuggers.symbolLoadInfo.exceptionList.description": "Lista de nombres de archivo (se permiten comodines) separados por punto y coma \";\". Modifica el comportamiento de LoadAll. Si LoadAll es true, no se cargan los símbolos para las bibliotecas que coincidan con cualquier nombre de la lista. De lo contrario, solo se cargan los símbolos para las bibliotecas que coincidan. Ejemplo: \"foo.so;bar.so\"",
"c_cpp.debuggers.requireExactSource.description": "Marca opcional que requiere que el código fuente actual coincida con el archivo PDB."
"c_cpp.debuggers.requireExactSource.description": "Marca opcional que requiere que el código fuente actual coincida con el archivo PDB.",
"c_cpp.taskDefinitions.name.description": "Nombre de la tarea",
"c_cpp.taskDefinitions.command.description": "Ruta de acceso a un compilador o script que realiza la compilación.",
"c_cpp.taskDefinitions.args.description": "Argumentos adicionales que se pasan al compilador o al script de compilación",
"c_cpp.taskDefinitions.options.description": "Opciones de comando adicionales",
"c_cpp.taskDefinitions.options.cwd.description": "Directorio de trabajo actual del script o el programa ejecutado. Si se omite, se usa la raíz del área de trabajo actual de Code.",
"c_cpp.taskDefinitions.detail.description": "Detalles adicionales de la tarea",
"c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.description": "Rutas de acceso actuales y en tiempo de compilación a los mismos árboles de origen. Los archivos que se encuentran en EditorPath se asignan a la ruta de acceso CompileTimePath para la coincidencia de los puntos de interrupción y se asignan de CompileTimePath a EditorPath al mostrar ubicaciones de seguimiento de la pila.",
"c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.editorPath.description": "La ruta de acceso al árbol de origen que el editor va a usar.",
"c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "False si la entrada solo se usa para la asignación de ubicación del marco de pila. True si la entrada debe usarse también al especificar ubicaciones de los puntos de interrupción."
}
@@ -17,6 +17,7 @@
"envfale.failed": "No se pudo usar {0}. Motivo: {1}",
"replacing.sourcepath": "Reemplazando {0} \"{1}\" por \"{2}\".",
"replacing.targetpath": "Reemplazando {0} \"{1}\" por \"{2}\".",
"replacing.editorPath": "Reemplazando el {0} \"{1}\" por \"{2}\".",
"resolving.variables.in.sourcefilemap": "Resolviendo las variables de {0}...",
"open.envfile": "Abrir {0}",
"unexpected.os": "Tipo de sistema operativo no esperado",
@@ -7,6 +7,6 @@
"build.and.debug.active.file": "Compilar y depurar el archivo activo",
"cannot.build.non.cpp": "No se puede compilar y depurar código porque el archivo activo no es un archivo de código fuente de C o C++.",
"no.compiler.found": "No se encontró ningún compilador",
"select.compiler": "Seleccione un compilador",
"select.configuration": "Seleccionar una configuración",
"cl.exe.not.available": "La compilación y depuración de {0} solo se puede usar cuando VS Code se ejecuta desde el Símbolo del sistema para desarrolladores de Visual Studio."
}
@@ -0,0 +1,9 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
// Do not edit this file. It is machine generated.
{
"invalid.identifier.for.rename": "Se ha proporcionado un identificador no válido para la operación Cambiar el nombre del símbolo.",
"unable.to.locate.selected.symbol": "No se encontró una definición para el símbolo seleccionado."
}
@@ -5,8 +5,7 @@
// Do not edit this file. It is machine generated.
{
"c.cpp.debug.protocol": "Protocolo de depuración de C/C++",
"invalid.identifier.for.rename": "Se ha proporcionado un identificador no válido para la operación Cambiar el nombre del símbolo.",
"unable.to.locate.selected.symbol": "No se encontró una definición para el símbolo seleccionado.",
"c.cpp.warnings": "Advertencias de configuración de C/C++",
"unable.to.start": "No se puede iniciar el servidor de lenguaje de C/C++. Las características de IntelliSense se deshabilitarán. Error: {0}",
"check.permissions": "EPERM: Compruebe los permisos de \"{0}\"",
"server.crashed2": "El servidor de lenguaje se ha bloqueado cinco veces en los tres últimos minutos. No se reiniciará.",

Some files were not shown because too many files have changed in this diff Show More