From af6a56ff5a894b2d70b7385203ec6cc840455bd8 Mon Sep 17 00:00:00 2001 From: csigs Date: Wed, 8 Dec 2021 15:53:35 -0800 Subject: [PATCH 01/16] [Auto] Localization - Translated Strings (#8466) --- Extension/i18n/chs/package.i18n.json | 24 +++++-- Extension/i18n/cht/package.i18n.json | 24 +++++-- Extension/i18n/csy/package.i18n.json | 46 +++++++++----- .../c_cpp_properties.schema.json.i18n.json | 2 +- Extension/i18n/deu/package.i18n.json | 62 ++++++++++++------- .../c_cpp_properties.schema.json.i18n.json | 2 +- Extension/i18n/esn/package.i18n.json | 62 ++++++++++++------- Extension/i18n/fra/package.i18n.json | 54 ++++++++++------ Extension/i18n/ita/package.i18n.json | 28 ++++++--- Extension/i18n/jpn/package.i18n.json | 58 ++++++++++------- Extension/i18n/kor/package.i18n.json | 30 ++++++--- Extension/i18n/plk/package.i18n.json | 22 +++++-- Extension/i18n/ptb/package.i18n.json | 54 ++++++++++------ .../c_cpp_properties.schema.json.i18n.json | 2 +- Extension/i18n/rus/package.i18n.json | 26 ++++++-- Extension/i18n/trk/package.i18n.json | 24 +++++-- Extension/package.nls.json | 2 +- 17 files changed, 352 insertions(+), 170 deletions(-) diff --git a/Extension/i18n/chs/package.i18n.json b/Extension/i18n/chs/package.i18n.json index 371a091d1d..434dce6483 100644 --- a/Extension/i18n/chs/package.i18n.json +++ b/Extension/i18n/chs/package.i18n.json @@ -34,12 +34,12 @@ "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "用于语言服务处理的最大并发线程数。该值是一个提示,且不能始终使用。默认值 `null` (空)使用可用的逻辑处理器数。", "c_cpp.configuration.maxCachedProcesses.markdownDescription": "用于语言服务处理的最大缓存进程数。默认值 `null` (空)使用可用逻辑处理器数的两倍。", "c_cpp.configuration.maxMemory.markdownDescription": "可用于语言服务处理的最大内存(以 MB 为单位)。超过此内存使用量后,将缓存且并发运行较少的进程。默认值 `null` (空)使用系统的空闲内存。", - "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "要继续运行的最大 IntelliSense 进程数。默认值 `null` (空)使用从 `#C_Cpp.maxCachedProcesses#` 继承的值", + "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "要继续运行的最大 IntelliSense 进程数。默认值 `null` (空)使用从 `#C_Cpp.maxCachedProcesses#` 继承的值。", "c_cpp.configuration.intelliSense.maxMemory.markdownDescription": "超过此内存使用量(以 MB 为单位)后,在创建新进程之前,旧的 IntelliSense 进程将关闭。默认值 `null` (空)使用从 `#C_Cpp.maxMemory#` 继承的值。", "c_cpp.configuration.references.maxConcurrentThreads.markdownDescription": "用于“查找所有引用”和“重命名”的最大并发线程数。默认值 `null` (空)使用从 `#C_Cpp.maxConcurrentThreads#` 继承的值。", - "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "要为“查找所有引用”和“重命名”保留在内存中的最大进程数。`null` (空)的值使用从 `#C_Cpp.maxCachedProcesses#` 继承的值", + "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "“查找所有引用”和“重命名”的要保留在内存中的最大进程数。默认值 `0` 将禁用此功能。值为 `null` (空)则使用从 `#C_Cpp.maxCachedProcesses#` 继承的值。", "c_cpp.configuration.references.maxMemory.markdownDescription": "超过此内存使用量(以 MB 为单位)后,将缓存且并发运行更少的“查找所有引用”和“重命名”进程。默认值 `null` (空)使用从 `#C_Cpp.maxMemory#` 继承的值。", - "c_cpp.configuration.codeAnalysis.maxConcurrentThreads.markdownDescription": "用于代码分析的最大并发线程数。默认值 \"null\" (空)使用从 \"#C_Cpp.maxConcurrentThreads#\" 继承的值的一半。", + "c_cpp.configuration.codeAnalysis.maxConcurrentThreads.markdownDescription": "用于代码分析的最大并发线程数。默认值 `null` (空)使用从 `#C_Cpp.maxConcurrentThreads#` 继承的值的一半。", "c_cpp.configuration.codeAnalysis.maxMemory.markdownDescription": "超过此内存使用量(以 MB 为单位)后,将并发运行更少的代码分析进程。默认值 `null` (空)使用从 `#C_Cpp.maxMemory#` 继承的值。", "c_cpp.configuration.codeAnalysis.updateDelay.markdownDescription": "控制在 `#files.autoSave#` 为 `afterDelay` 且 `#C_Cpp.codeAnalysis.runAutomatically#` 为 `true` 时从编辑触发保存后,代码分析开始处理之前的延迟(以毫秒为单位)。", "c_cpp.configuration.codeAnalysis.exclude.markdownDescription": "配置 glob 模式已排除用于代码分析的文件夹和文件。始终排除不在工作区文件夹下的文件。从 `#files.exclude#` 和 `#C_Cpp.files.exclude#` 继承值。详细了解 glob 模式 [此处](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options)。", @@ -54,7 +54,7 @@ "c_cpp.configuration.codeAnalysis.clangTidy.args.markdownDescription": "要传递给 `clang-tidy` 的其他命令行参数。这些优先于等效的 `C_Cpp.codeAnalysis.clangTidy.*` 设置。", "c_cpp.configuration.codeAnalysis.clangTidy.checks.enabled.markdownDescription": "已启用的 `clang-tidy` 检查列表。这些值将追加到 `.clang-tidy` 文件中的 `Checks` 或 `#C_Cpp.codeAnalysis.clangTidy.config#` (如果有)。除非显式禁用,否则始终使用默认检查 `clang-analyzer-*`。", "c_cpp.configuration.codeAnalysis.clangTidy.checks.disabled.markdownDescription": "已禁用的 `clang-tidy` 检查列表。该值将追加到 `.clang-tidy` 文件中的 `Checks` 或 `#C_Cpp.codeAnalysis.clangTidy.config#` (如果有)。", - "c_cpp.configuration.formatting.description": "配置格式化引擎", + "c_cpp.configuration.formatting.description": "配置格式设置引擎。", "c_cpp.configuration.formatting.clangFormat.markdownDescription": "`clang-format` 将用于格式代码。", "c_cpp.configuration.formatting.vcFormat.markdownDescription": "将使用 Visual C++ 格式设置引擎来设置代码的格式。", "c_cpp.configuration.formatting.Default.markdownDescription": "默认情况下,`clang-format` 将用于格式化代码。但是,如果找到具有相关设置的 `.editorconfig` 文件接近于所格式化的代码,且 `#C_Cpp.clang_format_style#` 为默认值: `file`,则将使用 Visual C++ 格式化引擎。", @@ -305,5 +305,19 @@ "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.loadOnlyIncluded.enumDescriptions": "请勿尝试为任何模块加载符号,除非该模块在 \"includedModules\" 数组中,或者它通过 \"includeSymbolsNextToModules\" 设置包含在内。", "c_cpp.debuggers.VSSymbolOptionsModuleFilter.excludedModules.description": "调试程序不得为其加载符号的模块数组。支持通配符(例如: MyCompany.*.dll)。\n\n会忽略此属性,除非“模式”设置为 \"loadAllButExcluded\"。", "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includedModules.description": "调试程序应为其加载符号的模块数组。支持通配符(例如: MyCompany.*.dll)。\n\n会忽略此属性,除非“模式”设置为 \"loadOnlyIncluded\"。", - "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includeSymbolsNextToModules.description": "如果为 true,则对于未在 \"includedModules\" 数组中的任何模块,调试程序将在模块本身和启动可执行文件旁边进行检查,但它将不检查符号搜索列表上的路径。此选项默认为 \"true\"\n\n会忽略此属性,除非“模式”设置为 \"loadOnlyIncluded\"。" + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includeSymbolsNextToModules.description": "如果为 true,则对于未在 \"includedModules\" 数组中的任何模块,调试程序将在模块本身和启动可执行文件旁边进行检查,但它将不检查符号搜索列表上的路径。此选项默认为 \"true\"\n\n会忽略此属性,除非“模式”设置为 \"loadOnlyIncluded\"。", + "c_cpp.semanticTokenTypes.referenceType.description": "C++/CLI 引用类型的样式。", + "c_cpp.semanticTokenTypes.cliProperty.description": "C++/CLI 属性的样式。", + "c_cpp.semanticTokenTypes.genericType.description": "C++/CLI 泛型类型的样式。", + "c_cpp.semanticTokenTypes.valueType.description": "C++/CLI 值类型的样式。", + "c_cpp.semanticTokenTypes.templateFunction.description": "C++ 模板函数的样式。", + "c_cpp.semanticTokenTypes.templateType.description": "C++ 模板类型的样式。", + "c_cpp.semanticTokenTypes.operatorOverload.description": "C++ 重载运算符的样式。", + "c_cpp.semanticTokenTypes.memberOperatorOverload.description": "C++ 重载运算符成员函数的样式。", + "c_cpp.semanticTokenTypes.newOperator.description": "C++ 新运算符或删除运算符的样式。", + "c_cpp.semanticTokenTypes.customLiteral.description": "C++ 用户定义文本的样式。", + "c_cpp.semanticTokenTypes.numberLiteral.description": "C++ 用户定义文本数字的样式。", + "c_cpp.semanticTokenTypes.stringLiteral.description": "C++ 用户定义文本字符串的样式。", + "c_cpp.semanticTokenModifiers.global.description": "用于全局符号的样式。", + "c_cpp.semanticTokenModifiers.local.description": "用于本地符号的样式。" } \ No newline at end of file diff --git a/Extension/i18n/cht/package.i18n.json b/Extension/i18n/cht/package.i18n.json index b1d097df92..1caf48de86 100644 --- a/Extension/i18n/cht/package.i18n.json +++ b/Extension/i18n/cht/package.i18n.json @@ -34,10 +34,10 @@ "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "用於語言服務處理的並行執行緒數目上限。該值是提示,且可能不會一律使用。預設的 `null` (空白) 會使用可用的邏輯處理器數目。", "c_cpp.configuration.maxCachedProcesses.markdownDescription": "用於語言服務處理的快取處理序數目上限。預設的 `null` (空白) 使用的邏輯處理器數目是可用邏輯處理器的兩倍。", "c_cpp.configuration.maxMemory.markdownDescription": "記憶體上限 (MB) 可供語言服務處理。超過此記憶體使用量之後,同時快取及執行的處理序將會減少。預設的 `null` (空白) 會使用系統的可用記憶體。", - "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "要繼續執行的 IntelliSense 處理序數目上限。預設的 `null` (空白) 會使用繼承自 `#C_Cpp.maxCachedProcesses#` 的值", + "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "要繼續執行的 IntelliSense 處理序數目上限。預設的 `null` (空白) 會使用繼承自 `#C_Cpp.maxCachedProcesses#` 的值。", "c_cpp.configuration.intelliSense.maxMemory.markdownDescription": "超過此記憶體使用量 (MB) 後,較舊的 IntelliSense 處理序將會在建立新處理序之前先關閉。預設的 `null` (空白) 會使用繼承自 `#C_Cpp.maxMemory#` 的值。", "c_cpp.configuration.references.maxConcurrentThreads.markdownDescription": "用於「尋找所有參考」與「重新命名」的並行執行緒數目上限。預設的 `null` (空白) 會使用繼承自 `#C_Cpp.maxConcurrentThreads#` 的值。", - "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "「尋找所有參考」與「重新命名」在記憶體中保留的處理序數目上限。`null` (空白) 的值會使用繼承自 `#C_Cpp.maxCachedProcesses#` 的值。", + "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "「尋找所有參考」與「重新命名」在記憶體中保留的處理序數目上限。預設值 `0` 將停用此功能。`null` (空白) 的值會使用繼承自 `#C_Cpp.maxCachedProcesses#` 的值。", "c_cpp.configuration.references.maxMemory.markdownDescription": "超過此記憶體使用量 (MB) 之後,同時快取及執行的「尋找所有參考」與「重新命名」處理序將會減少。預設的 `null` (空白) 會使用繼承自 `#C_Cpp.maxMemory#` 的值。", "c_cpp.configuration.codeAnalysis.maxConcurrentThreads.markdownDescription": "用於程式碼分析的同時執行緒數目上限。預設的 `null` (空白) 會使用繼承自 `#C_Cpp.maxConcurrentThreads#` 的值。", "c_cpp.configuration.codeAnalysis.maxMemory.markdownDescription": "超過此記憶體使用量 (MB) 之後,同時執行的程式碼分析處理序將會減少。預設的 `null` (空白) 會使用繼承自 `#C_Cpp.maxMemory#` 的值。", @@ -50,11 +50,11 @@ "c_cpp.configuration.codeAnalysis.clangTidy.path.markdownDescription": "`clang-tidy` 可執行檔的完整路徑。若未指定可執行檔,且可在環境路徑中使用 `clang-tidy`,則會加以使用。若在環境路徑中找不到可執行檔,則會使用與延伸模組搭配的 `clang-tidy`。", "c_cpp.configuration.codeAnalysis.clangTidy.config.markdownDescription": "以 YAML/JSON 格式指定 `clang-tidy` 組態: `{Checks: '-*,clang-analyzer-*', CheckOptions: [{key: x, value: y}]}`。當值為空白時,`clang-tidy` 將會嘗試為其父目錄中的每個來源檔案尋找名為 `.clang-tidy` 的檔案。", "c_cpp.configuration.codeAnalysis.clangTidy.fallbackConfig.markdownDescription": "當 `#C_Cpp.codeAnalysis.clangTidy.config#` 未設定且找不到 `.clang-tidy` 檔案時,指定 YAML/JSON 格式的 `clang-tidy` 組態用作遞補: `{Checks: '-*,clang-analyzer-*', CheckOptions: [{key: x, value: y}]}`。", - "c_cpp.configuration.codeAnalysis.clangTidy.headerFilter.markdownDescription": "符合輸出診斷來源之標頭名稱的 POSIX 擴充規則運算式 (ERE)。來自每個編譯單位之主要檔案的診斷將一律顯示。支援 `${workspaceFolder}` 變數 (如果沒有 '.clang-tidy' 檔案,則作為預設後援值)。若此選項並非 `null` (空白),則會覆寫 `.clang-tidy` 檔案中的 `HeaderFilterRegex` 選項 (如果有的話)。", + "c_cpp.configuration.codeAnalysis.clangTidy.headerFilter.markdownDescription": "符合輸出診斷來源之標頭名稱的 POSIX 擴充規則運算式 (ERE)。來自每個編譯單位之主要檔案的診斷將一律顯示。支援 `${workspaceFolder}` 變數 (如果沒有 `.clang-tidy` 檔案,則作為預設後援值)。若此選項並非 `null` (空白),則會覆寫 `.clang-tidy` 檔案中的 `HeaderFilterRegex` 選項 (如果有的話)。", "c_cpp.configuration.codeAnalysis.clangTidy.args.markdownDescription": "要傳遞給 `clang-tidy` 的其他命令列引數。這些命令列引數會比對等的 `C_Cpp.codeAnalysis.clangTidy.*` 設定優先考慮。", "c_cpp.configuration.codeAnalysis.clangTidy.checks.enabled.markdownDescription": "已啟用的 `clang-tidy` 檢查清單。值會附加到 `.clang-tidy` 檔案中的 `Checks` 或 `#C_Cpp.codeAnalysis.clangTidy.config#` (如果有的話)。除非明確地停用,否則一律使用預設檢查 `clang-analyzer-*`。", "c_cpp.configuration.codeAnalysis.clangTidy.checks.disabled.markdownDescription": "已停用的 `clang-tidy` 檢查清單。值會附加到 `.clang-tidy` 檔案中的 `Checks` 或 `#C_Cpp.codeAnalysis.clangTidy.config#` (如果有的話)。", - "c_cpp.configuration.formatting.description": "選擇格式設定引擎", + "c_cpp.configuration.formatting.description": "選擇格式設定引擎。", "c_cpp.configuration.formatting.clangFormat.markdownDescription": "將使用 `clang-format` 來格式化程式碼。", "c_cpp.configuration.formatting.vcFormat.markdownDescription": "將使用 Visual C++ 格式化引擎來格式化程式碼。", "c_cpp.configuration.formatting.Default.markdownDescription": "根據預設,會使用 `clang-format` 將程式碼格式化。不過,如果具有相關設定之 `.editorconfig` 檔案更接近要格式化的程式碼,且 `#C_Cpp.clang_format_style#` 為預設值 `file`,則將會使用 Visual C++ 格式引擎。", @@ -305,5 +305,19 @@ "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.loadOnlyIncluded.enumDescriptions": "請勿嘗試載入任何模組的符號,除非其位於 'includedModules' 陣列中,或包含在 'includeSymbolsNextToModules' 設定中。", "c_cpp.debuggers.VSSymbolOptionsModuleFilter.excludedModules.description": "偵錯工具不應為其載入符號的模組陣列。支援萬用字元 (範例: MyCompany.*.dll)。\n\n除非 '模式' 設定為 'loadAllButExcluded',否則會忽略此屬性。", "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includedModules.description": "偵錯工具應該為其載入符號的模組陣列。支援萬用字元 (範例: MyCompany.*.dll)。\n\n除非 '模式' 設定為 'loadOnlyIncluded',否則會忽略此屬性。", - "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includeSymbolsNextToModules.description": "若為 True,針對不在 'includedModules' 陣列中的任何模組,偵錯工具仍會檢查模組本身和啟動可執行檔的旁邊,但不會檢查符號搜尋清單上的路徑。此選項預設為 'true'。\n\n除非 '模式' 設定為 'loadOnlyIncluded',否則會忽略此屬性。" + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includeSymbolsNextToModules.description": "若為 True,針對不在 'includedModules' 陣列中的任何模組,偵錯工具仍會檢查模組本身和啟動可執行檔的旁邊,但不會檢查符號搜尋清單上的路徑。此選項預設為 'true'。\n\n除非 '模式' 設定為 'loadOnlyIncluded',否則會忽略此屬性。", + "c_cpp.semanticTokenTypes.referenceType.description": "C++/CLI 參考類型的樣式。", + "c_cpp.semanticTokenTypes.cliProperty.description": "C++/CLI 屬性的樣式。", + "c_cpp.semanticTokenTypes.genericType.description": "C++/CLI 泛型類型的樣式。", + "c_cpp.semanticTokenTypes.valueType.description": "C++/CLI 數值類型的樣式。", + "c_cpp.semanticTokenTypes.templateFunction.description": "C++ 範本函數的樣式。", + "c_cpp.semanticTokenTypes.templateType.description": "C++ 範本類型的樣式。", + "c_cpp.semanticTokenTypes.operatorOverload.description": "C++ 超載運算子的樣式。", + "c_cpp.semanticTokenTypes.memberOperatorOverload.description": "C++ 超載運算子成員函數的樣式。", + "c_cpp.semanticTokenTypes.newOperator.description": "C++ 新增或刪除運算子的樣式。", + "c_cpp.semanticTokenTypes.customLiteral.description": "C++ 使用者定義文字的樣式。", + "c_cpp.semanticTokenTypes.numberLiteral.description": "C++ 使用者定義文字編號的樣式。", + "c_cpp.semanticTokenTypes.stringLiteral.description": "C++ 使用者定義常值字串的樣式。", + "c_cpp.semanticTokenModifiers.global.description": "要用於全域符號的樣式。", + "c_cpp.semanticTokenModifiers.local.description": "要用於本機符號的樣式。" } \ No newline at end of file diff --git a/Extension/i18n/csy/package.i18n.json b/Extension/i18n/csy/package.i18n.json index 808560c30a..cf3fb150d5 100644 --- a/Extension/i18n/csy/package.i18n.json +++ b/Extension/i18n/csy/package.i18n.json @@ -34,27 +34,27 @@ "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "Maximální počet souběžných vláken, která se mají použít pro zpracování služby jazyka. Hodnota je nápověda a nemusí být vždy použita. Výchozí hodnota null (prázdná) používá počet dostupných logických procesorů.", "c_cpp.configuration.maxCachedProcesses.markdownDescription": "Maximální počet procesů uložených v mezipaměti, které se mají použít pro zpracování služby jazyka. Výchozí hodnota null (prázdná) používá dvojnásobek dostupného počtu logických procesorů.", "c_cpp.configuration.maxMemory.markdownDescription": "Maximální paměť (v MB), která je k dispozici pro zpracování služby jazyka. Po překročení tohoto využití paměti bude uloženo do mezipaměti méně procesů, které budou spuštěny souběžně. Výchozí hodnota null (prázdná) používá volnou paměť systému.", - "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "Maximální počet procesů IntelliSense, které se mají dál spouštět. Výchozí hodnota null (prázdná) používá hodnotu zděděnou od #C_Cpp.maxCachedProcesses#.", - "c_cpp.configuration.intelliSense.maxMemory.markdownDescription": "Po překročení tohoto využití paměti (v MB) se starší procesy IntelliSense vypnou před vytvořením nových procesů. Výchozí hodnota null (prázdná) používá hodnotu zděděnou od #C_Cpp.maxMemory#.", - "c_cpp.configuration.references.maxConcurrentThreads.markdownDescription": "Maximální počet souběžných vláken, která se mají použít pro možnosti Najít všechny odkazy a Přejmenovat. Výchozí hodnota null (prázdná) používá hodnotu zděděnou od #C_Cpp.maxConcurrentThreads#.", - "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "Maximální počet procesů, které se mají uchovávat v paměti pro příkazy Najít všechny odkazy a Přejmenovat. Hodnota null (prázdná) používá hodnotu zděděnou od #C_Cpp.maxCachedProcesses#.", - "c_cpp.configuration.references.maxMemory.markdownDescription": "Po překročení tohoto využití paměti (v MB) bude uloženo do mezipaměti a souběžně spuštěno méně procesů Najít všechny odkazy a Přejmenovat. Výchozí hodnota null (prázdná) používá hodnotu zděděnou od #C_Cpp.maxMemory#.", + "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "Maximální počet procesů IntelliSense, které mají být nadále spuštěny. Výchozí hodnota null (prázdná) používá hodnotu zděděnou z `#C_Cpp.maxCachedProcesses#`.", + "c_cpp.configuration.intelliSense.maxMemory.markdownDescription": "Po překročení tohoto využití paměti (v MB) se starší procesy IntelliSense vypnou před vytvořením nových procesů. Výchozí hodnota null (prázdná) používá hodnotu zděděnou od `#C_Cpp.maxMemory#`.", + "c_cpp.configuration.references.maxConcurrentThreads.markdownDescription": "Maximální počet souběžných vláken, která se mají použít pro možnosti Najít všechny odkazy a Přejmenovat. Výchozí hodnota null (prázdná) používá hodnotu zděděnou od `#C_Cpp.maxConcurrentThreads#`.", + "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "Maximální počet procesů, které se mají uchovávat v paměti pro příkazy Najít všechny odkazy a Přejmenovat. Výchozí hodnota 0 tuto funkci zakáže. Hodnota null (prázdná) používá hodnotu zděděnou z `#C_Cpp.maxCachedProcesses#`.", + "c_cpp.configuration.references.maxMemory.markdownDescription": "Po překročení tohoto využití paměti (v MB) bude uloženo do mezipaměti a souběžně spuštěno méně procesů Najít všechny odkazy a Přejmenovat. Výchozí hodnota null (prázdná) používá hodnotu zděděnou od `#C_Cpp.maxMemory#`.", "c_cpp.configuration.codeAnalysis.maxConcurrentThreads.markdownDescription": "Maximální počet souběžných vláken, která se mají použít pro analýzu kódu. Výchozí hodnota `null` (prázdná) používá poloviční hodnotu zděděnou od `#C_Cpp.maxConcurrentThreads#`.", - "c_cpp.configuration.codeAnalysis.maxMemory.markdownDescription": "Po překročení tohoto využití paměti (v MB) bude souběžně spuštěno méně procesů analýzy kódu. Výchozí hodnota null (prázdná) používá hodnotu zděděnou od #C_Cpp.maxMemory#.", - "c_cpp.configuration.codeAnalysis.updateDelay.markdownDescription": "Určuje prodlevu v milisekundách před zahájením zpracování analýzy kódu po spuštění uložení z úpravy, když je #files.autoSave# afterDelay a #C_Cpp.codeAnalysis.runAutomatically# je true.", - "c_cpp.configuration.codeAnalysis.exclude.markdownDescription": "Umožňuje nakonfigurovat vzory glob pro vyloučení složek a souborů pro analýzu kódu. Soubory mimo složku pracovního prostoru jsou vždy vyloučeny. Dědí hodnoty od #files.exclude# a #C_Cpp.files.exclude#. Další informace o vzorech glob [here] (https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.codeAnalysis.maxMemory.markdownDescription": "Po překročení tohoto využití paměti (v MB) bude souběžně spuštěno méně procesů analýzy kódu. Výchozí hodnota null (prázdná) používá hodnotu zděděnou od `#C_Cpp.maxMemory#`.", + "c_cpp.configuration.codeAnalysis.updateDelay.markdownDescription": "Určuje prodlevu v milisekundách před zahájením zpracování analýzy kódu po spuštění uložení z úpravy, když je #files.autoSave# afterDelay a `#C_Cpp.codeAnalysis.runAutomatically#` je true.", + "c_cpp.configuration.codeAnalysis.exclude.markdownDescription": "Umožňuje nakonfigurovat vzory glob pro vyloučení složek a souborů pro analýzu kódu. Soubory mimo složku pracovního prostoru jsou vždy vyloučeny. Dědí hodnoty od #files.exclude# a `#C_Cpp.files.exclude#`. Další informace o vzorech glob [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", "c_cpp.configuration.codeAnalysis.excludeBoolean.markdownDescription": "Vzor glob pro hledání shod s cestami k souborům. Pokud chcete vzor povolit, nastavte hodnotu `true`, pokud ho chcete zakázat, nastavte hodnotu `false`.", "c_cpp.configuration.codeAnalysis.excludeWhen.markdownDescription": "Další kontrola položek na stejné úrovni u odpovídajícího souboru. Jako proměnnou názvu odpovídajícího souboru použijte `$(basename)`.", "c_cpp.configuration.codeAnalysis.runAutomatically.markdownDescription": "Pokud se nastaví na hodnotu true, analýza kódu se pro soubor spustí automaticky po jeho otevření nebo uložení.", - "c_cpp.configuration.codeAnalysis.clangTidy.enabled.markdownDescription": "Pokud true, bude analýza kódu pomocí clang-tidy povolena a spuštěna automaticky, pokud je #C_Cpp.codeAnalysis.runAutomatically# true (výchozí).", + "c_cpp.configuration.codeAnalysis.clangTidy.enabled.markdownDescription": "Pokud true, bude analýza kódu pomocí clang-tidy povolena a spuštěna automaticky, pokud je `#C_Cpp.codeAnalysis.runAutomatically#` true (výchozí).", "c_cpp.configuration.codeAnalysis.clangTidy.path.markdownDescription": "Úplná cesta ke spustitelnému souboru `clang-tidy`. Pokud se nespecifikuje a `clang-tidy` je k dispozici na cestě prostředí, použije se. Pokud se na cestě prostředí nenajde, použije se kopie `clang-tidy`, která se dodává spolu s rozšířením.", "c_cpp.configuration.codeAnalysis.clangTidy.config.markdownDescription": "Určuje konfiguraci clang-tidy ve formátu YAML/JSON: {Checks: '-*,clang-analyzer-*', CheckOptions: [{key: x, value: y}]}. Když je hodnota prázdná, clang-tidy se pokusí najít soubor s názvem .clang-tidy pro každý zdrojový soubor v jeho nadřazených adresářích.", - "c_cpp.configuration.codeAnalysis.clangTidy.fallbackConfig.markdownDescription": "Určuje konfiguraci clang-tidy ve formátu YAML/JSON, která se použije jako náhradní, když není nastavená konfigurace #C_Cpp.codeAnalysis.clangTidy.config# a nenašel se žádný soubor .clang-tidy: {Checks: '-*,clang-analyzer-*', CheckOptions: [{key: x, value: y}]}.", + "c_cpp.configuration.codeAnalysis.clangTidy.fallbackConfig.markdownDescription": "Určuje konfiguraci clang-tidy ve formátu YAML/JSON, která se použije jako náhradní, když není nastavená konfigurace `#C_Cpp.codeAnalysis.clangTidy.config#` a nenašel se žádný soubor .clang-tidy: {Checks: '-*,clang-analyzer-*', CheckOptions: [{key: x, value: y}]}.", "c_cpp.configuration.codeAnalysis.clangTidy.headerFilter.markdownDescription": "Rozšířený regulární výraz POSIX (ERE) odpovídající názvům záhlaví pro výstup diagnostiky. Diagnostika z hlavního souboru každé jednotky překladu se vždy zobrazí. Proměnná ${workspaceFolder} se podporuje (a používá se jako výchozí základní hodnota, pokud neexistuje žádný soubor .clang-tidy). Pokud tato možnost není null (prázdná), přepíše možnost HeaderFilterRegex v souboru .clang-tidy, pokud existuje.", "c_cpp.configuration.codeAnalysis.clangTidy.args.markdownDescription": "Další argumenty příkazového řádku, které se mají předat do clang-tidy. Mají přednost před ekvivalentním nastavením C_Cpp.codeAnalysis.clangTidy.*.", - "c_cpp.configuration.codeAnalysis.clangTidy.checks.enabled.markdownDescription": "Seznam povolených kontrol clang-tidy. Hodnoty jsou připojeny k hodnotě Checks v souboru .clang-tidy nebo #C_Cpp.codeAnalysis.clangTidy.config#, pokud existují. Pokud není explicitně zakázaná, použije se výchozí kontrola clang-analyzer-*.", - "c_cpp.configuration.codeAnalysis.clangTidy.checks.disabled.markdownDescription": "Seznam zakázaných kontrol clang-tidy. Hodnoty jsou připojeny k hodnotě Checks v souboru .clang-tidy nebo #C_Cpp.codeAnalysis.clangTidy.config#, pokud existují.", - "c_cpp.configuration.formatting.description": "Nakonfiguruje nástroj formátování textu.", + "c_cpp.configuration.codeAnalysis.clangTidy.checks.enabled.markdownDescription": "Seznam povolených kontrol clang-tidy. Hodnoty jsou připojeny k hodnotě Checks v souboru .clang-tidy nebo `#C_Cpp.codeAnalysis.clangTidy.config#`, pokud existují. Pokud není explicitně zakázaná, použije se výchozí kontrola clang-analyzer-*.", + "c_cpp.configuration.codeAnalysis.clangTidy.checks.disabled.markdownDescription": "Seznam zakázaných kontrol clang-tidy. Hodnoty jsou připojeny k hodnotě Checks v souboru .clang-tidy nebo `#C_Cpp.codeAnalysis.clangTidy.config#`, pokud existují.", + "c_cpp.configuration.formatting.description": "Nakonfiguruje nástroj pro formátování.", "c_cpp.configuration.formatting.clangFormat.markdownDescription": "K formátování kódu se použije `clang-format`.", "c_cpp.configuration.formatting.vcFormat.markdownDescription": "K formátování kódu se použije nástroj formátování textu Visual C++.", "c_cpp.configuration.formatting.Default.markdownDescription": "Ve výchozím nastavení se k formátování kódu použije `clang-format` Pokud se ale blíže k formátovanému kódu najde soubor `.editorconfig` s relevantními nastaveními a `#C_Cpp.clang_format_style#` bude mít výchozí hodnotu `file`, použije se modul formátování Visual C++.", @@ -143,7 +143,7 @@ "c_cpp.configuration.vcFormat.wrap.preserveBlocks.description": "Možnosti zalamování pro bloky.", "c_cpp.configuration.vcFormat.wrap.preserveBlocks.oneLiners.markdownDescription": "Celý blok kódu, který se zadá na jednom řádku, zůstane na jednom řádku bez ohledu na hodnoty kteréhokoli nastavení `C_Cpp.vcFormat.newLine.*`.", "c_cpp.configuration.vcFormat.wrap.preserveBlocks.allOneLineScopes.markdownDescription": "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í `C_Cpp.vcFormat.newLine.*`.", - "c_cpp.configuration.vcFormat.wrap.preserveBlocks.never.markdownDescription": "Bloky kódu se budou vždy formátovat podle hodnot nastavení `C_Cpp.vcFormat.newLine.*`.", + "c_cpp.configuration.vcFormat.wrap.preserveBlocks.never.markdownDescription": "Bloky kódu se budou vždy formátovat podle hodnot nastavení `C_Cpp.vcFormat.newLine.*`", "c_cpp.configuration.clang_format_path.markdownDescription": "Úplná cesta ke spustitelnému souboru `clang-format`. Pokud se nespecifikuje a `clang-format` je k dispozici na cestě prostředí, použije se. 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.markdownDescription": "Styl kódování, v současné době se podporuje: `Visual Studio`, `LLVM`, `Google`, `Chromium`, `Mozilla`, `WebKit`, `Microsoft`, `GNU`. 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, FixNamespaceComments: false }`.", "c_cpp.configuration.clang_format_fallbackStyle.markdownDescription": "Název předdefinovaného stylu, který se použije jako záloha v případě, že se vyvolá `clang-format` se stylem `file`, ale nenajde se soubor `.clang-format`. Možné hodnoty jsou `Visual Studio`, `LLVM`, `Google`, `Chromium`, `Mozilla`, `WebKit`, `Microsoft`, `GNU`, `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, NamespaceIndentation: All, FixNamespaceComments: false }`.", @@ -207,7 +207,7 @@ "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "Pokud existují závislosti, přidejte cesty pro zahrnuté soubory z `nan` a `node-addon-api`.", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Když se tato hodnota nastaví na `true`, operace Přejmenovat symbol bude vyžadovat platný identifikátor C/C++.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "Pokud je hodnota `true`, automatické dokončování automaticky přidá za volání funkcí znak `(`. V takovém případě se může přidat i znak `)`, což záleží na hodnotě nastavení `#editor.autoClosingBrackets#`.", - "c_cpp.configuration.filesExclude.markdownDescription": "Nakonfigurujte vzory glob pro vyloučení složek (a souborů, pokud se změní `#C_Cpp.exclusionPolicy#`). Ty jsou specifické pro rozšíření C/C++ a doplňují `#files.exclude#`, ale na rozdíl od `#files.exclude#` platí také pro cesty mimo aktuální složku pracovního prostoru a neodebírají se ze zobrazení Průzkumníka. Další informace o vzorech glob najdete [tady](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExclude.markdownDescription": "Nakonfigurujte vzory glob pro vyloučení složek (a souborů, pokud se změní `#C_Cpp.exclusionPolicy#`). Ty jsou specifické pro rozšíření C/C++ a doplňují `#files.exclude#`, ale na rozdíl od #files.exclude# platí také pro cesty mimo aktuální složku pracovního prostoru a neodebírají se ze zobrazení Průzkumníka. Další informace o vzorech glob najdete [tady](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", "c_cpp.configuration.filesExcludeBoolean.markdownDescription": "Vzor glob pro hledání shod s cestami k souborům. Pokud chcete vzor povolit, nastavte hodnotu `true`, pokud ho chcete zakázat, nastavte hodnotu `false`.", "c_cpp.configuration.filesExcludeWhen.markdownDescription": "Další kontrola položek na stejné úrovni u odpovídajícího souboru. Jako proměnnou názvu odpovídajícího souboru použijte `$(basename)`.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.markdownDescription": "Když se nastaví na `true`, nahrazování příkazů shellu ladicího programu bude používat starou verzi obrácené čárky (`).", @@ -305,5 +305,19 @@ "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.loadOnlyIncluded.enumDescriptions": "Nepokoušejte se načíst symboly pro ŽÁDNÝ modul, pokud není v poli „includedModules“, nebo je součástí nastavení „includeSymbolsNextToModules“.", "c_cpp.debuggers.VSSymbolOptionsModuleFilter.excludedModules.description": "Pole modulů, pro které by ladicí program neměl načítat symboly. Zástupné znaky (například: MyCompany. *.DLL) jsou podporovány.\n\nTato vlastnost je ignorována, pokud není „mode“ nastaven na hodnotu „loadAllButExcluded“.", "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includedModules.description": "Pole modulů, pro které má ladicí program načíst symboly. Zástupné znaky (například: MyCompany. *.DLL) jsou podporovány.\n\nTato vlastnost je ignorována, pokud není „mode“ nastaven na hodnotu „loadOnlyIncluded“.", - "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includeSymbolsNextToModules.description": "Pokud má hodnotu true, u libovolného modulu, který není v poli „includedModules“, bude ladicí program stále provádět kontrolu vedle samotného modulu a spouštěcího souboru, ale nebude kontrolovat cesty v seznamu hledání symbolů. Tato možnost je standardně nastavena na hodnotu true.\n\nTato vlastnost je ignorována, pokud není „mode“ nastaven na hodnotu „loadOnlyIncluded“." + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includeSymbolsNextToModules.description": "Pokud má hodnotu true, u libovolného modulu, který není v poli „includedModules“, bude ladicí program stále provádět kontrolu vedle samotného modulu a spouštěcího souboru, ale nebude kontrolovat cesty v seznamu hledání symbolů. Tato možnost je standardně nastavena na hodnotu true.\n\nTato vlastnost je ignorována, pokud není „mode“ nastaven na hodnotu „loadOnlyIncluded“.", + "c_cpp.semanticTokenTypes.referenceType.description": "Styl pro referenční typy jazyka C++/CLI.", + "c_cpp.semanticTokenTypes.cliProperty.description": "Styl pro vlastnosti jazyka C++/CLI.", + "c_cpp.semanticTokenTypes.genericType.description": "Styl pro obecné typy jazyka C++/CLI.", + "c_cpp.semanticTokenTypes.valueType.description": "Styl pro hodnotové typy jazyka C++/CLI.", + "c_cpp.semanticTokenTypes.templateFunction.description": "Styl pro funkce šablon jazyka C++.", + "c_cpp.semanticTokenTypes.templateType.description": "Styl pro typy šablon jazyka C++.", + "c_cpp.semanticTokenTypes.operatorOverload.description": "Styl pro přetížené operátory jazyka C++.", + "c_cpp.semanticTokenTypes.memberOperatorOverload.description": "Styl pro členské funkce přetížených operátorů jazyka C++.", + "c_cpp.semanticTokenTypes.newOperator.description": "Styl pro operátory new nebo delete jazyka C++.", + "c_cpp.semanticTokenTypes.customLiteral.description": "Styl pro uživatelsky definované literály jazyka C++.", + "c_cpp.semanticTokenTypes.numberLiteral.description": "Styl pro uživatelsky definovaná literálová čísla jazyka C++.", + "c_cpp.semanticTokenTypes.stringLiteral.description": "Styl pro uživatelem definované řetězcové literály jazyka C++.", + "c_cpp.semanticTokenModifiers.global.description": "Styl, který se má použít pro globální symboly.", + "c_cpp.semanticTokenModifiers.local.description": "Styl, který se má použít pro místní symboly." } \ No newline at end of file diff --git a/Extension/i18n/deu/c_cpp_properties.schema.json.i18n.json b/Extension/i18n/deu/c_cpp_properties.schema.json.i18n.json index e2e94867b8..c337dafa20 100644 --- a/Extension/i18n/deu/c_cpp_properties.schema.json.i18n.json +++ b/Extension/i18n/deu/c_cpp_properties.schema.json.i18n.json @@ -14,7 +14,7 @@ "c_cpp_properties.schema.json.definitions.configurations.items.properties.macFrameworkPath": "Eine Liste der Pfade für die IntelliSense-Engine, die beim Suchen nach eingeschlossenen Headern aus Mac-Frameworks verwendet werden sollen. Wird nur in der Mac-Konfiguration unterstützt.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.windowsSdkVersion": "Die Version des Windows SDK-Includepfads für die Verwendung unter Windows, z. B. `10.0.17134.0`.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.defines": "Eine Liste mit Präprozessordefinitionen, die das IntelliSense-Modul, beim Analysieren von Dateien verwenden sollen. Verwenden Sie optional `=`, um einen Wert festzulegen, z. B.: `VERSION=1`.", - "c_cpp_properties.schema.json.definitions.configurations.items.properties.intelliSenseMode": "Der zu verwendende IntelliSense-Modus, der einer Plattform- und Architekturvariante von MSVC, GCC oder Clang zugeordnet wird. Wenn er nicht oder auf `${default}` festgelegt wird, wählt die Erweiterung den Standardwert für diese Plattform aus. Windows verwendet standardmäßig `windows-msvc-x64`, Linux standardmäßig `linux-gcc-x64` und macOS standardmäßig `macos-clang-x64`. IntelliSense-Modi, die nur Varianten vom Typ `-` angeben (z. B. `gcc-x64`) sind Legacy-Modi und werden basierend auf der Hostplattform automatisch in die Varianten `--` konvertiert.", + "c_cpp_properties.schema.json.definitions.configurations.items.properties.intelliSenseMode": "Der zu verwendende IntelliSense-Modus, der einer Plattform- und Architekturvariante von MSVC, GCC oder Clang zugeordnet wird. Wenn er nicht oder auf `${default}` festgelegt wird, wählt die Erweiterung den Standardwert für diese Plattform aus. Windows verwendet standardmäßig `windows-msvc-x64`, Linux standardmäßig `linux-gcc-x64` und macOS standardmäßig `macos-clang-x64`. IntelliSense-Modi, die nur Varianten vom Typ `-` angeben (z. B. `gcc-x64`), sind Legacy-Modi und werden basierend auf der Hostplattform automatisch in die Varianten `--` konvertiert.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.forcedInclude": "Eine Liste der Dateien, die vor einer Includedatei in einer Übersetzungseinheit enthalten sein sollen.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.configurationProvider": "Die ID einer VS Code-Erweiterung, die IntelliSense-Konfigurationsinformationen für Quelldateien bereitstellen kann.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.mergeConfigurations": "Legen Sie diesen Wert auf `true` fest, um Includepfade, Definitionen und erzwungene Includes mit denen eines Konfigurationsanbieters zusammenzuführen.", diff --git a/Extension/i18n/deu/package.i18n.json b/Extension/i18n/deu/package.i18n.json index 5da9c43c75..e7a8d80143 100644 --- a/Extension/i18n/deu/package.i18n.json +++ b/Extension/i18n/deu/package.i18n.json @@ -31,29 +31,29 @@ "c_cpp.command.RunCodeAnalysisOnOpenFiles.title": "Code Analysis auf \"Dateien öffnen\" ausführen", "c_cpp.command.RunCodeAnalysisOnAllFiles.title": "Code Analysis auf \"Alle Dateien\" ausführen", "c_cpp.command.ClearCodeAnalysisSquiggles.title": "Code Analysis-Wellenlinien löschen", - "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "Die maximale Anzahl gleichzeitiger Threads, die für die Sprachdienstverarbeitung verwendet werden sollen. Der Wert ist ein Hinweis und kann nicht immer verwendet werden. Der Standardwert \"null\" (leer) verwendet die Anzahl der verfügbaren logischen Prozessoren.", - "c_cpp.configuration.maxCachedProcesses.markdownDescription": "Die maximale Anzahl zwischengespeicherter Prozesse, die für die Sprachdienstverarbeitung verwendet werden sollen. Der Standardwert \"null\" (leer) verwendet doppelt so viele logische Prozessoren wie verfügbar.", - "c_cpp.configuration.maxMemory.markdownDescription": "Der maximale Arbeitsspeicher (in MB), der für die Sprachdienstverarbeitung verfügbar ist. Weniger Prozesse werden zwischengespeichert und gleichzeitig ausgeführt, nachdem diese Speicherauslastung überschritten wurde. Der Standardwert \"null\" (leer) verwendet den freien Arbeitsspeicher des Systems.", - "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "Die maximale Anzahl von IntelliSense-Prozessen, die weiter ausgeführt werden sollen. Der Standardwert \"null\" (leer) verwendet einen Wert, der von \"#C_Cpp.maxCachedProcesses#\" geerbt wurde.", - "c_cpp.configuration.intelliSense.maxMemory.markdownDescription": "Ältere IntelliSense-Prozesse werden heruntergefahren, bevor neue Prozesse erstellt werden, nachdem diese Speicherauslastung (in MB) überschritten wurde. Der Standardwert \"null\" (leer) verwendet den Wert, der von \"#C_Cpp.maxMemory#\" geerbt wurde.", - "c_cpp.configuration.references.maxConcurrentThreads.markdownDescription": "Die maximale Anzahl gleichzeitiger Threads, die für \"Alle Verweise suchen\" und \"Umbenennen\" verwendet werden sollen. Der Standardwert \"null\" (leer) verwendet den Wert, der von \"#C_Cpp.maxConcurrentThreads#\" geerbt wurde.", - "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "Die maximale Anzahl von Prozessen, die im Arbeitsspeicher für \"Alle Verweise suchen\" und \"Umbenennen\" beibehalten werden sollen. Der Wert von \"null\" (leer) verwendet den Wert, der von \"#C_Cpp.maxCachedProcesses#\" geerbt wurde.", - "c_cpp.configuration.references.maxMemory.markdownDescription": "Weniger \"Alle Verweise suchen\"- und \"Umbenennen\"-Prozesse werden zwischengespeichert und gleichzeitig ausgeführt, nachdem diese Speicherauslastung (in MB) überschritten wurde. Der Standardwert \"null\" (leer) verwendet den Wert, der von \"#C_Cpp.maxMemory#\" geerbt wurde.", - "c_cpp.configuration.codeAnalysis.maxConcurrentThreads.markdownDescription": "Die maximale Anzahl gleichzeitiger Threads, die für die Codeanalyse verwendet werden sollen. Der Standardwert \"null\" (leer) verwendet die Hälfte des Werts, der von \"#C_Cpp.maxConcurrentThreads#\" geerbt wurde.", - "c_cpp.configuration.codeAnalysis.maxMemory.markdownDescription": "Weniger Codeanalyseprozesse werden gleichzeitig ausgeführt, nachdem diese Speicherauslastung (in MB) überschritten wurde. Der Standardwert \"null\" (leer) verwendet den Wert, der von \"#C_Cpp.maxMemory#\" geerbt wurde.", - "c_cpp.configuration.codeAnalysis.updateDelay.markdownDescription": "Steuert die Verzögerung in Millisekunden, bevor die Codeanalyse mit der Verarbeitung beginnt, nachdem ein Speichern durch eine Bearbeitung ausgelöst wurde, wenn \"#files.autoSave#\" auf \"afterDelay\" und \"#C_Cpp.codeAnalysis.runAutomatically#\" auf TRUE festgelegt ist.", - "c_cpp.configuration.codeAnalysis.exclude.markdownDescription": "Konfigurieren Sie Globmuster zum Ausschließen von Ordnern und Dateien für die Codeanalyse. Dateien, die sich nicht im Arbeitsbereichsordner befinden, werden immer ausgeschlossen. Erbt Werte von \"#files.exclude#\" und \"#C_Cpp.files.exclude#\". Weitere Informationen zu Globmustern [hier](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "Die maximale Anzahl gleichzeitiger Threads, die für die Sprachdienstverarbeitung verwendet werden sollen. Der Wert ist ein Hinweis und kann nicht immer verwendet werden. Der Standardwert `null` (leer) verwendet die Anzahl der verfügbaren logischen Prozessoren.", + "c_cpp.configuration.maxCachedProcesses.markdownDescription": "Die maximale Anzahl zwischengespeicherter Prozesse, die für die Sprachdienstverarbeitung verwendet werden sollen. Der Standardwert `null` (leer) verwendet doppelt so viele logische Prozessoren wie verfügbar.", + "c_cpp.configuration.maxMemory.markdownDescription": "Der maximale Arbeitsspeicher (in MB), der für die Sprachdienstverarbeitung verfügbar ist. Weniger Prozesse werden zwischengespeichert und gleichzeitig ausgeführt, nachdem diese Speicherauslastung überschritten wurde. Der Standardwert `null` (leer) verwendet den freien Arbeitsspeicher des Systems.", + "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "Die maximale Anzahl von IntelliSense-Prozessen, die weiter ausgeführt werden sollen. Der Standardwert `null` (leer) verwendet einen Wert, der von `#C_Cpp.maxCachedProcesses#` geerbt wurde.", + "c_cpp.configuration.intelliSense.maxMemory.markdownDescription": "Ältere IntelliSense-Prozesse werden heruntergefahren, bevor neue Prozesse erstellt werden, nachdem diese Speicherauslastung (in MB) überschritten wurde. Der Standardwert `null` (leer) verwendet den Wert, der von `#C_Cpp.maxMemory#` geerbt wurde.", + "c_cpp.configuration.references.maxConcurrentThreads.markdownDescription": "Die maximale Anzahl gleichzeitiger Threads, die für \"Alle Verweise suchen\" und \"Umbenennen\" verwendet werden sollen. Der Standardwert `null` (leer) verwendet den Wert, der von `#C_Cpp.maxConcurrentThreads#` geerbt wurde.", + "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "Die maximale Anzahl von Prozessen, die im Arbeitsspeicher für \"Alle Verweise suchen\" und \"Umbenennen\" beibehalten werden sollen. Der Wert von `0` (leer) verwendet den Wert, der von `#C_Cpp.maxCachedProcesses#` geerbt wurde.", + "c_cpp.configuration.references.maxMemory.markdownDescription": "Weniger \"Alle Verweise suchen\"- und \"Umbenennen\"-Prozesse werden zwischengespeichert und gleichzeitig ausgeführt, nachdem diese Speicherauslastung (in MB) überschritten wurde. Der Standardwert `null` (leer) verwendet den Wert, der von `#C_Cpp.maxMemory#` geerbt wurde.", + "c_cpp.configuration.codeAnalysis.maxConcurrentThreads.markdownDescription": "Die maximale Anzahl gleichzeitiger Threads, die für die Codeanalyse verwendet werden sollen. Der Standardwert `null` (leer) verwendet die Hälfte des Werts, der von `#C_Cpp.maxConcurrentThreads#` geerbt wurde.", + "c_cpp.configuration.codeAnalysis.maxMemory.markdownDescription": "Weniger Codeanalyseprozesse werden gleichzeitig ausgeführt, nachdem diese Speicherauslastung (in MB) überschritten wurde. Der Standardwert `null` (leer) verwendet den Wert, der von `#C_Cpp.maxMemory#` geerbt wurde.", + "c_cpp.configuration.codeAnalysis.updateDelay.markdownDescription": "Steuert die Verzögerung in Millisekunden, bevor die Codeanalyse mit der Verarbeitung beginnt, nachdem ein Speichern durch eine Bearbeitung ausgelöst wurde, wenn `#files.autoSave#` auf `afterDelay` und `#C_Cpp.codeAnalysis.runAutomatically#` auf `true` festgelegt ist.", + "c_cpp.configuration.codeAnalysis.exclude.markdownDescription": "Konfigurieren Sie Globmuster zum Ausschließen von Ordnern und Dateien für die Codeanalyse. Dateien, die sich nicht im Arbeitsbereichsordner befinden, werden immer ausgeschlossen. Erbt Werte von `#files.exclude#` und `#C_Cpp.files.exclude#`. Weitere Informationen zu Globmustern [hier](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", "c_cpp.configuration.codeAnalysis.excludeBoolean.markdownDescription": "Das Globmuster, mit dem Dateipfade verglichen werden sollen. Legen Sie diesen Wert auf `true` oder `false` fest, um das Muster zu aktivieren bzw. zu deaktivieren.", "c_cpp.configuration.codeAnalysis.excludeWhen.markdownDescription": "Zusätzliche Überprüfung der gleichgeordneten Elemente einer entsprechenden Datei. Verwenden Sie `$(basename)` als Variable für den entsprechenden Dateinamen.", - "c_cpp.configuration.codeAnalysis.runAutomatically.markdownDescription": "Bei TRUE wird die Codeanalyse automatisch für eine Datei ausgeführt, nachdem sie geöffnet oder gespeichert wurde.", - "c_cpp.configuration.codeAnalysis.clangTidy.enabled.markdownDescription": "Bei TRUE wird die Codeanalyse mit \"clang-tidy\" aktiviert und automatisch ausgeführt, wenn \"#C_Cpp.codeAnalysis.runAutomatically#\" auf TRUE (Standardeinstellung) festgelegt ist.", - "c_cpp.configuration.codeAnalysis.clangTidy.path.markdownDescription": "Der vollständige Pfad der ausführbaren \"clang-tidy\"-Datei. Wenn nicht angegeben, ist \"clang-tidy\" im verwendeten Umgebungspfad verfügbar. Wenn der Umgebungspfad nicht gefunden wird, wird \"clang-tidy\" verwendet, der mit der Erweiterung gebündelt ist.", - "c_cpp.configuration.codeAnalysis.clangTidy.config.markdownDescription": "Gibt eine \"clang-tidy\"-Konfiguration im YAML-/JSON-Format an: \"{Checks: '-*,clang-analyzer-*', CheckOptions: [{key: x, value: y}]}\". Wenn der Wert leer ist, versucht \"clang-tidy\", eine Datei namens \".clang-tidy\" für jede Quelldatei in den übergeordneten Verzeichnissen zu finden.", - "c_cpp.configuration.codeAnalysis.clangTidy.fallbackConfig.markdownDescription": "Gibt eine \"clang-tidy\"-Konfiguration im YAML-/JSON-Format an, die als Fallback verwendet werden soll, wenn \"#C_Cpp.codeAnalysis.clangTidy.config#\" nicht festgelegt ist und keine \".clang-tidy\"-Datei gefunden wird: \"{Checks: '-*,clang-analyzer-*', CheckOptions: [{key: x, value: y}]}\".", - "c_cpp.configuration.codeAnalysis.clangTidy.headerFilter.markdownDescription": "Ein erweiterter regulärer POSIX-Ausdruck (Extended Regular Expression/ERE), der dem Namen der Header entspricht, aus denen die Diagnose ausgegeben werden soll. Diagnosen aus der Hauptdatei jeder Übersetzungseinheit werden immer angezeigt. Die Variable \"${workspaceFolder}\" wird unterstützt (und als Standardfallbackwert benutzt, wenn die Datei „.clang-tidy“ nicht existiert). Wenn diese Option nicht \"null\" (leer) ist, überschreibt sie die Option \"HeaderFilterRegex\" in einer \".clang-tidy\"-Datei, sofern vorhanden.", - "c_cpp.configuration.codeAnalysis.clangTidy.args.markdownDescription": "Zusätzliche Befehlszeilenargumente, die an \"clang-tidy\" übergeben werden sollen. Diese haben Vorrang vor den entsprechenden Einstellungen für \"C_Cpp.codeAnalysis.clangTidy.*\".", - "c_cpp.configuration.codeAnalysis.clangTidy.checks.enabled.markdownDescription": "Liste der aktivierten \"clang-tidy\"-Überprüfungen. Die Werte werden an \"Checks\" in einer \".clang-tidy\"-Datei oder ggf. an \"#C_Cpp.codeAnalysis.clangTidy.config#\" angefügt. Die Standardüberprüfung \"clang-analyzer-*\" wird immer verwendet, es sei denn, sie ist explizit deaktiviert.", - "c_cpp.configuration.codeAnalysis.clangTidy.checks.disabled.markdownDescription": "Liste der deaktivierten \"clang-tidy\"-Überprüfungen. Die Werte werden an \"Checks\" in einer \".clang-tidy\"-Datei oder ggf. an \"#C_Cpp.codeAnalysis.clangTidy.config#\" angefügt.", + "c_cpp.configuration.codeAnalysis.runAutomatically.markdownDescription": "Bei `true` wird die Codeanalyse automatisch für eine Datei ausgeführt, nachdem sie geöffnet oder gespeichert wurde.", + "c_cpp.configuration.codeAnalysis.clangTidy.enabled.markdownDescription": "Bei `true` wird die Codeanalyse mit `clang-tidy` aktiviert und automatisch ausgeführt, wenn `#C_Cpp.codeAnalysis.runAutomatically#` auf `true` (Standardeinstellung) festgelegt ist.", + "c_cpp.configuration.codeAnalysis.clangTidy.path.markdownDescription": "Der vollständige Pfad der ausführbaren `clang-tidy`-Datei. Wenn nicht angegeben, ist `clang-tidy` im verwendeten Umgebungspfad verfügbar. Wenn der Umgebungspfad nicht gefunden wird, wird `clang-tidy` verwendet, der mit der Erweiterung gebündelt ist.", + "c_cpp.configuration.codeAnalysis.clangTidy.config.markdownDescription": "Gibt eine `clang-tidy`-Konfiguration im YAML-/JSON-Format an: `{Checks: '-*,clang-analyzer-*', CheckOptions: [{key: x, value: y}]}`. Wenn der Wert leer ist, versucht `clang-tidy`, eine Datei namens `.clang-tidy` für jede Quelldatei in den übergeordneten Verzeichnissen zu finden.", + "c_cpp.configuration.codeAnalysis.clangTidy.fallbackConfig.markdownDescription": "Gibt eine `clang-tidy`-Konfiguration im YAML-/JSON-Format an, die als Fallback verwendet werden soll, wenn `#C_Cpp.codeAnalysis.clangTidy.config#` nicht festgelegt ist und keine `.clang-tidy`-Datei gefunden wird: `{Checks: '-*,clang-analyzer-*', CheckOptions: [{key: x, value: y}]}`.", + "c_cpp.configuration.codeAnalysis.clangTidy.headerFilter.markdownDescription": "Ein erweiterter regulärer POSIX-Ausdruck (Extended Regular Expression/ERE), der dem Namen der Header entspricht, aus denen die Diagnose ausgegeben werden soll. Diagnosen aus der Hauptdatei jeder Übersetzungseinheit werden immer angezeigt. Die Variable `${workspaceFolder}` wird unterstützt (und als Standardfallbackwert benutzt, wenn die Datei `.clang-tidy` nicht existiert). Wenn diese Option nicht `null` (leer) ist, überschreibt sie die Option `HeaderFilterRegex` in einer `.clang-tidy`-Datei, sofern vorhanden.", + "c_cpp.configuration.codeAnalysis.clangTidy.args.markdownDescription": "Zusätzliche Befehlszeilenargumente, die an `clang-tidy` übergeben werden sollen. Diese haben Vorrang vor den entsprechenden Einstellungen für `C_Cpp.codeAnalysis.clangTidy.*`.", + "c_cpp.configuration.codeAnalysis.clangTidy.checks.enabled.markdownDescription": "Liste der aktivierten `clang-tidy`-Überprüfungen. Die Werte werden an `Checks` in einer `.clang-tidy`-Datei oder ggf. an `#C_Cpp.codeAnalysis.clangTidy.config#` angefügt. Die Standardüberprüfung `clang-analyzer-*` wird immer verwendet, es sei denn, sie ist explizit deaktiviert.", + "c_cpp.configuration.codeAnalysis.clangTidy.checks.disabled.markdownDescription": "Liste der deaktivierten `clang-tidy`-Überprüfungen. Die Werte werden an `Checks` in einer `.clang-tidy`-Datei oder ggf. an `#C_Cpp.codeAnalysis.clangTidy.config#` angefügt.", "c_cpp.configuration.formatting.description": "Konfiguriert das Formatierungsmodul.", "c_cpp.configuration.formatting.clangFormat.markdownDescription": "`clang-format` wird zum Formatieren von Code verwendet.", "c_cpp.configuration.formatting.vcFormat.markdownDescription": "Das Visual C++-Formatierungsmodul wird zum Formatieren von Code verwendet.", @@ -207,12 +207,12 @@ "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "Fügen Sie Includepfade aus `nan` und `node-addon-api` hinzu, wenn es sich um Abhängigkeiten handelt.", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Wenn `true` festgelegt ist, erfordert 'Symbol umbenennen' einen gültigen C/C++-Bezeichner.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "Wenn `true` festgelegt ist, fügt AutoVervollständigen automatisch `(` nach Funktionsaufrufen hinzu. In diesem Fall kann auch `)` in Abhängigkeit vom Wert der Einstellung `#editor.autoClosingBrackets#` hinzugefügt werden.", - "c_cpp.configuration.filesExclude.markdownDescription": "Konfigurieren Sie Globmuster zum Ausschließen von Ordnern (und Dateien, wenn `#C_Cpp.exclusionPolicy#` geändert wird). Diese sind spezifisch für die C/C++-Erweiterung und gelten zusätzlich zu `#files.exclude#`, aber im Gegensatz zu `#files.exclude#` gelten sie auch für Pfade außerhalb des aktuellen Arbeitsbereichsordners und werden nicht aus der Explorer-Ansicht entfernt. Weitere Informationen zu Globmustern [hier](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExclude.markdownDescription": "Konfigurieren Sie Globmuster zum Ausschließen von Ordnern (und Dateien, wenn `#C_Cpp.exclusionPolicy#` geändert wird). Diese sind spezifisch für die C/C++-Erweiterung und gelten zusätzlich zu `#files.exclude#`, aber im Gegensatz zu `#files.exclude#` gelten sie auch für Pfade außerhalb des aktuellen Arbeitsbereichsordners und werden nicht aus der Explorer-Ansicht entfernt. Weitere Informationen zu Globmustern finden Sie [hier](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", "c_cpp.configuration.filesExcludeBoolean.markdownDescription": "Das Globmuster, mit dem Dateipfade verglichen werden sollen. Legen Sie diesen Wert auf `true` oder `false` fest, um das Muster zu aktivieren bzw. zu deaktivieren.", "c_cpp.configuration.filesExcludeWhen.markdownDescription": "Zusätzliche Überprüfung der gleichgeordneten Elemente einer entsprechenden Datei. Verwenden Sie `$(basename)` als Variable für den entsprechenden Dateinamen.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.markdownDescription": "Wenn `true` festgelegt ist, verwendet die Befehlsersetzung der Debugger-Shell veraltete Backtick-Zeichen (`).", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: Andere Verweisergebnisse.", - "c_cpp.contributes.viewsWelcome.contents": "Weitere Informationen zu launch.json finden Sie unter [Konfigurieren von C/C++-Debuggen](https://code.visualstudio.com/docs/cpp/launch-json-reference).", + "c_cpp.contributes.viewsWelcome.contents": "Weitere Informationen zu launch.json finden Sie unter [Konfigurieren des C/C++-Debuggings](https://code.visualstudio.com/docs/cpp/launch-json-reference).", "c_cpp.debuggers.pipeTransport.description": "Falls angegeben, weist diese Option den Debugger an, eine Verbindung mit einem Remotecomputer mithilfe einer anderen ausführbaren Datei als Pipe herzustellen, die Standardeingaben/-ausgaben zwischen VS Code und der ausführbaren Back-End-Datei für den MI-fähigen Debugger weiterleitet (z. B. gdb).", "c_cpp.debuggers.pipeTransport.default.pipeProgram": "Geben Sie den vollqualifizierten Pfad für den Pipeprogrammnamen ein, z. B. `/usr/bin/ssh`.", "c_cpp.debuggers.pipeTransport.default.debuggerPath": "Der vollständige Pfad zum Debugger auf dem Zielcomputer, z. B. \"/usr/bin/gdb\".", @@ -305,5 +305,19 @@ "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.loadOnlyIncluded.enumDescriptions": "Versuchen Sie nicht, Symbole für IRGENDEIN Modul zu laden, es sei denn, es befindet sich im Array „includedModules“, oder es wird über die Einstellung „includeSymbolsNextToModules“ hinzugefügt.", "c_cpp.debuggers.VSSymbolOptionsModuleFilter.excludedModules.description": "Ein Array von Modulen, für das der Debugger keine Symbole laden soll. Platzhalter (Beispiel: MyCompany. *. dll) werden unterstützt.\n\nDiese Eigenschaft wird ignoriert, wenn „Modus“ nicht auf „loadAllButExcluded“ festgelegt ist.", "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includedModules.description": "Ein Array von Modulen, für das der Debugger keine Symbole laden soll. Platzhalter (Beispiel: MyCompany. *. dll) werden unterstützt.\n\nDiese Eigenschaft wird ignoriert, wenn „Modus“ nicht auf „loadOnlyIncluded“ festgelegt ist.", - "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includeSymbolsNextToModules.description": "Wenn „true“, wird der Debugger für ein beliebiges Modul, das sich NICHT im Array „includedModules“ befindet, weiterhin neben dem Modul selbst und der ausführbaren Datei, die gestartet wird, überprüfen. Die Pfade in der Symbolsuchliste werden jedoch nicht überprüft. Diese Option ist standardmäßig auf „true“ eingestellt.\n\nDiese Eigenschaft wird ignoriert, wenn „Modus“ nicht auf „loadOnlyIncluded“ festgelegt ist." + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includeSymbolsNextToModules.description": "Wenn „true“, wird der Debugger für ein beliebiges Modul, das sich NICHT im Array „includedModules“ befindet, weiterhin neben dem Modul selbst und der ausführbaren Datei, die gestartet wird, überprüfen. Die Pfade in der Symbolsuchliste werden jedoch nicht überprüft. Diese Option ist standardmäßig auf „true“ eingestellt.\n\nDiese Eigenschaft wird ignoriert, wenn „Modus“ nicht auf „loadOnlyIncluded“ festgelegt ist.", + "c_cpp.semanticTokenTypes.referenceType.description": "Stil für C++-/CLI-Referenztypen.", + "c_cpp.semanticTokenTypes.cliProperty.description": "Stil für C++-/CLI-Eigenschaften.", + "c_cpp.semanticTokenTypes.genericType.description": "Stil für generische C++-/CLI-Typen.", + "c_cpp.semanticTokenTypes.valueType.description": "Stil für C++-/CLI-Werttypen.", + "c_cpp.semanticTokenTypes.templateFunction.description": "Stil für C++-Vorlagenfunktionen.", + "c_cpp.semanticTokenTypes.templateType.description": "Stil für C++-Vorlagentypen.", + "c_cpp.semanticTokenTypes.operatorOverload.description": "Stil für überladene C++-Operatoren.", + "c_cpp.semanticTokenTypes.memberOperatorOverload.description": "Stil für Mitgliederfunktionen von überladenen C++-Operatoren.", + "c_cpp.semanticTokenTypes.newOperator.description": "Stil für den C++-Operator „New“ oder „Delete“.", + "c_cpp.semanticTokenTypes.customLiteral.description": "Stil für benutzerdefinierte C++-Literale.", + "c_cpp.semanticTokenTypes.numberLiteral.description": "Stil für benutzerdefinierte C++-Literalnummern.", + "c_cpp.semanticTokenTypes.stringLiteral.description": "Stil für benutzerdefinierte C++-Literalzeichenfolgen.", + "c_cpp.semanticTokenModifiers.global.description": "Stil für globale Symbole.", + "c_cpp.semanticTokenModifiers.local.description": "Stil für lokale Symbole." } \ No newline at end of file diff --git a/Extension/i18n/esn/c_cpp_properties.schema.json.i18n.json b/Extension/i18n/esn/c_cpp_properties.schema.json.i18n.json index b989a0f8db..cdd582a449 100644 --- a/Extension/i18n/esn/c_cpp_properties.schema.json.i18n.json +++ b/Extension/i18n/esn/c_cpp_properties.schema.json.i18n.json @@ -20,7 +20,7 @@ "c_cpp_properties.schema.json.definitions.configurations.items.properties.mergeConfigurations": "Se establece en `true` para combinar las rutas de acceso de inclusión, las definiciones y las inclusión forzadas con las de un proveedor de configuración.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.browse.properties.limitSymbolsToIncludedHeaders": "Establecer `true` para procesar únicamente los archivos incluidos directa o indirectamente como encabezados. Establecer `false` para procesar todos los archivos en las rutas de acceso de inclusión especificadas.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.browse.properties.databaseFilename": "Ruta de acceso a la base de datos de símbolos generada. Si se especifica una ruta de acceso relativa, será relativa a la ubicación de almacenamiento predeterminada del área de trabajo.", - "c_cpp_properties.schema.json.definitions.configurations.items.properties.browse.properties.path": "Lista de rutas de acceso que se usarán para indexar y analizar símbolos del área de trabajo (que se usarán con comandos como 'Ir a definición', 'Buscar todas las referencias', etc.). La búsqueda en estas rutas de acceso es recursiva de forma predeterminada. Especifique `*` para indicar una búsqueda no recursiva. Por ejemplo, `${workspaceFolder}` buscará en todos los subdirectorios, mientras que `${workspaceFolder}/*` no lo hará.", + "c_cpp_properties.schema.json.definitions.configurations.items.properties.browse.properties.path": "Lista de rutas de acceso que se usarán para indexar y analizar símbolos del área de trabajo (que se usarán con comandos como 'Go to Definition', 'Find All References', etc.). La búsqueda en estas rutas de acceso es recursiva de forma predeterminada. Especifique `*` para indicar una búsqueda no recursiva. Por ejemplo, `${workspaceFolder}` buscará en todos los subdirectorios, mientras que `${workspaceFolder}/*` no lo hará.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.customConfigurationVariables": "Variables personalizadas que pueden consultarse mediante el comando `${cpptools:activeConfigCustomVariable}` para utilizarlas en las variables de entrada en `launch.json` o `tasks.json`.", "c_cpp_properties.schema.json.definitions.env": "Las variables personalizadas se pueden reutilizar en cualquier ubicación del archivo mediante la sintaxis `${variable}` o `${env:variable}`.", "c_cpp_properties.schema.json.definitions.version": "Versión del archivo de configuración. La extensión administra esta propiedad, no la modifique.", diff --git a/Extension/i18n/esn/package.i18n.json b/Extension/i18n/esn/package.i18n.json index fc300cb908..d08b0be571 100644 --- a/Extension/i18n/esn/package.i18n.json +++ b/Extension/i18n/esn/package.i18n.json @@ -31,29 +31,29 @@ "c_cpp.command.RunCodeAnalysisOnOpenFiles.title": "Ejecutar análisis de código en archivos abiertos", "c_cpp.command.RunCodeAnalysisOnAllFiles.title": "Ejecutar análisis de código en todos los archivos", "c_cpp.command.ClearCodeAnalysisSquiggles.title": "Borrar el subrayado ondulado de Code Analysis", - "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "Número máximo de subprocesos simultáneos que se usarán para el procesamiento del servicio de lenguaje. El valor es una sugerencia y no se puede usar siempre. El valor predeterminado de \"null\" (vacío) usa el número de procesadores lógicos disponibles.", - "c_cpp.configuration.maxCachedProcesses.markdownDescription": "Número máximo de procesos almacenados en caché que se usarán para el procesamiento del servicio de lenguaje. El valor predeterminado de \"null\" (vacío) usa el doble de procesadores lógicos disponibles.", - "c_cpp.configuration.maxMemory.markdownDescription": "Memoria máxima (en MB) disponible para el procesamiento del servicio de lenguaje. Menos procesos se almacenarán en caché y se ejecutarán simultáneamente después de que se supere el uso de memoria. El valor predeterminado de \"null\" (vacío) usa la memoria libre del sistema.", - "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "Número máximo de procesos de IntelliSense que se van a seguir ejecutando. El valor predeterminado de \"null\" (vacío) usa un valor heredado de \"#C_Cpp.maxCachedProcesses#\"", - "c_cpp.configuration.intelliSense.maxMemory.markdownDescription": "Los procesos anteriores de IntelliSense se cerrarán antes de que se creen nuevos procesos después de superar este uso de memoria (en MB). El valor predeterminado de \"null\" (vacío) usa el valor heredado de \"#C_Cpp.maxMemory#\".", - "c_cpp.configuration.references.maxConcurrentThreads.markdownDescription": "Número máximo de subprocesos simultáneos que se usarán para \"Buscar todas las referencias\" y \"Cambiar nombre\". El valor predeterminado de \"null\" (vacío) usa el valor heredado de \"#C_Cpp.maxConcurrentThreads#\".", - "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "Número máximo de procesos que se mantendrán en memoria para \"Buscar todas las referencias\" y \"Cambiar nombre\". El valor de \"null\" (vacío) usa el valor heredado de \"#C_Cpp.maxCachedProcesses#\".", - "c_cpp.configuration.references.maxMemory.markdownDescription": "Menos procesos de \"Buscar todas las referencias\" y \"Cambiar nombre\" se ejecutarán simultáneamente después de superar este uso de memoria (en MB). El valor predeterminado de \"null\" (vacío) usa el valor heredado de \"#C_Cpp.maxMemory#\".", - "c_cpp.configuration.codeAnalysis.maxConcurrentThreads.markdownDescription": "Número máximo de subprocesos simultáneos que se usarán para análisis de código. El valor predeterminado de \"null\" (vacío) usa la mitad del valor heredado de \"#C_Cpp.maxConcurrentThreads#\".", - "c_cpp.configuration.codeAnalysis.maxMemory.markdownDescription": "Menos procesos de análisis de código se ejecutarán simultáneamente después de superar este uso de memoria (en MB). El valor predeterminado de \"null\" (vacío) usa el valor heredado de \"#C_Cpp.maxMemory#\".", - "c_cpp.configuration.codeAnalysis.updateDelay.markdownDescription": "Controla el retraso en milisegundos antes de que el análisis de código empiece a procesarse después de que se desencadene un guardado desde una edición cuando \"#files.autoSave#\" es \"afterDelay\" y \"#C_Cpp.codeAnalysis.runAutomatically#\" es \"true\".", - "c_cpp.configuration.codeAnalysis.exclude.markdownDescription": "Configure patrones globales para excluir carpetas y archivos para el análisis de código. Los archivos que no estén en la carpeta del área de trabajo siempre se excluyen. Hereda valores de \"#files.exclude#\" y \"#C_Cpp.files.exclude#\". Más información sobre los patrones globales [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "Número máximo de subprocesos simultáneos que se usarán para el procesamiento del servicio de lenguaje. El valor es una sugerencia y no se puede usar siempre. El valor predeterminado de `null` (vacío) usa el número de procesadores lógicos disponibles.", + "c_cpp.configuration.maxCachedProcesses.markdownDescription": "Número máximo de procesos almacenados en caché que se usarán para el procesamiento del servicio de lenguaje. El valor predeterminado de `null` (vacío) usa el doble de procesadores lógicos disponibles.", + "c_cpp.configuration.maxMemory.markdownDescription": "Memoria máxima (en MB) disponible para el procesamiento del servicio de lenguaje. Menos procesos se almacenarán en caché y se ejecutarán simultáneamente después de que se supere el uso de memoria. El valor predeterminado de `null` (vacío) usa la memoria libre del sistema.", + "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "Número máximo de procesos de IntelliSense que se van a seguir ejecutando. El valor predeterminado de `null` (vacío) usa el valor heredado de `#C_Cpp.maxCachedProcesses#`.", + "c_cpp.configuration.intelliSense.maxMemory.markdownDescription": "Los procesos anteriores de IntelliSense se cerrarán antes de que se creen nuevos procesos después de superar este uso de memoria (en MB). El valor predeterminado de `null` (vacío) usa el valor heredado de `#C_Cpp.maxMemory#`.", + "c_cpp.configuration.references.maxConcurrentThreads.markdownDescription": "Número máximo de subprocesos simultáneos que se usarán para \"Buscar todas las referencias\" y \"Cambiar nombre\". El valor predeterminado de `null` (vacío) usa el valor heredado de `#C_Cpp.maxConcurrentThreads#`.", + "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "Número máximo de procesos que se mantendrán en memoria para \"Buscar todas las referencias\" y \"Cambiar nombre\". El valor `0` deshabilita esta característica. El valor de `null` (vacío) usa el valor heredado de `#C_Cpp.maxCachedProcesses#`.", + "c_cpp.configuration.references.maxMemory.markdownDescription": "Menos procesos de \"Buscar todas las referencias\" y \"Cambiar nombre\" se ejecutarán simultáneamente después de superar este uso de memoria (en MB). El valor predeterminado de `null` (vacío) usa el valor heredado de `#C_Cpp.maxMemory#`.", + "c_cpp.configuration.codeAnalysis.maxConcurrentThreads.markdownDescription": "Número máximo de subprocesos simultáneos que se usarán para análisis de código. El valor predeterminado de `null` (vacío) usa la mitad del valor heredado de `#C_Cpp.maxConcurrentThreads#`.", + "c_cpp.configuration.codeAnalysis.maxMemory.markdownDescription": "Menos procesos de análisis de código se ejecutarán simultáneamente después de superar este uso de memoria (en MB). El valor predeterminado de `null` (vacío) usa el valor heredado de `#C_Cpp.maxMemory#`.", + "c_cpp.configuration.codeAnalysis.updateDelay.markdownDescription": "Controla el retraso en milisegundos antes de que el análisis de código empiece a procesarse después de que se desencadene un guardado desde una edición cuando `#files.autoSave#` es `afterDelay` y `#C_Cpp.codeAnalysis.runAutomatically#` es `true`.", + "c_cpp.configuration.codeAnalysis.exclude.markdownDescription": "Configure patrones globales para excluir carpetas y archivos para el análisis de código. Los archivos que no estén en la carpeta del área de trabajo siempre se excluyen. Hereda valores de `#files.exclude#` y `#C_Cpp.files.exclude#`. Más información sobre los patrones globales [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", "c_cpp.configuration.codeAnalysis.excludeBoolean.markdownDescription": "El patrón global con el que se van a comparar las rutas de acceso de los archivos. Establézcalo en` true` o `false` para habilitarlo o deshabilitarlo.", "c_cpp.configuration.codeAnalysis.excludeWhen.markdownDescription": "Comprobación adicional de los elementos del mismo nivel de un archivo coincidente. Usa `$(basename)` como variable para el nombre del archivo coincidente.", - "c_cpp.configuration.codeAnalysis.runAutomatically.markdownDescription": "Si es \"true\", el análisis de código se ejecutará automáticamente en un archivo después de abrirlo o guardarlo.", - "c_cpp.configuration.codeAnalysis.clangTidy.enabled.markdownDescription": "Si es \"true\", el análisis de código que usa \"clang-tidy\" se habilitará y se ejecutará automáticamente si \"#C_Cpp.codeAnalysis.runAutomatically#\" es \"true\" (valor predeterminado).", - "c_cpp.configuration.codeAnalysis.clangTidy.path.markdownDescription": "Ruta de acceso completa del archivo ejecutable de \"clang-tidy\". Si no se especifica y \"clang-tidy\" está disponible en la ruta de acceso del entorno, se usará este. Si no se encuentra en la ruta de acceso del entorno, se usará el \"clang-tidy\" incluido con la extensión.", - "c_cpp.configuration.codeAnalysis.clangTidy.config.markdownDescription": "Especifica una configuración \"clang-tidy\" en formato YAML/JSON: \"{Checks: '-*,clang-analyzer-*', CheckOptions: [{key: x, value: y}]}\". Cuando el valor está vacío, \"clang-tidy\" intentará encontrar un archivo denominado \".clang-tidy\" para cada archivo de origen en sus directorios primarios.", - "c_cpp.configuration.codeAnalysis.clangTidy.fallbackConfig.markdownDescription": "Especifica una configuración \"clang-tidy\" en formato YAML/JSON que se usará como reserva cuando no se establezca \"#C_Cpp.codeAnalysis.clangTidy.config#\" y no se encuentre ningún archivo \".clang-tidy\": \"{Checks: \"-*,clang-analyzer-*\", CheckOptions: [{key: x, value: y}]}\".", - "c_cpp.configuration.codeAnalysis.clangTidy.headerFilter.markdownDescription": "Expresión regular extendida (ERE) POSIX que coincide con los nombres de los encabezados de los que se van a generar diagnósticos. Siempre se muestran los diagnósticos del archivo principal de cada unidad de traducción. Se admite la variable '${workspaceFolder}' (y se usa como valor de reserva predeterminado si no existe ningún archivo '.clang-tidy'). Si esta opción no es 'null' (vacía), invalida la opción 'HeaderFilterRegex' en un archivo '.clang-tidy', si existe.", - "c_cpp.configuration.codeAnalysis.clangTidy.args.markdownDescription": "Argumentos adicionales de la línea de comandos que se pasan a \"clang-tidy\". Tienen prioridad sobre la configuración equivalente \"C_Cpp.codeAnalysis.clangTidy.*\".", - "c_cpp.configuration.codeAnalysis.clangTidy.checks.enabled.markdownDescription": "Lista de comprobaciones \"clang-tidy\" habilitadas. Los valores se anexan a \"Checks\" en un archivo \".clang-tidy\" o \"#C_Cpp.codeAnalysis.clangTidy.config#\", si los hay. La comprobación predeterminada \"clang-analyzer-*\" se usa siempre a menos que se deshabilite explícitamente.", - "c_cpp.configuration.codeAnalysis.clangTidy.checks.disabled.markdownDescription": "Lista de comprobaciones \"clang-tidy\" deshabilitadas. Los valores se anexan a \"Checks\" en un archivo \".clang-tidy\" o \"#C_Cpp.codeAnalysis.clangTidy.config#\", si los hay.", + "c_cpp.configuration.codeAnalysis.runAutomatically.markdownDescription": "Si es `true`, el análisis de código se ejecutará automáticamente en un archivo después de abrirlo o guardarlo.", + "c_cpp.configuration.codeAnalysis.clangTidy.enabled.markdownDescription": "Si es `true`, el análisis de código que usa `clang-tidy` se habilitará y se ejecutará automáticamente si `#C_Cpp.codeAnalysis.runAutomatically#` es `true` (valor predeterminado).", + "c_cpp.configuration.codeAnalysis.clangTidy.path.markdownDescription": "Ruta de acceso completa del archivo ejecutable de `clang-tidy`. Si no se especifica y `clang-tidy` está disponible en la ruta de acceso del entorno, se usará este. Si no se encuentra en la ruta de acceso del entorno, se usará el `clang-tidy` incluido con la extensión.", + "c_cpp.configuration.codeAnalysis.clangTidy.config.markdownDescription": "Especifica una configuración `clang-tidy` en formato YAML/JSON: `{Checks: '-*,clang-analyzer-*', CheckOptions: [{key: x, value: y}]}`. Cuando el valor está vacío, `clang-tidy` intentará encontrar un archivo denominado `.clang-tidy` para cada archivo de origen en sus directorios primarios.", + "c_cpp.configuration.codeAnalysis.clangTidy.fallbackConfig.markdownDescription": "Especifica una configuración `clang-tidy` en formato YAML/JSON que se usará como reserva cuando no se establezca `#C_Cpp.codeAnalysis.clangTidy.config#` y no se encuentre ningún archivo `.clang-tidy`: `{Checks: \"-*,clang-analyzer-*\", CheckOptions: [{key: x, value: y}]}`.", + "c_cpp.configuration.codeAnalysis.clangTidy.headerFilter.markdownDescription": "Expresión regular extendida (ERE) POSIX que coincide con los nombres de los encabezados de los que se van a generar diagnósticos. Siempre se muestran los diagnósticos del archivo principal de cada unidad de traducción. Se admite la variable `${workspaceFolder}` (y se usa como valor de reserva predeterminado si no existe ningún archivo `.clang-tidy`). Si esta opción no es `null` (vacía), invalida la opción `HeaderFilterRegex` en un archivo `.clang-tidy`, si existe.", + "c_cpp.configuration.codeAnalysis.clangTidy.args.markdownDescription": "Argumentos adicionales de la línea de comandos que se pasan a `clang-tidy`. Tienen prioridad sobre la configuración equivalente `C_Cpp.codeAnalysis.clangTidy.*`.", + "c_cpp.configuration.codeAnalysis.clangTidy.checks.enabled.markdownDescription": "Lista de comprobaciones `clang-tidy` habilitadas. Los valores se anexan a `Checks` en un archivo `.clang-tidy` o `#C_Cpp.codeAnalysis.clangTidy.config#`, si los hay. La comprobación predeterminada `clang-analyzer-*` se usa siempre a menos que se deshabilite explícitamente.", + "c_cpp.configuration.codeAnalysis.clangTidy.checks.disabled.markdownDescription": "Lista de comprobaciones `clang-tidy` deshabilitadas. Los valores se anexan a `Checks` en un archivo `.clang-tidy` o `#C_Cpp.codeAnalysis.clangTidy.config#`, si los hay.", "c_cpp.configuration.formatting.description": "Configura el motor de formato", "c_cpp.configuration.formatting.clangFormat.markdownDescription": "`clang-format` se usará para formatear el código.", "c_cpp.configuration.formatting.vcFormat.markdownDescription": "El motor de formato de Visual C++ se usará para formatear el código.", @@ -205,14 +205,14 @@ "c_cpp.configuration.codeFolding.description": "Si está habilitada, el servidor de lenguaje proporciona intervalos de plegado de código.", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "Habilita los servicios de integración para [administrador de dependencias de vcpkg](https://aka.ms/vcpkg/).", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "Agrega rutas de acceso de inclusión de `nan` y `node-addon-api` cuando sean dependencias.", - "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Si es `true`, 'Cambiar el nombre del símbolo' requerirá un identificador de C/C++ válido.", + "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Si es `true`, 'Rename Symbol' requerirá un identificador de C/C++ válido.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "Si es `true`, la opción de autocompletar agregará `(` de forma automática después de las llamadas a funciones, en cuyo caso puede que también se agregue `)`, en función del valor de la configuración de `editor.autoClosingBrackets`.", "c_cpp.configuration.filesExclude.markdownDescription": "Configura patrones globales para excluir carpetas (y archivos si se cambia `#C_Cpp.exclusionPolicy#`). Estos son específicos de la extensión de C/C++ y se agregan a `#files.exclude#`, pero a diferencia de `#files.exclude#` también se aplican a rutas fuera de la carpeta del área de trabajo actual y no se quitan de la Vista del explorador. Más información acerca de los patrones de globales [aquí](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", "c_cpp.configuration.filesExcludeBoolean.markdownDescription": "El patrón global con el que se van a comparar las rutas de acceso de los archivos. Establézcalo en` true` o `false` para habilitarlo o deshabilitarlo.", "c_cpp.configuration.filesExcludeWhen.markdownDescription": "Comprobación adicional de los elementos del mismo nivel de un archivo coincidente. Usa `$(basename)` como variable para el nombre del archivo coincidente.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.markdownDescription": "Si es `true`, la sustitución de comandos del shell del depurador usará la marca de acento grave (`) obsoleta.", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: resultados de otras referencias.", - "c_cpp.contributes.viewsWelcome.contents": "Para obtener más información sobre launch.json, vea [configurar depuración de C/C++](https://code.visualstudio.com/docs/cpp/launch-json-reference).", + "c_cpp.contributes.viewsWelcome.contents": "Para obtener más información sobre launch.json, vea [configurar depuración de C/C++]](https://code.visualstudio.com/docs/cpp/launch-json-reference).", "c_cpp.debuggers.pipeTransport.description": "Cuando se especifica, indica al depurador que se conecte a un equipo remoto usando otro archivo ejecutable como canalización que retransmitirá la entrada o la salida estándar entre VS Code y el archivo ejecutable del back-end del depurador habilitado para MI (por ejemplo, gdb).", "c_cpp.debuggers.pipeTransport.default.pipeProgram": "escriba la ruta de acceso absoluta para el nombre del programa de canalización; por ejemplo, \"/usr/bin/ssh\".", "c_cpp.debuggers.pipeTransport.default.debuggerPath": "Ruta de acceso completa al depurador en la máquina de destino. Por ejemplo, /usr/bin/gdb.", @@ -305,5 +305,19 @@ "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.loadOnlyIncluded.enumDescriptions": "No intente cargar los símbolos de NINGÚN módulo a menos que esté en la matriz «includedModules» o se incluya a través de la configuración «includeSymbolsNextToModules».", "c_cpp.debuggers.VSSymbolOptionsModuleFilter.excludedModules.description": "Matriz de módulos para los que el depurador NO debería cargar símbolos. Se admiten los caracteres comodín (ejemplo: MiEmpresa.*.dll).\n\nEsta propiedad se ignora a menos que «modo» se establezca como «loadAllButExcluded».", "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includedModules.description": "Matriz de módulos para los que el depurador debería cargar símbolos. Se admiten los caracteres comodín (ejemplo: MiEmpresa.*.dll).\n\nEsta propiedad se ignora a menos que «modo» se establezca como «loadOnlyIncluded».", - "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includeSymbolsNextToModules.description": "Si es verdadero, para cualquier módulo que NO esté en la matriz «includedModules», el depurador seguirá comprobando junto al propio módulo y el ejecutable de inicio, pero no comprobará las rutas en la lista de búsqueda de símbolos. Esta opción tiene el valor predeterminado «verdadero».\n\nEsta propiedad se omite a menos que «modo» esté establecido como «loadOnlyIncluded»." + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includeSymbolsNextToModules.description": "Si es verdadero, para cualquier módulo que NO esté en la matriz «includedModules», el depurador seguirá comprobando junto al propio módulo y el ejecutable de inicio, pero no comprobará las rutas en la lista de búsqueda de símbolos. Esta opción tiene el valor predeterminado «verdadero».\n\nEsta propiedad se omite a menos que «modo» esté establecido como «loadOnlyIncluded».", + "c_cpp.semanticTokenTypes.referenceType.description": "Estilo para tipos de referencia de C++/CLI.", + "c_cpp.semanticTokenTypes.cliProperty.description": "Estilo para las propiedades de C++/CLI.", + "c_cpp.semanticTokenTypes.genericType.description": "Estilo para tipos genéricos de C++/CLI.", + "c_cpp.semanticTokenTypes.valueType.description": "Estilo para tipos de valor de C++/CLI.", + "c_cpp.semanticTokenTypes.templateFunction.description": "Estilo para funciones de plantilla de C++.", + "c_cpp.semanticTokenTypes.templateType.description": "Estilo para tipos de plantilla de C++.", + "c_cpp.semanticTokenTypes.operatorOverload.description": "Estilo para operadores sobrecargados de C++.", + "c_cpp.semanticTokenTypes.memberOperatorOverload.description": "Estilo para funciones miembro de operador sobrecargado de C++.", + "c_cpp.semanticTokenTypes.newOperator.description": "Estilo para operadores nuevos o de eliminación de C++.", + "c_cpp.semanticTokenTypes.customLiteral.description": "Estilo para literales definidos por el usuario de C++.", + "c_cpp.semanticTokenTypes.numberLiteral.description": "Estilo para números literales definidos por el usuario de C++.", + "c_cpp.semanticTokenTypes.stringLiteral.description": "Estilo para cadenas literales definidas por el usuario de C++.", + "c_cpp.semanticTokenModifiers.global.description": "Estilo que se va a usar para símbolos globales.", + "c_cpp.semanticTokenModifiers.local.description": "Estilo que se va a usar para símbolos locales." } \ No newline at end of file diff --git a/Extension/i18n/fra/package.i18n.json b/Extension/i18n/fra/package.i18n.json index e18f9645da..df36ba3416 100644 --- a/Extension/i18n/fra/package.i18n.json +++ b/Extension/i18n/fra/package.i18n.json @@ -31,30 +31,30 @@ "c_cpp.command.RunCodeAnalysisOnOpenFiles.title": "Exécuter une analyse de code sur Ouvrir les fichiers", "c_cpp.command.RunCodeAnalysisOnAllFiles.title": "Exécuter une analyse de code sur Tous les fichiers", "c_cpp.command.ClearCodeAnalysisSquiggles.title": "Effacer les tildes Code Analysis", - "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "Nombre maximal de threads simultanés à utiliser pour le traitement du service de langage. La valeur est un indicateur et ne peut pas toujours être utilisée. La valeur par défaut de 'null' (vide) utilise le nombre de processeurs logiques disponibles.", - "c_cpp.configuration.maxCachedProcesses.markdownDescription": "Nombre maximal de processus mis en cache à utiliser pour le traitement du service de langage. La valeur par défaut de 'null' (vide) utilise deux fois plus de processeurs logiques disponibles.", - "c_cpp.configuration.maxMemory.markdownDescription": "Mémoire maximale (en Mo) disponible pour le traitement du service de langage. Moins de processus seront mis en cache et exécutés simultanément après le dépassement de cette utilisation de la mémoire. La valeur par défaut de 'null' (vide) utilise la mémoire libre du système.", - "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "Nombre maximal de processus IntelliSense pour continuer à s’exécuter. La valeur par défaut de 'null' (vide) utilise la valeur héritée de '#C_Cpp.maxCachedProcesses#'", - "c_cpp.configuration.intelliSense.maxMemory.markdownDescription": "Les anciens processus IntelliSense s’arrêteront avant la création de nouveaux processus après le dépassement de cette utilisation de mémoire (en Mo). La valeur par défaut de 'null' (vide) utilise la valeur héritée de '#C_Cpp.maxMemory#'.", - "c_cpp.configuration.references.maxConcurrentThreads.markdownDescription": "Nombre maximal de threads simultanés à utiliser pour 'Rechercher toutes les références' et 'Renommer'. La valeur par défaut de 'null' (vide) utilise la valeur héritée de '#C_Cpp.maxConcurrentThreads#'.", - "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "Nombre maximal de processus à conserver en mémoire pour 'Rechercher toutes les références' et 'Renommer'. La valeur de 'null' (vide) utilise la valeur héritée de '#C_Cpp.maxCachedProcesses#'.", + "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "Nombre maximal de threads simultanés à utiliser pour le traitement du service de langage. La valeur est un indicateur et ne peut pas toujours être utilisée. La valeur par défaut de `null` (vide) utilise le nombre de processeurs logiques disponibles.", + "c_cpp.configuration.maxCachedProcesses.markdownDescription": "Nombre maximal de processus mis en cache à utiliser pour le traitement du service de langage. La valeur par défaut de `null` (vide) utilise deux fois plus de processeurs logiques disponibles.", + "c_cpp.configuration.maxMemory.markdownDescription": "Mémoire maximale (en Mo) disponible pour le traitement du service de langage. Moins de processus seront mis en cache et exécutés simultanément après le dépassement de cette utilisation de la mémoire. La valeur par défaut de `null` (vide) utilise la mémoire libre du système.", + "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "Nombre maximal de processus IntelliSense pour continuer à s’exécuter. La valeur par défaut de `null` (vide) utilise la valeur héritée de `#C_Cpp.maxCachedProcesses#`.", + "c_cpp.configuration.intelliSense.maxMemory.markdownDescription": "Les anciens processus IntelliSense s’arrêteront avant la création de nouveaux processus après le dépassement de cette utilisation de mémoire (en Mo). La valeur par défaut de `null` (vide) utilise la valeur héritée de `#C_Cpp.maxMemory#`.", + "c_cpp.configuration.references.maxConcurrentThreads.markdownDescription": "Nombre maximal de threads simultanés à utiliser pour 'Rechercher toutes les références' et 'Renommer'. La valeur par défaut de `null` (vide) utilise la valeur héritée de `#C_Cpp.maxConcurrentThreads#`.", + "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "Nombre maximal de processus à conserver en mémoire pour « Rechercher toutes les références » et « Renommer ». La valeur par défaut de `0` désactive cette fonctionnalité. La valeur de `null` (vide) utilise la valeur héritée de `#C_Cpp.maxCachedProcesses#`.", "c_cpp.configuration.references.maxMemory.markdownDescription": "Moins de processus \"Rechercher toutes les références\" et \"Renommer\" seront mis en cache et exécutés simultanément après que cette utilisation de la mémoire (en Mo) soit dépassée. La valeur par défaut de `null` (vide) utilise la valeur héritée de `#C_Cpp.maxMemory#`.", "c_cpp.configuration.codeAnalysis.maxConcurrentThreads.markdownDescription": "Le nombre maximum de threads simultanés à utiliser pour l'analyse de code. La valeur par défaut de `null` (vide) utilise la moitié de la valeur héritée de `#C_Cpp.maxConcurrentThreads#`.", - "c_cpp.configuration.codeAnalysis.maxMemory.markdownDescription": "Moins de processus d’analyse du code s’exécuteront simultanément après le dépassement de cette utilisation de la mémoire (en Mo). La valeur par défaut de 'null' (vide) utilise la valeur héritée de '#C_Cpp.maxMemory#'.", - "c_cpp.configuration.codeAnalysis.updateDelay.markdownDescription": "Contrôle le délai en millisecondes avant le début du traitement de l’analyse du code après le déclenchement d’un enregistrement à partir d’une modification quand '#files.autoSave#' a la valeur 'afterDelay' et '#C_Cpp.codeAnalysis.runAutomatically#' a la valeur 'true'.", - "c_cpp.configuration.codeAnalysis.exclude.markdownDescription": "Configurez des modèles Glob pour exclure des dossiers et des fichiers pour l’analyse du code. Les fichiers qui ne se trouvent pas dans le dossier de l’espace de travail sont toujours exclus. Hérite des valeurs de '#files.exclude#' et '#C_Cpp.files.exclude#'. En savoir plus sur les modèles Glob [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.codeAnalysis.maxMemory.markdownDescription": "Moins de processus d’analyse du code s’exécuteront simultanément après le dépassement de cette utilisation de la mémoire (en Mo). La valeur par défaut de `null` (vide) utilise la valeur héritée de `#C_Cpp.maxMemory#`.", + "c_cpp.configuration.codeAnalysis.updateDelay.markdownDescription": "Contrôle le délai en millisecondes avant le début du traitement de l’analyse du code après le déclenchement d’un enregistrement à partir d’une modification quand `#files.autoSave#` a la valeur `afterDelay` et `#C_Cpp.codeAnalysis.runAutomatically#` a la valeur `true`.", + "c_cpp.configuration.codeAnalysis.exclude.markdownDescription": "Configurez des modèles Glob pour exclure des dossiers et des fichiers pour l’analyse du code. Les fichiers qui ne se trouvent pas dans le dossier de l’espace de travail sont toujours exclus. Hérite des valeurs de `#files.exclude#` et `#C_Cpp.files.exclude#`. En savoir plus sur les modèles Glob [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", "c_cpp.configuration.codeAnalysis.excludeBoolean.markdownDescription": "Le modèle global pour la correspondance des chemins de fichiers. Définissez-le à `true` ou `false` pour activer ou désactiver le motif.", "c_cpp.configuration.codeAnalysis.excludeWhen.markdownDescription": "Vérification supplémentaire des frères d'un fichier correspondant. Utilisez `$(basename)` comme variable pour le nom de fichier correspondant.", - "c_cpp.configuration.codeAnalysis.runAutomatically.markdownDescription": "Si la valeur est 'true', l’analyse du code s’exécute automatiquement sur un fichier une fois qu’il est ouvert ou enregistré.", - "c_cpp.configuration.codeAnalysis.clangTidy.enabled.markdownDescription": "Si la valeur est 'true', l’analyse du code à l’aide de 'clang-tidy' est activée et s’exécute automatiquement si '#C_Cpp.codeAnalysis.runAutomatically#' a la valeur 'true' (valeur par défaut).", + "c_cpp.configuration.codeAnalysis.runAutomatically.markdownDescription": "Si la valeur est `true`, l’analyse du code s’exécute automatiquement sur un fichier une fois qu’il est ouvert ou enregistré.", + "c_cpp.configuration.codeAnalysis.clangTidy.enabled.markdownDescription": "Si la valeur est `true`, l’analyse du code à l’aide de `clang-tidy` est activée et s’exécute automatiquement si `#C_Cpp.codeAnalysis.runAutomatically#` a la valeur `true` (valeur par défaut).", "c_cpp.configuration.codeAnalysis.clangTidy.path.markdownDescription": "Le chemin complet de l'exécutable `clang-tidy`. S'il n'est pas spécifié, et que `clang-tidy` est disponible dans le chemin de l'environnement, il sera utilisé. S'il n'est pas trouvé dans le chemin de l'environnement, le `clang-tidy` fourni avec l'extension sera utilisé.", - "c_cpp.configuration.codeAnalysis.clangTidy.config.markdownDescription": "Spécifie une configuration 'clang-tidy' au format YAML/JSON : '{Checks: '-*,clang-analyzer-*', CheckOptions : [{key: x, value: y}]}'. Quand la valeur est vide, 'clang-tidy' tente de trouver un fichier nommé '.clang-tidy' pour chaque fichier source dans ses répertoires parents.", - "c_cpp.configuration.codeAnalysis.clangTidy.fallbackConfig.markdownDescription": "Spécifie une configuration 'clang-tidy' au format YAML/JSON à utiliser comme secours quand '#C_Cpp.codeAnalysis.clangTidy.config#' n’est pas défini et qu’aucun fichier '.clang-tidy' n’est trouvé : '{Checks: '-*,clang-analyzer-*', CheckOptions : [{key: x, value: y}]}'.", + "c_cpp.configuration.codeAnalysis.clangTidy.config.markdownDescription": "Spécifie une configuration `clang-tidy` au format YAML/JSON : `{Checks: '-*,clang-analyzer-*', CheckOptions : [{key: x, value: y}]}`. Quand la valeur est vide, `clang-tidy` tente de trouver un fichier nommé `.clang-tidy` pour chaque fichier source dans ses répertoires parents.", + "c_cpp.configuration.codeAnalysis.clangTidy.fallbackConfig.markdownDescription": "Spécifie une configuration `clang-tidy` au format YAML/JSON à utiliser comme secours quand `#C_Cpp.codeAnalysis.clangTidy.config#` n’est pas défini et qu’aucun fichier `.clang-tidy` n’est trouvé : `{Checks: '-*,clang-analyzer-*', CheckOptions : [{key: x, value: y}]}`.", "c_cpp.configuration.codeAnalysis.clangTidy.headerFilter.markdownDescription": "Expression régulière étendue POSIX (ERE) correspondant aux noms des en-têtes à partir des diagnostics de sortie. Les diagnostics du fichier principal de chaque unité de traduction sont toujours affichés. La variable « ${workspaceFolder} » est prise en charge (et est utilisée comme valeur de secours par défaut si aucun fichier « .clang-tidy » n’existe). Si cette option n’est pas « null » (vide), elle remplace l’option « HeaderFilterRegex » dans un fichier « .clang-tidy », le cas échéant.", - "c_cpp.configuration.codeAnalysis.clangTidy.args.markdownDescription": "Arguments de ligne de commande supplémentaires à passer à 'clang-tidy'. Ces paramètres sont prioritaires sur les paramètres équivalents 'C_Cpp.codeAnalysis.clangTidy.*'.", - "c_cpp.configuration.codeAnalysis.clangTidy.checks.enabled.markdownDescription": "Liste des vérifications « clang-tidy » activées. Les valeurs sont ajoutées aux ' Checks' dans un fichier '.clang-tidy' ou '#C_Cpp.codeAnalysis.clangTidy.config#', le cas échéant. La vérification par défaut 'clang-analyzer-*' est toujours utilisée, sauf si elle est explicitement désactivée.", - "c_cpp.configuration.codeAnalysis.clangTidy.checks.disabled.markdownDescription": "Liste des vérifications « clang-tidy » désactivées. Les valeurs sont ajoutées aux ' Checks' dans un fichier '.clang-tidy' ou '#C_Cpp.codeAnalysis.clangTidy.config#', le cas échéant.", - "c_cpp.configuration.formatting.description": "Configure le moteur de mise en forme", + "c_cpp.configuration.codeAnalysis.clangTidy.args.markdownDescription": "Arguments de ligne de commande supplémentaires à passer à `clang-tidy`. Ces paramètres sont prioritaires sur les paramètres équivalents `C_Cpp.codeAnalysis.clangTidy.*`.", + "c_cpp.configuration.codeAnalysis.clangTidy.checks.enabled.markdownDescription": "Liste des vérifications `clang-tidy` activées. Les valeurs sont ajoutées aux `Checks` dans un fichier `.clang-tidy` ou `#C_Cpp.codeAnalysis.clangTidy.config#`, le cas échéant. La vérification par défaut `clang-analyzer-*` est toujours utilisée, sauf si elle est explicitement désactivée.", + "c_cpp.configuration.codeAnalysis.clangTidy.checks.disabled.markdownDescription": "Liste des vérifications `clang-tidy` désactivées. Les valeurs sont ajoutées aux `Checks` dans un fichier `.clang-tidy` ou `#C_Cpp.codeAnalysis.clangTidy.config#`, le cas échéant.", + "c_cpp.configuration.formatting.description": "Configure le moteur de mise en forme.", "c_cpp.configuration.formatting.clangFormat.markdownDescription": "`clang-format` sera utilisé pour mettre en forme le code.", "c_cpp.configuration.formatting.vcFormat.markdownDescription": "Le moteur de mise en forme de Visual C++ est utilisé pour la mise en forme du code.", "c_cpp.configuration.formatting.Default.markdownDescription": "Par défaut, `clang-format` sera utilisé pour formater le code. Cependant, le moteur de formatage Visual C++ sera utilisé si un fichier `.editorconfig` avec des paramètres pertinents est trouvé près du code à formater et que `#C_Cpp.clang_format_style#` est la valeur par défaut : `file`.", @@ -207,7 +207,7 @@ "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "Ajouter les chemins d'inclusion de `nan` et `node-addon-api` quand ils sont des dépendances.", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Si `true`, 'Renommer le symbole' exigera un identifiant C/C++ valide.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "Si la valeur est `true`, l'autocomplétion ajoute automatiquement `(` après les appels de fonction. Dans ce cas `)` peut également être ajouté, en fonction de la valeur du paramètre `#editor.autoClosingBrackets#`.", - "c_cpp.configuration.filesExclude.markdownDescription": "Configurer les modèles globaux pour exclure les dossiers (et les fichiers si `#C_Cpp.exclusionPolicy#` est modifié). Ils sont spécifiques à l'extension C/C++ et s'ajoutent à `#files.exclude#`, mais contrairement à `#files.exclude#`, ils s'appliquent également aux chemins en dehors du dossier de l'espace de travail actuel et ne sont pas supprimés de la vue de l'explorateur. Pour en savoir plus sur les modèles globaux, cliquez [ici](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExclude.markdownDescription": "Configurer les modèles globaux pour exclure les dossiers (et les fichiers si `#C_Cpp.exclusionPolicy#` est modifié). Ils sont spécifiques à l'extension C/C++ et s'ajoutent à `#files.exclude#`, mais contrairement à `#files.exclude#`, ils s'appliquent également aux chemins en dehors du dossier de l'espace de travail actuel et ne sont pas supprimés de la vue de l'explorateur. Pour en savoir plus sur les modèles globaux, cliquez ici (https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", "c_cpp.configuration.filesExcludeBoolean.markdownDescription": "Le modèle global pour la correspondance des chemins de fichiers. Définissez-le à `true` ou `false` pour activer ou désactiver le motif.", "c_cpp.configuration.filesExcludeWhen.markdownDescription": "Vérification supplémentaire des frères d'un fichier correspondant. Utilisez `$(basename)` comme variable pour le nom de fichier correspondant.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.markdownDescription": "Si la valeur est `true`, le remplacement de la commande d'interpréteur de commandes du débogueur utilise un accent grave (`) obsolète.", @@ -305,5 +305,19 @@ "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.loadOnlyIncluded.enumDescriptions": "N’essayez pas de charger des symboles pour le module ANY, sauf s’il se trouve dans le tableau « includedModules » ou s’il est inclus par le biais du paramètre « includeSymbolsNextToModules ».", "c_cpp.debuggers.VSSymbolOptionsModuleFilter.excludedModules.description": "Tableau de modules pour lequel le débogueur ne doit PAS charger de symboles. Les caractères génériques (exemple : MonEntreprise.*.dll) sont pris en charge.\n\nCette propriété est ignorée, sauf si « mode » a la valeur «loadAllButExcluded».", "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includedModules.description": "Tableau de modules pour lequel le débogueur doit charger des symboles. Les caractères génériques (exemple : MonEntreprise.*.dll) sont pris en charge.\n\nCette propriété est ignorée, sauf si « mode » a la valeur «loadOnlyIncluded».", - "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includeSymbolsNextToModules.description": "Si la valeur est true, pour tout module qui ne figure pas dans le tableau « includedModules », le débogueur vérifie toujours en regard du module lui-même et de l’exécutable de lancement, mais il ne vérifie pas les chemins d’accès dans la liste de recherche de symboles. Cette option a la valeur par défaut « true ».\n\nCette propriété est ignorée, sauf si « mode » a la valeur «loadOnlyIncluded»." + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includeSymbolsNextToModules.description": "Si la valeur est true, pour tout module qui ne figure pas dans le tableau « includedModules », le débogueur vérifie toujours en regard du module lui-même et de l’exécutable de lancement, mais il ne vérifie pas les chemins d’accès dans la liste de recherche de symboles. Cette option a la valeur par défaut « true ».\n\nCette propriété est ignorée, sauf si « mode » a la valeur «loadOnlyIncluded».", + "c_cpp.semanticTokenTypes.referenceType.description": "Style pour les types référence C++/CLI.", + "c_cpp.semanticTokenTypes.cliProperty.description": "Style pour les propriétés C++/CLI.", + "c_cpp.semanticTokenTypes.genericType.description": "Style pour les types génériques C++/CLI.", + "c_cpp.semanticTokenTypes.valueType.description": "Style pour les types valeur C++/CLI.", + "c_cpp.semanticTokenTypes.templateFunction.description": "Style pour les fonctions de modèle C++.", + "c_cpp.semanticTokenTypes.templateType.description": "Style pour les types de modèles C++.", + "c_cpp.semanticTokenTypes.operatorOverload.description": "Style des opérateurs surchargés C++.", + "c_cpp.semanticTokenTypes.memberOperatorOverload.description": "Style pour les fonctions membres de l’opérateur surchargé C++.", + "c_cpp.semanticTokenTypes.newOperator.description": "Style pour les opérateurs C++ new ou delete.", + "c_cpp.semanticTokenTypes.customLiteral.description": "Style pour les littéraux C++ définis par l’utilisateur.", + "c_cpp.semanticTokenTypes.numberLiteral.description": "Style pour les nombres littéraux C++ définis par l’utilisateur.", + "c_cpp.semanticTokenTypes.stringLiteral.description": "Style pour les chaînes littérales définies par l’utilisateur C++.", + "c_cpp.semanticTokenModifiers.global.description": "Style à utiliser pour les symboles globaux.", + "c_cpp.semanticTokenModifiers.local.description": "Style à utiliser pour les symboles locaux." } \ No newline at end of file diff --git a/Extension/i18n/ita/package.i18n.json b/Extension/i18n/ita/package.i18n.json index 00971dcb30..109f5922b2 100644 --- a/Extension/i18n/ita/package.i18n.json +++ b/Extension/i18n/ita/package.i18n.json @@ -34,15 +34,15 @@ "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "Numero massimo di thread simultanei da utilizzare per l'elaborazione del servizio di linguaggio. Il valore è un suggerimento e non può essere sempre utilizzato. Il valore predefinito di `null` (vuoto) utilizza il numero di processori logici disponibili.", "c_cpp.configuration.maxCachedProcesses.markdownDescription": "Numero massimo di processi memorizzati nella cache da utilizzare per l'elaborazione del servizio di linguaggio. Il valore predefinito di `null` (vuoto) utilizza il doppio del numero di processori logici disponibili.", "c_cpp.configuration.maxMemory.markdownDescription": "Memoria massima (in MB) disponibile per l'elaborazione del servizio di linguaggio. Un numero minore di processi verrà memorizzato nella cache ed eseguito contemporaneamente dopo il superamento dell'utilizzo della memoria. Il valore predefinito di `null` (vuoto) utilizza la memoria disponibile del sistema.", - "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "Numero massimo di processi IntelliSense da mantenere in esecuzione. Il valore predefinito di `null` (vuoto) usa un valore ereditato da `#C_Cpp.maxCachedProcesses#`", + "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "Numero massimo di processi IntelliSense da mantenere in esecuzione. Il valore predefinito di `null` (vuoto) usa un valore ereditato da `#C_Cpp.maxCachedProcesses#`.", "c_cpp.configuration.intelliSense.maxMemory.markdownDescription": "I processi IntelliSense meno recenti verranno arrestati prima della creazione di nuovi processi dopo il superamento di utilizzo della memoria (in MB). Il valore predefinito di `null` (vuoto) usa il valore ereditato da `#C_Cpp.maxMemory#`.", "c_cpp.configuration.references.maxConcurrentThreads.markdownDescription": "Numero massimo di thread simultanei da utilizzare per 'Trova tutti i riferimenti' e 'Rinomina'. Il valore predefinito di `null` (vuoto) usa il valore ereditato da `#C_Cpp.maxConcurrentThreads#`.", - "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "Numero massimo di processi da mantenere in memoria per 'Trova tutti i riferimenti' e 'Rinomina'. Il valore di `null` (vuoto) usa il valore ereditato da `#C_Cpp.maxCachedProcesses#`.", + "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "Numero massimo di processi da mantenere in memoria per 'Trova tutti i riferimenti' e 'Rinomina'. Il valore predefinito `0` disabilita questa funzionalità. Il valore di `null` (vuoto) usa il valore ereditato da `#C_Cpp.maxCachedProcesses#`.", "c_cpp.configuration.references.maxMemory.markdownDescription": "Un numero inferiore di processi 'Trova tutti i riferimenti' e 'Rinomina' verrà memorizzato nella cache ed eseguito contemporaneamente dopo il superamento di utilizzo della memoria (in MB). Il valore predefinito di `null` (vuoto) usa il valore ereditato da `#C_Cpp.maxMemory#`.", "c_cpp.configuration.codeAnalysis.maxConcurrentThreads.markdownDescription": "Numero massimo di thread simultanei da utilizzare per analisi del codice. Il valore predefinito di `null` (vuoto) usa metà del valore ereditato da `#C_Cpp.maxConcurrentThreads#`.", "c_cpp.configuration.codeAnalysis.maxMemory.markdownDescription": "Un numero minore di processi di analisi del codice verrà eseguito simultaneamente dopo il superamento dell'utilizzo di memoria (in MB). Il valore predefinito di `null` (vuoto) usa il valore ereditato da `#C_Cpp.maxMemory#`.", "c_cpp.configuration.codeAnalysis.updateDelay.markdownDescription": "Controlla il ritardo in millisecondi prima dell'avvio dell'elaborazione di analisi del codice dopo l'attivazione di un salvataggio da una modifica quando `#files.autoSave#` è `afterDelay` e `#C_Cpp.codeAnalysis.runAutomatically#` è `true`.", - "c_cpp.configuration.codeAnalysis.exclude.markdownDescription": "Configurare i criteri GLOB per escludere cartelle e file per l'analisi del codice. I file non inclusi nella cartella dell'area di lavoro sono sempre esclusi. Eredita i valori da `#files.exclude#` e `#C_Cpp.files.exclude#`. Altre informazioni sui criteri GLOB [here] (https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.codeAnalysis.exclude.markdownDescription": "Configurare i criteri GLOB per escludere cartelle e file per l'analisi del codice. I file non inclusi nella cartella dell'area di lavoro sono sempre esclusi. Eredita i valori da `#files.exclude#` e `#C_Cpp.files.exclude#`. Altre informazioni sui criteri GLOB [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", "c_cpp.configuration.codeAnalysis.excludeBoolean.markdownDescription": "Criterio GLOB da usare per trovare percorsi file. Impostare su `True` o `False` per abilitare o disabilitare il criterio.", "c_cpp.configuration.codeAnalysis.excludeWhen.markdownDescription": "Controllo aggiuntivo sugli elementi di pari livello di un file corrispondente. Usare `$(basename)` come variabile del nome file corrispondente.", "c_cpp.configuration.codeAnalysis.runAutomatically.markdownDescription": "Se è `true`, analisi del codice verrà eseguito automaticamente su un file dopo l'apertura o il salvataggio.", @@ -50,11 +50,11 @@ "c_cpp.configuration.codeAnalysis.clangTidy.path.markdownDescription": "Percorso completo dell'eseguibile `clang-tidy`. Se non è specificato, `clang-tidy` è disponibile nel percorso dell'ambiente usato. Se non viene trovato nel percorso dell'ambiente, verrà usato `clang-tidy` in bundle con l'estensione.", "c_cpp.configuration.codeAnalysis.clangTidy.config.markdownDescription": "Specifica una configurazione `clang-tidy` in formato YAML/JSON: `{Checks: '-*,clang-analyzer-*', CheckOptions: [{chiave: x, valore: y}]}`. Quando il valore è vuoto, `clang-tidy` tenterà di trovare un file denominato `.clang-tidy` per ogni file di origine nelle directory padre.", "c_cpp.configuration.codeAnalysis.clangTidy.fallbackConfig.markdownDescription": "Specifica una configurazione `clang-tidy` in formato YAML/JSON da usare come fallback quando `#C_Cpp.codeAnalysis.clangTidy.config#` non è impostato e non è stato trovato alcun file `.clang-tidy`: `{Checks: '-*,clang-analyzer-*', CheckOptions: [{chiave: x, valore: y}]}`.", - "c_cpp.configuration.codeAnalysis.clangTidy.headerFilter.markdownDescription": "Espressione regolare estesa POSIX (ERE) corrispondente ai nomi delle intestazioni da cui eseguire la diagnostica di output. La diagnostica dal file principale di ogni unità di conversione viene sempre visualizzata. La variabile '${workspaceFolder}' è supportata e viene usata come valore di fallback predefinito se non esiste alcun file '.clang-tidy'. Se questa opzione non è 'null' (vuota), esegue l'override dell'opzione 'HeaderFilterRegex' in un file '.clang-tidy', se presente.", - "c_cpp.configuration.codeAnalysis.clangTidy.args.markdownDescription": "Argomenti aggiuntivi della riga di comando da passare a 'clang-tidy'. Hanno la precedenza sulle impostazioni equivalenti di 'C_Cpp.codeAnalysis.clangTidy.*'.", + "c_cpp.configuration.codeAnalysis.clangTidy.headerFilter.markdownDescription": "Espressione regolare estesa POSIX (ERE) corrispondente ai nomi delle intestazioni da cui eseguire la diagnostica di output. La diagnostica dal file principale di ogni unità di conversione viene sempre visualizzata. La variabile `${workspaceFolder}` è supportata e viene usata come valore di fallback predefinito se non esiste alcun file `.clang-tidy`. Se questa opzione non è `null` (vuota), esegue l'override dell'opzione `HeaderFilterRegex` in un file `.clang-tidy`, se presente.", + "c_cpp.configuration.codeAnalysis.clangTidy.args.markdownDescription": "Argomenti aggiuntivi della riga di comando da passare a `clang-tidy`. Hanno la precedenza sulle impostazioni equivalenti di `C_Cpp.codeAnalysis.clangTidy.*`.", "c_cpp.configuration.codeAnalysis.clangTidy.checks.enabled.markdownDescription": "Elenco dei controlli `clang-tidy` abilitati. I valori vengono aggiunti a `Checks` in un file `.clang-tidy` o `#C_Cpp.codeAnalysis.clangTidy.config#`, se presente. Il controllo predefinito `clang-analyzer-*` viene sempre usato a meno che non sia disabilitato in modo esplicito.", "c_cpp.configuration.codeAnalysis.clangTidy.checks.disabled.markdownDescription": "Elenco dei controlli `clang-tidy` disabilitati. I valori vengono aggiunti a `Checks` in un file `.clang-tidy` o `#C_Cpp.codeAnalysis.clangTidy.config#`, se presente.", - "c_cpp.configuration.formatting.description": "Configura il motore di formattazione", + "c_cpp.configuration.formatting.description": "Configurare il motore di formattazione.", "c_cpp.configuration.formatting.clangFormat.markdownDescription": "Per formattare il codice, verrà usato `clang-format`.", "c_cpp.configuration.formatting.vcFormat.markdownDescription": "Per formattare il codice, verrà usato il motore di formattazione Visual C++.", "c_cpp.configuration.formatting.Default.markdownDescription": "Per impostazione predefinita, per formattare il codice verrà usato `clang-format`. Verrà tuttavia usato il motore di formattazione di Visual C++ se viene trovato un file con estensione `.editorconfig` con impostazioni pertinenti in una posizione più vicina al codice da formattare e `#C_Cpp.clang_format_style#` è impostato sul valore predefinito: `file`.", @@ -305,5 +305,19 @@ "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.loadOnlyIncluded.enumDescriptions": "Non provare a caricare i simboli per qualsiasi modulo a meno che non si trovi nella matrice 'includedModules' oppure non sia incluso tramite l'impostazione 'includeSymbolsNextToModules'.", "c_cpp.debuggers.VSSymbolOptionsModuleFilter.excludedModules.description": "Matrice di moduli per cui il debugger non deve caricare i simboli. I caratteri jolly, ad esempio MyCompany.*.dll, sono supportati.\n\nQuesta proprietà viene ignorata a meno che 'mode' non sia impostato su 'loadAllButExcluded'.", "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includedModules.description": "Matrice di moduli per cui il debugger deve caricare i simboli. I caratteri jolly, ad esempio MyCompany.*.dll, sono supportati.\n\nQuesta proprietà viene ignorata a meno che 'mode' non sia impostato su 'loadOnlyIncluded'.", - "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includeSymbolsNextToModules.description": "Se è true, per qualsiasi modulo non presente nella matrice 'includedModules', il debugger eseguirà comunque il controllo in aggiunta al modulo stesso e all'eseguibile di avvio, ma non controllerà nei percorsi dell'elenco di ricerca dei simboli. L'impostazione predefinita di questa opzione è 'true'.\n\nQuesta proprietà viene ignorata a meno che 'mode' non sia impostato su 'loadOnlyIncluded'." + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includeSymbolsNextToModules.description": "Se è true, per qualsiasi modulo non presente nella matrice 'includedModules', il debugger eseguirà comunque il controllo in aggiunta al modulo stesso e all'eseguibile di avvio, ma non controllerà nei percorsi dell'elenco di ricerca dei simboli. L'impostazione predefinita di questa opzione è 'true'.\n\nQuesta proprietà viene ignorata a meno che 'mode' non sia impostato su 'loadOnlyIncluded'.", + "c_cpp.semanticTokenTypes.referenceType.description": "Stile per i tipi di riferimento C++/CLI.", + "c_cpp.semanticTokenTypes.cliProperty.description": "Stile per le proprietà C++/CLI.", + "c_cpp.semanticTokenTypes.genericType.description": "Stile per tipi generici C++/CLI.", + "c_cpp.semanticTokenTypes.valueType.description": "Stile per i tipi di valore C++/CLI.", + "c_cpp.semanticTokenTypes.templateFunction.description": "Stile per le funzioni modello C++.", + "c_cpp.semanticTokenTypes.templateType.description": "Stile per i tipi di modello C++.", + "c_cpp.semanticTokenTypes.operatorOverload.description": "Stile per gli operatori di overload di C++.", + "c_cpp.semanticTokenTypes.memberOperatorOverload.description": "Stile per le funzioni membro dell'operatore di overload di C++.", + "c_cpp.semanticTokenTypes.newOperator.description": "Stile per gli operatori C++ new o delete.", + "c_cpp.semanticTokenTypes.customLiteral.description": "Stile per le stringhe letterali definite dall'utente di C++.", + "c_cpp.semanticTokenTypes.numberLiteral.description": "Stile per i numeri letterali C++ definiti dall'utente.", + "c_cpp.semanticTokenTypes.stringLiteral.description": "Stile per le stringhe letterali definite dall'utente di C++.", + "c_cpp.semanticTokenModifiers.global.description": "Stile da usare per i simboli globali.", + "c_cpp.semanticTokenModifiers.local.description": "Stile da usare per i simboli locali." } \ No newline at end of file diff --git a/Extension/i18n/jpn/package.i18n.json b/Extension/i18n/jpn/package.i18n.json index dcef0feb06..b234f47ae4 100644 --- a/Extension/i18n/jpn/package.i18n.json +++ b/Extension/i18n/jpn/package.i18n.json @@ -31,30 +31,30 @@ "c_cpp.command.RunCodeAnalysisOnOpenFiles.title": "開いているファイルで Code Analysis を実行する", "c_cpp.command.RunCodeAnalysisOnAllFiles.title": "すべてのファイルで Code Analysis を実行する", "c_cpp.command.ClearCodeAnalysisSquiggles.title": "コード分析の波線のクリア", - "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "言語サービスの処理に使用する同時実行スレッドの最大数。値はヒントであり、常に使用されるとは限りません。既定値の 'null' (空) では、使用可能な論理プロセッサの数が使用されます。", - "c_cpp.configuration.maxCachedProcesses.markdownDescription": "言語サービスの処理に使用するキャッシュされたプロセスの最大数。既定値の 'null' (空) では、使用可能な論理プロセッサの数の 2 倍が使用されます。", - "c_cpp.configuration.maxMemory.markdownDescription": "言語サービスの処理に使用できる最大メモリ (MB 単位)。このメモリ使用量を超えると、キャッシュされ、同時に実行されるプロセスの数が少なくなります。既定値の 'null' (空) では、システムの空きメモリが使用されます。", - "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "実行を続けるための IntelliSense プロセスの最大数。既定値の 'null' (空) では、'#C_Cpp.maxCachedProcesses#' から継承された値が使用されます", - "c_cpp.configuration.intelliSense.maxMemory.markdownDescription": "古い IntelliSense プロセスは、このメモリ使用量 (MB) を超えた後に新しいプロセスが作成される前にシャットダウンされます。既定値の 'null' (空) では、'#C_Cpp.maxMemory#' から継承された値が使用されます。", - "c_cpp.configuration.references.maxConcurrentThreads.markdownDescription": "[すべての参照の検索] と [名前の変更] に使用する同時実行スレッドの最大数。既定値の 'null' (空) では、'#C_Cpp.maxConcurrentThreads#' から継承された値が使用されます。", - "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "[すべての参照の検索] と [名前の変更] のメモリ内に保持するプロセスの最大数。'null' (空) の値は、'#C_Cpp.maxCachedProcesses#' から継承された値を使用します。", - "c_cpp.configuration.references.maxMemory.markdownDescription": "このメモリ使用量 (MB 単位) を超えると、キャッシュされ、同時に実行される 'すべての参照の検索' プロセスと '名前の変更' プロセスの数が少なくなります。既定値の 'null' (空) では、'#C_Cpp.maxMemory#' から継承された値が使用されます。", - "c_cpp.configuration.codeAnalysis.maxConcurrentThreads.markdownDescription": "コード分析に使用する同時実行スレッドの最大数。既定値の 'null' (空) では、'#C_Cpp.maxConcurrentThreads#' から継承された値の半分が使用されます。", - "c_cpp.configuration.codeAnalysis.maxMemory.markdownDescription": "このメモリ使用量 (MB 単位) を超えると、同時に実行されるコード分析プロセスの数が減少します。既定値の 'null' (空) では、'#C_Cpp.maxMemory#' から継承された値が使用されます。", - "c_cpp.configuration.codeAnalysis.updateDelay.markdownDescription": "'#files.autoSave#' が 'afterDelay' で '#C_Cpp.codeAnalysis.runAutomatically#' が 'true' の場合に、編集から保存がトリガーされてからコード分析が処理を開始するまでの遅延をミリ秒単位で制御します。", - "c_cpp.configuration.codeAnalysis.exclude.markdownDescription": "コード分析用にフォルダーとファイルを除外するための glob パターンを構成します。ワークスペース フォルダーの下にないファイルは常に除外されます。'#files.exclude#' および '#C_Cpp.files.exclude#' から値を継承します。glob パターンの詳細については、[こちら](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options) を参照してください。", + "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "言語サービスの処理に使用する同時実行スレッドの最大数。値はヒントであり、常に使用されるとは限りません。既定値の `null` (空) では、使用可能な論理プロセッサの数が使用されます。", + "c_cpp.configuration.maxCachedProcesses.markdownDescription": "言語サービスの処理に使用するキャッシュされたプロセスの最大数。既定値の `null` (空) では、使用可能な論理プロセッサの数の 2 倍が使用されます。", + "c_cpp.configuration.maxMemory.markdownDescription": "言語サービスの処理に使用できる最大メモリ (MB 単位)。このメモリ使用量を超えると、キャッシュされ、同時に実行されるプロセスの数が少なくなります。既定値の `null` (空) では、システムの空きメモリが使用されます。", + "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "実行を続けるための IntelliSense プロセスの最大数。既定値の `null` (空) では、`#C_Cpp.maxCachedProcesses#` から継承された値が使用されます。", + "c_cpp.configuration.intelliSense.maxMemory.markdownDescription": "古い IntelliSense プロセスは、このメモリ使用量 (MB) を超えた後に新しいプロセスが作成される前にシャットダウンされます。既定値の `null` (空) では `#C_Cpp.maxMemory#` から継承された値が使用されます。", + "c_cpp.configuration.references.maxConcurrentThreads.markdownDescription": "[すべての参照の検索] と [名前の変更] に使用する同時実行スレッドの最大数。既定値の `null` (空) では、`#C_Cpp.maxConcurrentThreads#` から継承された値が使用されます。", + "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "[すべての参照の検索] と [名前の変更] のメモリ内に保持するプロセスの最大数。既定値の `0` は、この機能を無効にします。`null` 値 (空) は、`#C_Cpp.maxCachedProcesses#` から継承された値を使用します。", + "c_cpp.configuration.references.maxMemory.markdownDescription": "このメモリ使用量 (MB 単位) を超えると、キャッシュされ、同時に実行される 'すべての参照の検索' プロセスと '名前の変更' プロセスの数が少なくなります。既定値の `null` (空) では、`#C_Cpp.maxMemory#` から継承された値が使用されます。", + "c_cpp.configuration.codeAnalysis.maxConcurrentThreads.markdownDescription": "コード分析に使用する同時実行スレッドの最大数。既定値の `null` (空) では、`#C_Cpp.maxConcurrentThreads#` から継承された値の半分が使用されます。", + "c_cpp.configuration.codeAnalysis.maxMemory.markdownDescription": "このメモリ使用量 (MB 単位) を超えると、同時に実行されるコード分析プロセスの数が減少します。既定値の `null` (空) では、`#C_Cpp.maxMemory#` から継承された値が使用されます。", + "c_cpp.configuration.codeAnalysis.updateDelay.markdownDescription": "`#files.autoSave#` が `afterDelay` で `#C_Cpp.codeAnalysis.runAutomatically#` が `true` の場合に、編集から保存がトリガーされてからコード分析が処理を開始するまでの遅延をミリ秒単位で制御します。", + "c_cpp.configuration.codeAnalysis.exclude.markdownDescription": "コード分析用にフォルダーとファイルを除外するための glob パターンを構成します。ワークスペース フォルダーの下にないファイルは常に除外されます。`#files.exclude#` および `#C_Cpp.files.exclude#` から値を継承します。glob パターンの詳細については、[こちら](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options) を参照してください。", "c_cpp.configuration.codeAnalysis.excludeBoolean.markdownDescription": "ファイル パスの照合基準となる glob パターン。これを `true` または `false` に設定すると、パターンがそれぞれ有効/無効になります。", "c_cpp.configuration.codeAnalysis.excludeWhen.markdownDescription": "一致するファイルの兄弟をさらにチェックします。一致するファイル名の変数として `$(basename)` を使用します。", - "c_cpp.configuration.codeAnalysis.runAutomatically.markdownDescription": "'true' の場合、ファイルを開いたり保存したりすると、コード分析が自動的に実行されます。", - "c_cpp.configuration.codeAnalysis.clangTidy.enabled.markdownDescription": "'true' の場合、'clang-tidy' を使用したコード分析が有効になり、'#C_Cpp.codeAnalysis.runAutomatically#' が 'true' (既定値) の場合に自動的に実行されます。", + "c_cpp.configuration.codeAnalysis.runAutomatically.markdownDescription": "`true` の場合、ファイルを開いたり保存したりすると、コード分析が自動的に実行されます。", + "c_cpp.configuration.codeAnalysis.clangTidy.enabled.markdownDescription": "`true` の場合、`clang-tidy` を使用したコード分析が有効になり、`#C_Cpp.codeAnalysis.runAutomatically#` が `true` (既定値) の場合に自動的に実行されます。", "c_cpp.configuration.codeAnalysis.clangTidy.path.markdownDescription": "`clang-tidy` の実行可能ファイルの完全なパスです。指定されておらず、`clang-tidy` が環境パスに置かれている場合は、それが使用されます。環境パスに見つからない場合は、拡張機能にバンドルされている `clang-tidy` が使用されます。", - "c_cpp.configuration.codeAnalysis.clangTidy.config.markdownDescription": "YAML/JSON 形式の 'clang-pull' 構成を指定します: '{Checks: '-*,clang-analyzer-*',CheckOptions: [{key: x, value: y}]}'。値が空の場合、'clang-tidy' は親ディレクトリ内の各ソース ファイルの '.clang-tidy' という名前のファイルの検索を試みます。", - "c_cpp.configuration.codeAnalysis.clangTidy.fallbackConfig.markdownDescription": "'#C_Cpp.codeAnalysis.clangTidy.config#' が設定されておらず、'clang-tidy' ファイルが見つからない場合に、フォールバックとして使用する YAML/JSON 形式の 'clang-tidy' 構成を指定します: '{Checks: '-*,clang-analyzer-*',CheckOptions: [{key: x, value: y}]}'。", - "c_cpp.configuration.codeAnalysis.clangTidy.headerFilter.markdownDescription": "診断を出力するヘッダーの名前と一致する POSIX 拡張正規表現 (ERE)。各翻訳単位のメイン ファイルからの診断は常に表示されます。'${workspaceFolder}' 変数はサポートされています (`.clang-tidy` ファイルが存在しない場合は、既定のフォールバック値として使用されます)。このオプションが 'null' (空) でない場合は、`.clang-tidy` ファイルの 'HeaderFilterRegex' オプションがオーバーライドされます (存在する場合)。", - "c_cpp.configuration.codeAnalysis.clangTidy.args.markdownDescription": "'clang-tidy' に渡す追加のコマンド ライン引数。これらは、同等の 'C_Cpp.codeAnalysis.clangTidy.*' 設定よりも優先されます。", - "c_cpp.configuration.codeAnalysis.clangTidy.checks.enabled.markdownDescription": "有効な 'clang-tidy' チェックの一覧。値は、'.clang-tidy' ファイルの 'Checks' または '#C_Cpp.codeAnalysis.clangTidy.config#' (存在する場合) に追加されます。既定のチェック 'clang-analyzer-*' は、明示的に無効にされていない限り、常に使用されます。", - "c_cpp.configuration.codeAnalysis.clangTidy.checks.disabled.markdownDescription": "無効な 'clang-tidy' チェックの一覧。値は、'.clang-tidy' ファイルの 'Checks' に追加され、存在する場合は '#C_Cpp.codeAnalysis.clangTidy.config#' に追加されます。", - "c_cpp.configuration.formatting.description": "書式設定エンジンを構成します", + "c_cpp.configuration.codeAnalysis.clangTidy.config.markdownDescription": "YAML/JSON 形式の `clang-tidy` 構成を指定します: `{Checks: '-*,clang-analyzer-*',CheckOptions: [{key: x, value: y}]}`。値が空の場合、`clang-tidy` は親ディレクトリ内の各ソース ファイルの `.clang-tidy` という名前のファイルの検索を試みます。", + "c_cpp.configuration.codeAnalysis.clangTidy.fallbackConfig.markdownDescription": "`#C_Cpp.codeAnalysis.clangTidy.config#` が設定されておらず、`clang-tidy` ファイルが見つからない場合に、フォールバックとして使用する YAML/JSON 形式の `clang-tidy` 構成を指定します: `{Checks: '-*,clang-analyzer-*',CheckOptions: [{key: x, value: y}]}`。", + "c_cpp.configuration.codeAnalysis.clangTidy.headerFilter.markdownDescription": "診断を出力するヘッダーの名前と一致する POSIX 拡張正規表現 (ERE)。各翻訳単位のメイン ファイルからの診断は常に表示されます。`${workspaceFolder}` 変数はサポートされています (`.clang-tidy` ファイルが存在しない場合は、既定のフォールバック値として使用されます)。このオプションが `null` (空) でない場合は、`.clang-tidy` ファイルの `HeaderFilterRegex` オプションがオーバーライドされます (存在する場合)。", + "c_cpp.configuration.codeAnalysis.clangTidy.args.markdownDescription": "`clang-tidy` に渡す追加のコマンド ライン引数。これらは、同等の `C_Cpp.codeAnalysis.clangTidy.*` 設定よりも優先されます。", + "c_cpp.configuration.codeAnalysis.clangTidy.checks.enabled.markdownDescription": "有効な `clang-tidy` チェックの一覧。値は、`.clang-tidy` ファイルの `Checks` または `#C_Cpp.codeAnalysis.clangTidy.config#` (存在する場合) に追加されます。既定のチェック `clang-analyzer-*` は、明示的に無効にされていない限り、常に使用されます。", + "c_cpp.configuration.codeAnalysis.clangTidy.checks.disabled.markdownDescription": "無効な `clang-tidy` チェックの一覧。値は、`.clang-tidy` ファイルの `Checks` に追加され、存在する場合は `#C_Cpp.codeAnalysis.clangTidy.config#` に追加されます。", + "c_cpp.configuration.formatting.description": "書式設定エンジンを構成します。", "c_cpp.configuration.formatting.clangFormat.markdownDescription": "`clang-format` を使用してコードがフォーマットされます。", "c_cpp.configuration.formatting.vcFormat.markdownDescription": "コードの書式設定に Visual C++ の書式設定エンジンが使用されます。", "c_cpp.configuration.formatting.Default.markdownDescription": "既定では、`clang-format` を使用してコードをフォーマットします。ただし、関連する設定を持つ `.editorconfig` ファイルがフォーマット対象のコードの近くに見つかり、`#C_Cpp.clang_format_style#` が既定値である場合は、Visual C++ フォーマット エンジンが使用されます: `file`。", @@ -305,5 +305,19 @@ "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.loadOnlyIncluded.enumDescriptions": "モジュールが 'includedModules' 配列に含まれていない場合、または 'includeSymbolsNextToModules' 設定を介して含まれていない場合は、どのモジュールに対してもシンボルを読み込もうとしてはいけません。", "c_cpp.debuggers.VSSymbolOptionsModuleFilter.excludedModules.description": "デバッガーがシンボルを読み込んではいけないモジュールの配列です。ワイルドカード (例: MyCompany.*.dll) がサポートされています。\n\n'mode' が 'loadAllButExcluded' に設定されていない限り、このプロパティは無視されます。", "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includedModules.description": "デバッガーがシンボルを読み込むべきモジュールの配列です。ワイルドカード (例: MyCompany.*.dll) がサポートされています。\n\n'mode' が 'loadOnlyIncluded' に設定されていない限り、このプロパティは無視されます。", - "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includeSymbolsNextToModules.description": "True の場合、'includedModules' 配列にないモジュールの場合、デバッガーはモジュール自体と起動中の実行可能ファイルの横を確認しますが、シンボル検索リストのパスはチェックしません。このオプションの既定値は 'true' です。\n\n'mode' が 'loadOnlyIncluded' に設定されていない限り、このプロパティは無視されます。" + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includeSymbolsNextToModules.description": "True の場合、'includedModules' 配列にないモジュールの場合、デバッガーはモジュール自体と起動中の実行可能ファイルの横を確認しますが、シンボル検索リストのパスはチェックしません。このオプションの既定値は 'true' です。\n\n'mode' が 'loadOnlyIncluded' に設定されていない限り、このプロパティは無視されます。", + "c_cpp.semanticTokenTypes.referenceType.description": "C++/CLI 参照型のスタイルです。", + "c_cpp.semanticTokenTypes.cliProperty.description": "C++/CLI プロパティのスタイルです。", + "c_cpp.semanticTokenTypes.genericType.description": "C++/CLI ジェネリック型のスタイルです。", + "c_cpp.semanticTokenTypes.valueType.description": "C++/CLI 値型のスタイルです。", + "c_cpp.semanticTokenTypes.templateFunction.description": "C++ テンプレート関数のスタイルです。", + "c_cpp.semanticTokenTypes.templateType.description": "C++ テンプレート型のスタイルです。", + "c_cpp.semanticTokenTypes.operatorOverload.description": "C++ 演算子のオーバーロードのスタイルです。", + "c_cpp.semanticTokenTypes.memberOperatorOverload.description": "C++ 演算子のオーバーロードのメンバー関数のスタイルです。", + "c_cpp.semanticTokenTypes.newOperator.description": "C++ の new または delete 演算子のスタイルです。", + "c_cpp.semanticTokenTypes.customLiteral.description": "C++ ユーザー定義リテラルのスタイルです。", + "c_cpp.semanticTokenTypes.numberLiteral.description": "C++ ユーザー定義リテラル数字のスタイルです。", + "c_cpp.semanticTokenTypes.stringLiteral.description": "C++ ユーザー定義リテラル文字列のスタイルです。", + "c_cpp.semanticTokenModifiers.global.description": "グローバルの記号に使用するスタイルです。", + "c_cpp.semanticTokenModifiers.local.description": "ローカルの記号に使用するスタイルです。" } \ No newline at end of file diff --git a/Extension/i18n/kor/package.i18n.json b/Extension/i18n/kor/package.i18n.json index bbfdc0c312..e7d5687bf7 100644 --- a/Extension/i18n/kor/package.i18n.json +++ b/Extension/i18n/kor/package.i18n.json @@ -31,13 +31,13 @@ "c_cpp.command.RunCodeAnalysisOnOpenFiles.title": "열린 파일에서 코드 분석 실행", "c_cpp.command.RunCodeAnalysisOnAllFiles.title": "모든 파일에 대한 코드 분석 실행", "c_cpp.command.ClearCodeAnalysisSquiggles.title": "코드 분석 물결선 지우기", - "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "언어 서비스 처리에 사용할 최대 동시 스레드 수입니다. 값은 힌트이며 항상 사용되는 것은 아닙니다. 기본값 'null'(비어 있음)은 사용 가능한 논리 프로세서 수를 사용합니다.", - "c_cpp.configuration.maxCachedProcesses.markdownDescription": "언어 서비스 처리에 사용할 최대 캐시 프로세스 수입니다. 기본값인 'null'(비어 있음)은 사용 가능한 논리 프로세서 수의 두 배를 사용합니다.", - "c_cpp.configuration.maxMemory.markdownDescription": "언어 서비스 처리에 사용할 수 있는 최대 메모리(MB)입니다. 이 메모리 사용량이 초과되면 더 적은 수의 프로세스가 캐시되고 동시에 실행됩니다. 기본값 'null'(비어 있음)은 시스템의 여유 메모리를 사용합니다.", + "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "언어 서비스 처리에 사용할 최대 동시 스레드 수입니다. 값은 힌트이며 항상 사용되는 것은 아닙니다. 기본값 `null`(비어 있음)은 사용 가능한 논리 프로세서 수를 사용합니다.", + "c_cpp.configuration.maxCachedProcesses.markdownDescription": "언어 서비스 처리에 사용할 최대 캐시 프로세스 수입니다. 기본값인 `null`(비어 있음)은 사용 가능한 논리 프로세서 수의 두 배를 사용합니다.", + "c_cpp.configuration.maxMemory.markdownDescription": "언어 서비스 처리에 사용할 수 있는 최대 메모리(MB)입니다. 이 메모리 사용량이 초과되면 더 적은 수의 프로세스가 캐시되고 동시에 실행됩니다. 기본값 `null`(비어 있음)은 시스템의 여유 메모리를 사용합니다.", "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "계속 실행할 IntelliSense 프로세스의 최대 수입니다. 기본값 `null`(비어 있음)은 `#C_Cpp.maxCachedProcesses#`에서 상속된 값을 사용합니다.", "c_cpp.configuration.intelliSense.maxMemory.markdownDescription": "이 메모리 사용량(MB)을 초과한 후 새 프로세스가 생성되기 전에 이전 IntelliSense 프로세스가 종료됩니다. 기본값인 `null`(비어 있음)은 `#C_Cpp.maxMemory#`에서 상속된 값을 사용합니다.", "c_cpp.configuration.references.maxConcurrentThreads.markdownDescription": "'모든 참조 찾기' 및 '이름 바꾸기'에 사용할 최대 동시 스레드 수입니다. 기본값인 `null`(비어 있음)은 `#C_Cpp.maxConcurrentThreads#`에서 상속된 값을 사용합니다.", - "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "'모든 참조 찾기' 및 '이름 바꾸기'에 대해 메모리에 보관할 최대 프로세스 수입니다. 'null' 값(비어 있음)은 '#C_Cpp.maxCachedProcesses#'에서 상속된 값을 사용합니다.", + "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "'모든 참조 찾기' 및 '이름 바꾸기'에 대해 메모리에 유지할 최대 프로세스 수입니다. 기본값인 '0'은 이 기능을 사용하지 않도록 설정합니다. `null`(비어 있음) 값은 `#C_Cpp.maxCachedProcesses#`에서 상속된 값을 사용합니다.", "c_cpp.configuration.references.maxMemory.markdownDescription": "이 메모리 사용량(MB)을 초과하면 더 적은 수의 '모든 참조 찾기' 및 '이름 바꾸기' 프로세스가 캐시되고 동시에 실행됩니다. 기본값인 `null`(비어 있음)은 `#C_Cpp.maxMemory#`에서 상속된 값을 사용합니다.", "c_cpp.configuration.codeAnalysis.maxConcurrentThreads.markdownDescription": "코드 분석에 사용할 최대 동시 스레드 수입니다. 기본값인 `null`(비어 있음)은 `#C_Cpp.maxConcurrentThreads#`에서 상속된 값의 절반을 사용합니다.", "c_cpp.configuration.codeAnalysis.maxMemory.markdownDescription": "이 메모리 사용량(MB)을 초과한 후에는 더 적은 수의 코드 분석 프로세스가 동시에 실행됩니다. 기본값인 `null`(비어 있음)은 `#C_Cpp.maxMemory#`에서 상속된 값을 사용합니다.", @@ -45,16 +45,16 @@ "c_cpp.configuration.codeAnalysis.exclude.markdownDescription": "코드 분석을 위해 폴더 및 파일을 제외하기 위한 glob 패턴을 구성합니다. 작업 영역 폴더 아래에 있지 않은 파일은 항상 제외됩니다. `#files.exclude#` 및 `#C_Cpp.files.exclude#`에서 값을 상속합니다. [여기](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options)에서 glob 패턴에 대해 자세히 알아보세요.", "c_cpp.configuration.codeAnalysis.excludeBoolean.markdownDescription": "파일 경로를 일치시킬 GLOB 패턴입니다. 패턴을 사용하거나 사용하지 않도록 설정하려면 `true` 또는 `false`로 설정하세요.", "c_cpp.configuration.codeAnalysis.excludeWhen.markdownDescription": "일치하는 파일의 형제에 대한 추가 검사입니다. `$(basename)`을 일치하는 파일 이름에 대한 변수로 사용하세요.", - "c_cpp.configuration.codeAnalysis.runAutomatically.markdownDescription": "'true'인 경우 파일을 열거나 저장한 후 코드 분석이 자동으로 실행됩니다.", + "c_cpp.configuration.codeAnalysis.runAutomatically.markdownDescription": "`true`인 경우 파일을 열거나 저장한 후 코드 분석이 자동으로 실행됩니다.", "c_cpp.configuration.codeAnalysis.clangTidy.enabled.markdownDescription": "`true`인 경우 `#C_Cpp.codeAnalysis.runAutomatically#`가 `true`(기본값)인 경우 `clang-tidy`를 사용한 코드 분석이 사용하도록 설정되고 자동으로 실행됩니다.", "c_cpp.configuration.codeAnalysis.clangTidy.path.markdownDescription": "`clang-tidy` 실행 파일의 전체 경로입니다. 지정하지 않은 경우 `clang-tidy`를 환경 경로에서 사용할 수 있으면 해당 실행 파일이 사용됩니다. 환경 경로에 없는 경우에는 확장과 함께 제공된 `clang-tidy`가 사용됩니다.", "c_cpp.configuration.codeAnalysis.clangTidy.config.markdownDescription": "YAML/JSON 형식의 `clang-tidy` 구성을 지정합니다. `{Checks: '-*,clang-analyzer-*', CheckOptions: [{key: x, value: y}]}`. 값이 비어 있으면 `clang-tidy`는 상위 디렉터리의 각 소스 파일에 대해 `.clang-tidy`라는 파일을 찾으려고 시도합니다.", "c_cpp.configuration.codeAnalysis.clangTidy.fallbackConfig.markdownDescription": "`#C_Cpp.codeAnalysis.clangTidy.config#`가 설정되지 않고 `.clang-tidy` 파일을 찾을 수 없는 경우 대체로 사용할 YAML/JSON 형식의 `clang-tidy` 구성을 지정합니다. `{Checks: '-*, clang-analyzer-*', CheckOptions: [{키: x, 값: y}]}`.", - "c_cpp.configuration.codeAnalysis.clangTidy.headerFilter.markdownDescription": "진단을 출력할 헤더의 이름과 일치하는 POSIX 확장 정규식(ERE)입니다. 각 번역 단위의 기본 파일에서 진단이 항상 표시됩니다. `${workspaceFolder}` 변수가 지원됩니다(`.clang-tidy` 파일이 없는 경우 기본 폴백 값으로 사용됨). 이 옵션이 'null'(비어 있음)이 아닌 경우 '.clang-tidy' 파일의 'HeaderFilterRegex' 옵션(있는 경우)을 재정의합니다.", + "c_cpp.configuration.codeAnalysis.clangTidy.headerFilter.markdownDescription": "진단을 출력할 헤더의 이름과 일치하는 POSIX 확장 정규식(ERE)입니다. 각 번역 단위의 기본 파일에서 진단이 항상 표시됩니다. `${workspaceFolder}` 변수가 지원됩니다(`.clang-tidy` 파일이 없는 경우 기본 폴백 값으로 사용됨). 이 옵션이 `null`(비어 있음)이 아닌 경우 `.clang-tidy` 파일의 `HeaderFilterRegex` 옵션(있는 경우)을 재정의합니다.", "c_cpp.configuration.codeAnalysis.clangTidy.args.markdownDescription": "`clang-tidy`에 전달할 추가 명령줄 인수입니다. 이는 동등한 `C_Cpp.codeAnalysis.clangTidy.*` 설정보다 우선합니다.", "c_cpp.configuration.codeAnalysis.clangTidy.checks.enabled.markdownDescription": "사용하도록 설정된 `clang-tidy` 검사 목록입니다. 값은 `.clang-tidy` 파일의 `Checks` 또는 `#C_Cpp.codeAnalysis.clangTidy.config#`(있는 경우)에 추가됩니다. 기본 검사 `clang-analyzer-*`는 명시적으로 비활성화되지 않는 한 항상 사용됩니다.", "c_cpp.configuration.codeAnalysis.clangTidy.checks.disabled.markdownDescription": "비활성화된 `clang-tidy` 검사 목록입니다. 값은 `.clang-tidy` 파일의 `Checks` 또는 `#C_Cpp.codeAnalysis.clangTidy.config#`(있는 경우)에 추가됩니다.", - "c_cpp.configuration.formatting.description": "서식 엔진을 구성합니다.", + "c_cpp.configuration.formatting.description": "서식 지정 엔진을 구성합니다.", "c_cpp.configuration.formatting.clangFormat.markdownDescription": "코드 서식을 지정하는 데 `clang-format`이 사용됩니다.", "c_cpp.configuration.formatting.vcFormat.markdownDescription": "코드 서식을 지정하는 데 Visual C++ 서식 엔진이 사용됩니다.", "c_cpp.configuration.formatting.Default.markdownDescription": "기본적으로 `clang-format`이 코드 서식에 사용되지만 관련 설정을 가진 `.editorconfig` 파일이 포맷 중인 코드에 좀 더 가까이 있고 `#C_Cpp.clang_format_style#`이 기본값인 `file`인 경우 Visual C++ 서식 지정 엔진이 사용됩니다.", @@ -305,5 +305,19 @@ "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.loadOnlyIncluded.enumDescriptions": "'includedModules' 배열에 있거나 'includeSymbolsNextToModules' 설정을 통해 포함되는 경우가 아니면 모듈에 대한 기호를 로드하지 않도록 합니다.", "c_cpp.debuggers.VSSymbolOptionsModuleFilter.excludedModules.description": "디버거에서 기호를 로드하지 않아야 하는 모듈의 배열입니다. 와일드카드(예: MyCompany.*.dll)가 지원됩니다.\n\n'모드'가 'loadAllButExcluded'로 설정되어 있지 않으면 이 속성은 무시됩니다.", "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includedModules.description": "디버거에서 기호를 로드해야 하는 모듈의 배열입니다. 와일드카드(예: MyCompany.*.dll)가 지원됩니다.\n\n'모드'가 'loadOnlyIncluded'로 설정되어 있지 않으면 이 속성은 무시됩니다.", - "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includeSymbolsNextToModules.description": "True 이면 'includedModules' 배열에 없는 모듈에 대해 디버거는 모듈 자체 및 시작 실행 파일 옆을 계속 확인하지만 기호 검색 목록의 경로는 확인하지 않습니다. 이 옵션의 기본값은 'true'입니다.\n\n'모드'가 'loadOnlyIncluded'로 설정되어 있지 않으면 이 속성은 무시됩니다." + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includeSymbolsNextToModules.description": "True 이면 'includedModules' 배열에 없는 모듈에 대해 디버거는 모듈 자체 및 시작 실행 파일 옆을 계속 확인하지만 기호 검색 목록의 경로는 확인하지 않습니다. 이 옵션의 기본값은 'true'입니다.\n\n'모드'가 'loadOnlyIncluded'로 설정되어 있지 않으면 이 속성은 무시됩니다.", + "c_cpp.semanticTokenTypes.referenceType.description": "C++/CLI 참조 형식의 스타일입니다.", + "c_cpp.semanticTokenTypes.cliProperty.description": "C++/CLI 속성의 스타일입니다.", + "c_cpp.semanticTokenTypes.genericType.description": "C++/CLI 제네릭 형식의 스타일입니다.", + "c_cpp.semanticTokenTypes.valueType.description": "C++/CLI 값 형식의 스타일입니다.", + "c_cpp.semanticTokenTypes.templateFunction.description": "C++ 템플릿 함수의 스타일입니다.", + "c_cpp.semanticTokenTypes.templateType.description": "C++ 템플릿 형식의 스타일입니다.", + "c_cpp.semanticTokenTypes.operatorOverload.description": "C++ 오버로드된 연산자의 스타일입니다.", + "c_cpp.semanticTokenTypes.memberOperatorOverload.description": "C++ 오버로드된 연산자 멤버 함수의 스타일입니다.", + "c_cpp.semanticTokenTypes.newOperator.description": "C++ 신규 또는 삭제 연산자의 스타일입니다.", + "c_cpp.semanticTokenTypes.customLiteral.description": "C++ 사용자 정의 리터럴의 스타일입니다.", + "c_cpp.semanticTokenTypes.numberLiteral.description": "C++ 사용자 정의 리터럴 번호의 스타일입니다.", + "c_cpp.semanticTokenTypes.stringLiteral.description": "C++ 사용자 정의 리터럴 문자열의 스타일입니다.", + "c_cpp.semanticTokenModifiers.global.description": "전체인 기호에 사용할 스타일입니다.", + "c_cpp.semanticTokenModifiers.local.description": "로컬인 기호에 사용할 스타일입니다." } \ No newline at end of file diff --git a/Extension/i18n/plk/package.i18n.json b/Extension/i18n/plk/package.i18n.json index 78c7b4e169..2d30042069 100644 --- a/Extension/i18n/plk/package.i18n.json +++ b/Extension/i18n/plk/package.i18n.json @@ -34,10 +34,10 @@ "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "Maksymalna liczba współbieżnych wątków do użycia na potrzeby przetwarzania usług językowych. Wartość jest wskazówką i nie zawsze może być używana. Wartość domyślna „null” (pusta) używa liczby dostępnych procesorów logicznych.", "c_cpp.configuration.maxCachedProcesses.markdownDescription": "Maksymalna liczba buforowanych procesów do użycia na potrzeby przetwarzania usług językowych. Wartość domyślna „null” (pusta) używa podwójnej liczby dostępnych procesorów logicznych.", "c_cpp.configuration.maxMemory.markdownDescription": "Maksymalna ilość pamięci (w MB) dostępna na potrzeby przetwarzania usług językowych. Mniej procesów będzie buforowanych i uruchamianych współbieżnie po przekroczeniu tego użycia pamięci. Wartość domyślna „null” (pusta) używa wolnej pamięci systemu.", - "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "Maksymalna liczba procesów IntelliSense, które mają być nadal uruchomione. Wartość domyślna „null” (pusta) używa wartości odziedziczonej z elementu `#C_Cpp.maxCachedProcesses#`", + "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "Maksymalna liczba procesów IntelliSense, które mają być nadal uruchomione. Wartość domyślna `null` (pusta) używa wartości odziedziczonej z elementu `#C_Cpp.maxCachedProcesses#`.", "c_cpp.configuration.intelliSense.maxMemory.markdownDescription": "Starsze procesy IntelliSense zostaną zamknięte przed utworzeniem nowych procesów po przekroczeniu tego użycia pamięci (w MB). Wartość domyślna „null” (pusta) używa wartości dziedziczonej z elementu `#C_Cpp.maxMemory#`.", "c_cpp.configuration.references.maxConcurrentThreads.markdownDescription": "Maksymalna liczba współbieżnych wątków do użycia dla opcji „Znajdź wszystkie odwołania” i „Zmień nazwę”. Wartość domyślna „null” (pusta) używa wartości dziedziczonej z elementu `#C_Cpp.maxConcurrentThreads#`.", - "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "Maksymalna liczba procesów do zachowania w pamięci dla elementów „Znajdź wszystkie odwołania” i „Zmień nazwę”. Wartość „null” (pusta) używa wartości dziedziczonej z elementu `#C_Cpp.maxCachedProcesses#`.", + "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "Maksymalna liczba procesów do zachowania w pamięci dla elementów „Znajdź wszystkie odwołania” i „Zmień nazwę”. Wartość domyślna `0` powoduje wyłączenie tej funkcji. Wartość `null` (pusta) używa wartości dziedziczonej z elementu `#C_Cpp.maxCachedProcesses#`.", "c_cpp.configuration.references.maxMemory.markdownDescription": "Mniej procesów „Znajdź wszystkie odwołania” i „Zmień nazwę” będzie buforowanych i uruchamianych współbieżnie po przekroczeniu tego użycia pamięci (w MB). Wartość domyślna „null” (pusta) używa wartości dziedziczonej z elementu `#C_Cpp.maxMemory#`.", "c_cpp.configuration.codeAnalysis.maxConcurrentThreads.markdownDescription": "Maksymalna liczba współbieżnych wątków do użycia na potrzeby analizy kodu. Wartość domyślna `null` (pusta) używa połowy wartości elementu `#C_Cpp.maxConcurrentThreads#`.", "c_cpp.configuration.codeAnalysis.maxMemory.markdownDescription": "Mniej procesów analizy kodu będzie uruchamianych współbieżnie po przekroczeniu tego użycia pamięci (w MB). Wartość domyślna „null” (pusta) używa wartości dziedziczonej z elementu `#C_Cpp.maxMemory#`.", @@ -54,7 +54,7 @@ "c_cpp.configuration.codeAnalysis.clangTidy.args.markdownDescription": "Dodatkowe argumenty wiersza polecenia do przekazania do elementu `clang-tidy`. Mają one pierwszeństwo przed odpowiednikami ustawień `C_Cpp.codeAnalysis.clangTidy.*`.", "c_cpp.configuration.codeAnalysis.clangTidy.checks.enabled.markdownDescription": "Lista włączonych sprawdzeń `clang-tidy`. Wartości są dołączane do elementu `Checks` w pliku `.clang-tidy` lub konfiguracji `#C_Cpp.codeAnalysis.clangTidy.config#`, jeśli istnieją. Domyślne sprawdzenie `clang-analyzer-*` jest zawsze używane, chyba że jest jawnie wyłączone.", "c_cpp.configuration.codeAnalysis.clangTidy.checks.disabled.markdownDescription": "Lista wyłączonych testów `clang-tidy`. Wartości są dołączane do elementu `Checks` w pliku `.clang-tidy` lub konfiguracji `#C_Cpp.codeAnalysis.clangTidy.config#`, jeśli istnieją.", - "c_cpp.configuration.formatting.description": "Konfiguruje aparat formatowania", + "c_cpp.configuration.formatting.description": "Konfiguruje aparat formatowania.", "c_cpp.configuration.formatting.clangFormat.markdownDescription": "Do formatowania kodu będzie używane polecenie `clang-format`.", "c_cpp.configuration.formatting.vcFormat.markdownDescription": "Do formatowania kodu będzie używany aparat formatowania języka Visual C++.", "c_cpp.configuration.formatting.Default.markdownDescription": "Domyślnie element `clang-format` zostanie użyty do formatowania kodu. Niemniej jednak aparat formatowania programu Visual C++ będzie używany, jeśli plik `.editorconfig` z odpowiednimi ustawieniami zostanie znaleziony bliżej formatowanego kodu, a `#C_Cpp.clang_format_style#` jest wartością domyślną: `file`.", @@ -305,5 +305,19 @@ "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.loadOnlyIncluded.enumDescriptions": "Nie próbuj ładować symboli dla ŻADNEGO modułu, jeśli nie znajduje się w tablicy „includedModules” lub jest ono uwzględniane przez ustawienie „includeSymbolsNextToModules”.", "c_cpp.debuggers.VSSymbolOptionsModuleFilter.excludedModules.description": "Tablica modułów, dla których debuger NIE powinien ładować symboli. Symbole wieloznaczne (przykład: MojaFirma.*.dll) są obsługiwane.\n\nTa właściwość jest ignorowana, chyba że właściwość „mode” jest ustawiona na wartość „loadAllButExcluded”.", "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includedModules.description": "Tablica modułów, dla których debuger powinien ładować symbole. Symbole wieloznaczne (przykład: MojaFirma.*.dll) są obsługiwane.\n\nTa właściwość jest ignorowana, chyba że właściwość „mode” jest ustawiona na wartość „loadOnlyIncluded”.", - "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includeSymbolsNextToModules.description": "Jeśli ma wartość true, w przypadku każdego modułu NIE BĘDĄCEGO w tablicy „includedModules” debuger będzie nadal sprawdzał obok modułu i uruchamianego pliku wykonywalnego, ale nie będzie sprawdzał ścieżek na liście wyszukiwania symboli. Ta opcja ma wartość domyślną „true”.\n\nTa właściwość jest ignorowana, chyba że właściwość „mode” jest ustawiona na wartość „loadOnlyIncluded”." + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includeSymbolsNextToModules.description": "Jeśli ma wartość true, w przypadku każdego modułu NIE BĘDĄCEGO w tablicy „includedModules” debuger będzie nadal sprawdzał obok modułu i uruchamianego pliku wykonywalnego, ale nie będzie sprawdzał ścieżek na liście wyszukiwania symboli. Ta opcja ma wartość domyślną „true”.\n\nTa właściwość jest ignorowana, chyba że właściwość „mode” jest ustawiona na wartość „loadOnlyIncluded”.", + "c_cpp.semanticTokenTypes.referenceType.description": "Styl dla typów referencyjnych języka C++/interfejsu wiersza polecenia.", + "c_cpp.semanticTokenTypes.cliProperty.description": "Styl dla właściwości języka C++/interfejsu wiersza polecenia.", + "c_cpp.semanticTokenTypes.genericType.description": "Styl dla typów ogólnych języka C++/interfejsu wiersza polecenia.", + "c_cpp.semanticTokenTypes.valueType.description": "Styl dla typów wartości języka C++/interfejsu wiersza polecenia.", + "c_cpp.semanticTokenTypes.templateFunction.description": "Styl dla funkcji szablonu języka C++.", + "c_cpp.semanticTokenTypes.templateType.description": "Styl dla typów szablonów języka C++.", + "c_cpp.semanticTokenTypes.operatorOverload.description": "Styl dla przeciążonych operatorów języka C++.", + "c_cpp.semanticTokenTypes.memberOperatorOverload.description": "Styl dla funkcji składowych przeciążonych operatorów języka C++.", + "c_cpp.semanticTokenTypes.newOperator.description": "Styl dla nowych lub usuwanych operatorów języka C++.", + "c_cpp.semanticTokenTypes.customLiteral.description": "Styl dla literałów zdefiniowanych przez użytkownika języka C++.", + "c_cpp.semanticTokenTypes.numberLiteral.description": "Styl dla liczb literałów zdefiniowanych przez użytkownika języka C++.", + "c_cpp.semanticTokenTypes.stringLiteral.description": "Styl dla ciągów literałów zdefiniowanych przez użytkownika języka C++.", + "c_cpp.semanticTokenModifiers.global.description": "Styl używany w przypadku symboli, które są globalne.", + "c_cpp.semanticTokenModifiers.local.description": "Styl używany w przypadku symboli, które są lokalne." } \ No newline at end of file diff --git a/Extension/i18n/ptb/package.i18n.json b/Extension/i18n/ptb/package.i18n.json index 698352c19c..5a722a5318 100644 --- a/Extension/i18n/ptb/package.i18n.json +++ b/Extension/i18n/ptb/package.i18n.json @@ -31,30 +31,30 @@ "c_cpp.command.RunCodeAnalysisOnOpenFiles.title": "Executar Code Analysis em Abrir Arquivos", "c_cpp.command.RunCodeAnalysisOnAllFiles.title": "Executar Code Analysis em Todos os Arquivos", "c_cpp.command.ClearCodeAnalysisSquiggles.title": "Limpar Code Analysis rabiscos", - "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "O número máximo de threads simultâneos a serem usado para processamento de serviço de linguagem. O valor é uma dica e nem sempre pode ser usado. O padrão de 'null' (vazio) usa o número de processadores lógicos disponíveis.", - "c_cpp.configuration.maxCachedProcesses.markdownDescription": "O número máximo de processos armazenados em cache a serem usado para o processamento do serviço de linguagem. O padrão 'null' (vazio) usa duas vezes o número de processadores lógicos disponíveis.", - "c_cpp.configuration.maxMemory.markdownDescription": "A memória máxima (em MB) disponível para processamento do serviço de idioma. Menos processos serão armazenados em cache e executados simultaneamente depois que esse uso de memória for excedido. O padrão 'null' (vazio) usa a memória livre do sistema.", - "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "O número máximo de processos do IntelliSense a serem mantidos em execução. O padrão de 'null' (vazio) usa o valor herdado de '#C_Cpp.maxCachedProcesses#'", - "c_cpp.configuration.intelliSense.maxMemory.markdownDescription": "Os processos mais antigos do IntelliSense serão desligados antes que novos processos sejam criados depois que esse uso de memória (em MB) for excedido. O padrão de 'null' (vazio) usa o valor herdado de '#C_Cpp.maxMemory#'.", + "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "O número máximo de threads simultâneos a serem usado para processamento de serviço de linguagem. O valor é uma dica e nem sempre pode ser usado. O padrão de `null` (vazio) usa o número de processadores lógicos disponíveis.", + "c_cpp.configuration.maxCachedProcesses.markdownDescription": "O número máximo de processos armazenados em cache a serem usado para o processamento do serviço de linguagem. O padrão `null` (vazio) usa duas vezes o número de processadores lógicos disponíveis.", + "c_cpp.configuration.maxMemory.markdownDescription": "A memória máxima (em MB) disponível para processamento do serviço de idioma. Menos processos serão armazenados em cache e executados simultaneamente depois que esse uso de memória for excedido. O padrão `null` (vazio) usa a memória livre do sistema.", + "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "O número máximo de processos do IntelliSense a serem mantidos em execução. O padrão de `null` (vazio) usa o valor herdado de `#C_Cpp.maxCachedProcesses#`", + "c_cpp.configuration.intelliSense.maxMemory.markdownDescription": "Os processos mais antigos do IntelliSense serão desligados antes que novos processos sejam criados depois que esse uso de memória (em MB) for excedido. O padrão de `null` (vazio) usa o valor herdado de `#C_Cpp.maxMemory#`.", "c_cpp.configuration.references.maxConcurrentThreads.markdownDescription": "O número máximo de threads simultâneos a serem usados para 'Localizar todas as referências' e 'Renomear'. O padrão de `null` (vazio) usa o valor herdado de` # C_Cpp.maxConcurrentThreads # `.", - "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "O número máximo de processos a serem mantidos na memória para 'Localizar Todas as Referências' e 'Renomear'. O valor de 'null' (vazio) usa o valor herdado de '#C_Cpp.maxCachedProcesses#'.", - "c_cpp.configuration.references.maxMemory.markdownDescription": "Menos processos 'Localizar Todas as Referências' e 'Renomear' serão armazenados em cache e executados simultaneamente depois que esse uso de memória (em MB) for excedido. O padrão de 'null' (vazio) usa o valor herdado de '#C_Cpp.maxMemory#'.", + "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "O número máximo de processos para manter na memória para 'Encontrar todas as referências' e 'Renomear'. O padrão de `0` desabilita esse recurso. O valor de `null` (vazio) usa o valor herdado de `#C_Cpp.maxCachedProcesses#`.", + "c_cpp.configuration.references.maxMemory.markdownDescription": "Menos processos 'Localizar Todas as Referências' e 'Renomear' serão armazenados em cache e executados simultaneamente depois que esse uso de memória (em MB) for excedido. O padrão de `null` (vazio) usa o valor herdado de `#C_Cpp.maxMemory#`.", "c_cpp.configuration.codeAnalysis.maxConcurrentThreads.markdownDescription": "O número máximo de threads simultâneos a serem usados para análise de código. O padrão `null` (vazio) usa metade do valor herdado de `#C_Cpp.maxConcurrentThreads#`.", - "c_cpp.configuration.codeAnalysis.maxMemory.markdownDescription": "Menos processos de análise de código serão executados simultaneamente depois que esse uso de memória (em MB) for excedido. O padrão de 'null' (vazio) usa o valor herdado de '#C_Cpp.maxMemory#'.", - "c_cpp.configuration.codeAnalysis.updateDelay.markdownDescription": "Controla o atraso em milissegundos antes que a análise de código comece o processamento depois que um salvamento é disparado de uma edição quando '#files.autoSave#' é 'afterDelay' e '#C_Cpp.codeAnalysis.runAutomatically#' é 'true'.", - "c_cpp.configuration.codeAnalysis.exclude.markdownDescription": "Configure padrões glob para excluir pastas e arquivos para análise de código. Arquivos que não estão na pasta do workspace são sempre excluídos. Herda valores de '#files.exclude#' e '#C_Cpp.files.exclude#'. Leia mais sobre padrões glob [aqui](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.codeAnalysis.maxMemory.markdownDescription": "Menos processos de análise de código serão executados simultaneamente depois que esse uso de memória (em MB) for excedido. O padrão de `null` (vazio) usa o valor herdado de `#C_Cpp.maxMemory#`.", + "c_cpp.configuration.codeAnalysis.updateDelay.markdownDescription": "Controla o atraso em milissegundos antes que a análise de código comece o processamento depois que um salvamento é disparado de uma edição quando `#files.autoSave#` é `afterDelay` e `#C_Cpp.codeAnalysis.runAutomatically#` é `true`.", + "c_cpp.configuration.codeAnalysis.exclude.markdownDescription": "Configure padrões glob para excluir pastas e arquivos para análise de código. Arquivos que não estão na pasta do workspace são sempre excluídos. Herda valores de `#files.exclude#` e `#C_Cpp.files.exclude#`. Leia mais sobre padrões glob [aqui](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", "c_cpp.configuration.codeAnalysis.excludeBoolean.markdownDescription": "O padrão glob para corresponder aos caminhos de arquivo. Defina como `true` ou` false` para habilitar ou desabilitar o padrão.", "c_cpp.configuration.codeAnalysis.excludeWhen.markdownDescription": "Verificação adicional nos irmãos de um arquivo correspondente. Use `$(basename)` como variável para o nome do arquivo correspondente.", - "c_cpp.configuration.codeAnalysis.runAutomatically.markdownDescription": "Se for 'true', a análise de código será executada automaticamente em um arquivo depois que ele for aberto ou salvo.", - "c_cpp.configuration.codeAnalysis.clangTidy.enabled.markdownDescription": "Se for 'true', a análise de código usando 'clang-tidy' será habilitada e executada automaticamente se '#C_Cpp.codeAnalysis.runAutomatically#' for 'true' (o padrão).", + "c_cpp.configuration.codeAnalysis.runAutomatically.markdownDescription": "Se for `true`, a análise de código será executada automaticamente em um arquivo depois que ele for aberto ou salvo.", + "c_cpp.configuration.codeAnalysis.clangTidy.enabled.markdownDescription": "Se for `true`, a análise de código usando `clang-tidy` será habilitada e executada automaticamente se `#C_Cpp.codeAnalysis.runAutomatically#` for `true` (o padrão).", "c_cpp.configuration.codeAnalysis.clangTidy.path.markdownDescription": "O caminho completo do executável `clang-tidy`. Se não for especificado, o `clang-tidy` estará disponível no caminho do ambiente usado. Se não for encontrado no caminho do ambiente, o `clang-tidy` empacotado com a extensão será usado.", - "c_cpp.configuration.codeAnalysis.clangTidy.config.markdownDescription": "Especifica uma configuração 'clang-tidy' no formato YAML/JSON: '{Checks: '-*,clang-analyzer-*', CheckOptions: [{key: x, value: y}]}'. Quando o valor estiver vazio, 'clang-tidy' tentará localizar um arquivo chamado '.clang-tidy' para cada arquivo de origem em seus diretórios pai.", - "c_cpp.configuration.codeAnalysis.clangTidy.fallbackConfig.markdownDescription": "Especifica uma configuração 'clang-tidy' no formato YAML/JSON a ser usada como fallback quando '#C_Cpp.codeAnalysis.clangTidy.config#' não estiver definido e nenhum arquivo '.clang-tidy' for encontrado: '{Checks: '-*,clang-analyzer-*', CheckOptions: [{key: x, value: y}]}'.", + "c_cpp.configuration.codeAnalysis.clangTidy.config.markdownDescription": "Especifica uma configuração `clang-tidy` no formato YAML/JSON: `{Checks: '-*,clang-analyzer-*', CheckOptions: [{key: x, value: y}]}`. Quando o valor estiver vazio, `clang-tidy` tentará localizar um arquivo chamado `.clang-tidy` para cada arquivo de origem em seus diretórios pai.", + "c_cpp.configuration.codeAnalysis.clangTidy.fallbackConfig.markdownDescription": "Especifica uma configuração `clang-tidy` no formato YAML/JSON a ser usada como fallback quando `#C_Cpp.codeAnalysis.clangTidy.config#` não estiver definido e nenhum arquivo `.clang-tidy` for encontrado: `{Checks: '-*,clang-analyzer-*', CheckOptions: [{key: x, value: y}]}`.", "c_cpp.configuration.codeAnalysis.clangTidy.headerFilter.markdownDescription": "Uma expressão regular estendida (ERE) que corresponde ao nome do cabeçalho a partir do qual o diagnóstico deve ser gerado. Os diagnósticos do arquivo principal de cada unidade de tradução são sempre exibidos. A variável `${workspaceFolder}` é suportada (e será usada como o valor de fallback padrão se o arquivo `.clang-tidy` não existir). Se esta opção não for `null` (vazia), ela substituirá a opção `HeaderFilterRegex` em um arquivo `.clang-tidy`, se houver.", - "c_cpp.configuration.codeAnalysis.clangTidy.args.markdownDescription": "Argumentos de linha de comando adicionais a serem passados para 'clang-tidy'. Elas têm precedência sobre as configurações 'C_Cpp.codeAnalysis.clangTidy.*' equivalentes.", - "c_cpp.configuration.codeAnalysis.clangTidy.checks.enabled.markdownDescription": "Lista de verificações 'clang-tidy' habilitadas. Os valores são acrescentados às 'Verificações' em um arquivo '.clang-tidy' ou '#C_Cpp.codeAnalysis.clangTidy.config#', se houver. A verificação padrão 'clang-analyzer-*' é sempre usada, a menos que seja explicitamente desabilitada.", - "c_cpp.configuration.codeAnalysis.clangTidy.checks.disabled.markdownDescription": "Lista de verificações \"clang-tidy\" desabilitadas. Os valores são acrescentados às 'Verificações' em um arquivo '.clang-tidy' ou '#C_Cpp.codeAnalysis.clangTidy.config#', se houver.", - "c_cpp.configuration.formatting.description": "Configura o mecanismo de formatação", + "c_cpp.configuration.codeAnalysis.clangTidy.args.markdownDescription": "Argumentos de linha de comando adicionais a serem passados para `clang-tidy`. Elas têm precedência sobre as configurações `C_Cpp.codeAnalysis.clangTidy.*` equivalentes.", + "c_cpp.configuration.codeAnalysis.clangTidy.checks.enabled.markdownDescription": "Lista de verificações `clang-tidy` habilitadas. Os valores são acrescentados às 'Verificações' em um arquivo `.clang-tidy` ou `#C_Cpp.codeAnalysis.clangTidy.config#`, se houver. A verificação padrão `clang-analyzer-*` é sempre usada, a menos que seja explicitamente desabilitada.", + "c_cpp.configuration.codeAnalysis.clangTidy.checks.disabled.markdownDescription": "Lista de verificações `clang-tidy` desabilitadas. Os valores são acrescentados às 'Verificações' em um arquivo `.clang-tidy` ou `#C_Cpp.codeAnalysis.clangTidy.config#`, se houver.", + "c_cpp.configuration.formatting.description": "Configura o mecanismo de formatação.", "c_cpp.configuration.formatting.clangFormat.markdownDescription": "`clang-format` será usado para formatar o código.", "c_cpp.configuration.formatting.vcFormat.markdownDescription": "O mecanismo de formatação Visual C++ será usado para formatar o código.", "c_cpp.configuration.formatting.Default.markdownDescription": "Por padrão, `clang-format` será usado para formatar o código. No entanto, o mecanismo de formatação Visual C++ será usado se um arquivo `.editorconfig` com configurações relevantes for encontrado próximo ao código sendo formatado e` #C_Cpp.clang_format_style# ` for o valor padrão:`arquivo`.", @@ -69,7 +69,7 @@ "c_cpp.configuration.vcFormat.indent.withinParentheses.indent.markdownDescription": "A nova linha é recuada com base em `#C_Cpp.vcFormat.indent.multiLineRelativeTo#`.", "c_cpp.configuration.vcFormat.indent.preserveWithinParentheses.description": "No código existente, preservar o alinhamento de recuo existente das novas linhas entre parênteses.", "c_cpp.configuration.vcFormat.indent.caseLabels.markdownDescription": "Os rótulos são recuados em relação às instruções de troca pela quantidade especificada na configuração `#editor.tabSize#`.", - "c_cpp.configuration.vcFormat.indent.caseContents.markdownDescription": "O código dentro de um bloco `case` é recuado em relação ao seu rótulo pela quantidade especificada na configuração `#editor.tabSize#`.", + "c_cpp.configuration.vcFormat.indent.caseContents.markdownDescription": "O código dentro de um bloco `case` é recuado em relação ao seu rótulo pela quantidade especificada na configuração`#editor.tabSize#`.", "c_cpp.configuration.vcFormat.indent.caseContentsWhenBlock.markdownDescription": "Recue os colchetes seguindo uma instrução de caso pela quantidade especificada na configuração `#editor.tabSize#`.", "c_cpp.configuration.vcFormat.indent.lambdaBracesWhenParameter.markdownDescription": "Recue colchetes de lambdas usados ​​como parâmetros de função relativos ao início da instrução pela quantidade especificada na configuração `#editor.tabSize#`.", "c_cpp.configuration.vcFormat.indent.gotoLabels.description": "A posição dos rótulos goto.", @@ -305,5 +305,19 @@ "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.loadOnlyIncluded.enumDescriptions": "Não tente carregar símbolos para o módulo ANY, a menos que ele esteja na matriz 'includedModules' ou seja incluído por meio da configuração 'includeSymbolsNextToModules'.", "c_cpp.debuggers.VSSymbolOptionsModuleFilter.excludedModules.description": "Matriz de módulos para a qual o depurador NÃO deve carregar símbolos. Há suporte para curingas (exemplo: MyCompany.*.dll).\n\nEssa propriedade será ignorada, a menos que 'mode' esteja definido como 'loadAllButExcluded'.", "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includedModules.description": "Matriz de módulos para a qual o depurador deve carregar símbolos. Há suporte para curingas (exemplo: MyCompany.*.dll).\n\nessa propriedade será ignorada, a menos que 'mode' esteja definido como 'loadOnlyIncluded'.", - "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includeSymbolsNextToModules.description": "Se for verdadeira, para qualquer módulo NOT na matriz 'includedModules', o depurador ainda verificará ao lado do próprio módulo e do executável de inicialização, mas não verificará os caminhos na lista de pesquisa de símbolo. Esta opção é padronizada como 'true'.\n\nessa propriedade será ignorada, a menos que 'mode' esteja definido como 'loadOnlyIncluded'." + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includeSymbolsNextToModules.description": "Se for verdadeira, para qualquer módulo NOT na matriz 'includedModules', o depurador ainda verificará ao lado do próprio módulo e do executável de inicialização, mas não verificará os caminhos na lista de pesquisa de símbolo. Esta opção é padronizada como 'true'.\n\nessa propriedade será ignorada, a menos que 'mode' esteja definido como 'loadOnlyIncluded'.", + "c_cpp.semanticTokenTypes.referenceType.description": "Estilo para tipos de referência C++/CLI.", + "c_cpp.semanticTokenTypes.cliProperty.description": "Estilo para propriedades C++/CLI.", + "c_cpp.semanticTokenTypes.genericType.description": "Estilo para tipos genéricos C++/CLI.", + "c_cpp.semanticTokenTypes.valueType.description": "Estilo para tipos de valor C++/CLI.", + "c_cpp.semanticTokenTypes.templateFunction.description": "Estilo para funções de modelo C++.", + "c_cpp.semanticTokenTypes.templateType.description": "Estilo para tipos de modelo C++.", + "c_cpp.semanticTokenTypes.operatorOverload.description": "Estilo para operadores sobrecarregados em C++.", + "c_cpp.semanticTokenTypes.memberOperatorOverload.description": "Estilo para funções de membro do operador sobrecarregada em C++.", + "c_cpp.semanticTokenTypes.newOperator.description": "Estilo para operadores novos ou de exclusão do C++.", + "c_cpp.semanticTokenTypes.customLiteral.description": "Estilo para literais definidos pelo usuário em C ++.", + "c_cpp.semanticTokenTypes.numberLiteral.description": "Estilo para números literais definidos pelo usuário em C++.", + "c_cpp.semanticTokenTypes.stringLiteral.description": "Estilo para cadeias de caracteres literais definidas pelo usuário em C++.", + "c_cpp.semanticTokenModifiers.global.description": "Estilo a ser usado para símbolos que são globais.", + "c_cpp.semanticTokenModifiers.local.description": "Estilo a ser usado para símbolos locais." } \ No newline at end of file diff --git a/Extension/i18n/rus/c_cpp_properties.schema.json.i18n.json b/Extension/i18n/rus/c_cpp_properties.schema.json.i18n.json index 7007449fd1..0bce59ece9 100644 --- a/Extension/i18n/rus/c_cpp_properties.schema.json.i18n.json +++ b/Extension/i18n/rus/c_cpp_properties.schema.json.i18n.json @@ -20,7 +20,7 @@ "c_cpp_properties.schema.json.definitions.configurations.items.properties.mergeConfigurations": "Установите значение `true` (истина), чтобы объединить пути включения, определения и принудительные включения с аналогичными элементами от поставщика конфигурации.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.browse.properties.limitSymbolsToIncludedHeaders": "При задании значения `true` будут обрабатываться только файлы, прямо или косвенно включенные как файлы заголовков, а при задании значения `false` — все файлы по указанным путям для включений.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.browse.properties.databaseFilename": "Путь к создаваемой базе данных символов. При указании относительного пути он будет отсчитываться от используемого в рабочей области места хранения по умолчанию.", - "c_cpp_properties.schema.json.definitions.configurations.items.properties.browse.properties.path": "Список путей, используемых для индексирования и анализа символов рабочей области (для использования командами 'Перейти к определению', 'Найти все ссылки' и т. д.). Поиск по этим путям по умолчанию является рекурсивным. Укажите `*`, чтобы использовать нерекурсивный поиск. Например, если указать `${workspaceFolder}`, будет выполнен поиск по всем подкаталогам, а если указать `${workspaceFolder}/*` — не будет.", + "c_cpp_properties.schema.json.definitions.configurations.items.properties.browse.properties.path": "Список путей, используемых для индексирования и анализа символов рабочей области (для использования командами 'Go to Definition' (Перейти к определению), 'Find All References' (Найти все ссылки) и т. д.). Поиск по этим путям по умолчанию является рекурсивным. Укажите `*`, чтобы использовать нерекурсивный поиск. Например, если указать `${workspaceFolder}`, будет выполнен поиск по всем подкаталогам, а если указать `${workspaceFolder}/*` — не будет.", "c_cpp_properties.schema.json.definitions.configurations.items.properties.customConfigurationVariables": "Пользовательские переменные, которые можно запросить с помощью команды `${cpptools:activeConfigCustomVariable}`, чтобы использовать в качестве входных переменных в файле `launch.json` или `tasks.json`.", "c_cpp_properties.schema.json.definitions.env": "Пользовательские переменные, которые могут многократно применяться в любом месте этого файла с помощью синтаксиса `${переменная}` или `${env:переменная}`.", "c_cpp_properties.schema.json.definitions.version": "Версия файла конфигурации. Этим свойством управляет расширение. Не изменяйте его.", diff --git a/Extension/i18n/rus/package.i18n.json b/Extension/i18n/rus/package.i18n.json index 340595833f..d164746c0e 100644 --- a/Extension/i18n/rus/package.i18n.json +++ b/Extension/i18n/rus/package.i18n.json @@ -34,12 +34,12 @@ "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "Максимальное число одновременных потоков, используемых для обработки задач языковой службы. Это значение является рекомендуемым и может использоваться не всегда. При заданном по умолчанию значении `null` (пусто) используется число доступных логических процессоров.", "c_cpp.configuration.maxCachedProcesses.markdownDescription": "Максимальное число кэшированных процессов, используемых для обработки задач языковой службы. При заданном по умолчанию значении `null` (пусто) используется число, вдвое большее количества доступных логических процессоров.", "c_cpp.configuration.maxMemory.markdownDescription": "Максимальный объем памяти (в МБ), доступный для обработки задач языковой службы. После превышения этого объема памяти будет кэшироваться и одновременно выполняться меньше процессов. При заданном по умолчанию значении NULL (пусто) используется свободная память системы.", - "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "Максимальное число работающих процессов IntelliSense. При заданном по умолчанию значении `null` (пусто) используется значение, унаследованное от `#C_Cpp.maxCachedProcesses#`", + "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "Максимальное число работающих процессов IntelliSense. При заданном по умолчанию значении `null` (пусто) используется значение, унаследованное от `#C_Cpp.maxCachedProcesses#`.", "c_cpp.configuration.intelliSense.maxMemory.markdownDescription": "После превышения этого объема используемой памяти (в МБ) старые процессы IntelliSense завершат работу до создания новых процессов. При заданном по умолчанию значении `null` (пусто) используется значение, унаследованное от `#C_Cpp.maxMemory#`.", "c_cpp.configuration.references.maxConcurrentThreads.markdownDescription": "Максимальное число одновременных потоков, используемых при выполнении команд \"Найти все ссылки\" и \"Переименовать\". При заданном по умолчанию значении `null` (пусто) используется значение, унаследованное от `#C_Cpp.maxConcurrentThreads#`.", - "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "Максимальное число процессов, хранимых в памяти при выполнении команд \"Найти все ссылки\" и \"Переименовать\". При заданном значении `null` (пусто) используется значение, унаследованное от `#C_Cpp.maxCachedProcesses#`.", + "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "Максимальное количество процессов, хранимых в памяти при выполнении команд \"Найти все ссылки\" и \"Переименовать\". Значение по умолчанию `0` отключает эту функцию. При заданном значении `null` (пусто) используется значение, унаследованное от `#C_Cpp.maxCachedProcesses#`.", "c_cpp.configuration.references.maxMemory.markdownDescription": "После превышения этого объема используемой памяти (в МБ) будет кэшироваться и одновременно запускаться меньше процессов \"Найти все ссылки\" и \"Переименовать\". При заданном по умолчанию значении `null` (пусто) используется значение, унаследованное от `#C_Cpp.maxMemory#`.", - "c_cpp.configuration.codeAnalysis.maxConcurrentThreads.markdownDescription": "Максимальное число одновременных потоков, используемых при выполнении анализа кода. При заданном по умолчанию значении \"null\" (пусто) используется половина значения, унаследованного от \"#C_Cpp.maxConcurrentThreads#\".", + "c_cpp.configuration.codeAnalysis.maxConcurrentThreads.markdownDescription": "Максимальное число одновременных потоков, используемых при выполнении анализа кода. При заданном по умолчанию значении `null` (пусто) используется половина значения, унаследованного от `#C_Cpp.maxConcurrentThreads#`.", "c_cpp.configuration.codeAnalysis.maxMemory.markdownDescription": "После превышения этого объема используемой памяти (в МБ) одновременно будет запускаться меньше процессов анализа кода. При заданном по умолчанию значении `null` (пусто) используется значение, унаследованное от `#C_Cpp.maxMemory#`.", "c_cpp.configuration.codeAnalysis.updateDelay.markdownDescription": "Задает задержку в миллисекундах перед началом выполнения анализа кода после сигнала к сохранению изменяемого элемента, когда свойство `#files.autoSave#` имеет значение `afterDelay`, а свойство `#C_Cpp.codeAnalysis.runAutomatically#` — значение `true`.", "c_cpp.configuration.codeAnalysis.exclude.markdownDescription": "Настройка стандартных масок для исключения папок и файлов при анализе кода. Файлы, не входящие в папку рабочей области, всегда исключаются. Наследуются значения из `#files.exclude#` и `#C_Cpp.files.exclude#`. Дополнительные сведения о стандартных масках см. [здесь](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", @@ -183,7 +183,7 @@ "c_cpp.configuration.default.defines.markdownDescription": "Значение, используемое в конфигурации, если параметр `defines` не указан, или вставляемые значения, если в `defines` присутствует значение `${default}`.", "c_cpp.configuration.default.macFrameworkPath.markdownDescription": "Значение, используемое в конфигурации, если параметр `macFrameworkPath` не указан, или вставляемые значения, если в `macFrameworkPath`присутствует значение `${default}`.", "c_cpp.configuration.default.windowsSdkVersion.markdownDescription": "Версия пути включения Windows SDK для использования в Windows, например `10.0.17134.0`.", - "c_cpp.configuration.default.compileCommands.markdownDescription": "Значение, используемое в конфигурации, если параметр `compileCommands` не указан или имеет значение `${default}`.", + "c_cpp.configuration.default.compileCommands.markdownDescription": "Значение, используемое в конфигурации, если параметр `compileCommands`не указан или имеет значение `${default}`.", "c_cpp.configuration.default.forcedInclude.markdownDescription": "Значение, используемое в конфигурации, если параметр `forcedInclude` не указан, или вставляемые значения, если в `forcedInclude` присутствует значение `${default}`.", "c_cpp.configuration.default.intelliSenseMode.markdownDescription": "Значение, используемое в конфигурации, если параметр `intelliSenseMode` не указан или имеет значение `${default}`.", "c_cpp.configuration.default.compilerPath.markdownDescription": "Значение, используемое в конфигурации, если параметр `compilerPath` не указан или имеет значение `${default}`.", @@ -205,7 +205,7 @@ "c_cpp.configuration.codeFolding.description": "Если этот параметр включен, то диапазоны свертывания кода предоставляются языковым сервером.", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "Включите службы интеграции для [диспетчера зависимостей vcpkg](https://aka.ms/vcpkg/).", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "Добавьте пути включения из `nan` и `node-addon-api`, если они являются зависимостями.", - "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Если этот параметр имеет значение `true`, для операции 'Переименование символа' потребуется указать допустимый идентификатор C/C++.", + "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Если этот параметр имеет значение `true`, для операции 'Rename Symbol' (Переименование символа) потребуется указать допустимый идентификатор C/C++.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "Если присвоено значение `true`, автозаполнение автоматически добавит `(` после вызовов функции, при этом также может добавляться `)` в зависимости от значения параметра `#editor.autoClosingBrackets#`.", "c_cpp.configuration.filesExclude.markdownDescription": "Настройка стандартных масок для исключения папок (и файлов, если внесено изменение в `#C_Cpp.exclusionPolicy#`). Они специфичны для расширения C/C++ и дополняют `#files.exclude#`, но в отличие от `#files.exclude#` они применяются также к путям вне папки используемой рабочей области и не удаляются из представления обозревателя. Дополнительные сведения о стандартных масках см. [здесь](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", "c_cpp.configuration.filesExcludeBoolean.markdownDescription": "Стандартная маска, соответствующая путям к файлам. Задайте значение `true` или `false`, чтобы включить или отключить маску.", @@ -305,5 +305,19 @@ "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.loadOnlyIncluded.enumDescriptions": "Не пытайтесь загрузить символы для ЛЮБОГО модуля, если он не находится в массиве \"includedModules\", или он включен с помощью параметра \"includeSymbolsNextToModules\".", "c_cpp.debuggers.VSSymbolOptionsModuleFilter.excludedModules.description": "Массив модулей, для которых отладчик не должен загружать символы. Поддерживаются подстановочные знаки (например: MyCompany.*.dll)\n\nЭто свойство игнорируется, если для \"mode\" задано значение \"loadAllButExcluded\".", "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includedModules.description": "Массив модулей, для которых отладчик должен загружать символы. Поддерживаются подстановочные знаки (например: MyCompany.*.dll)\n\nЭто свойство игнорируется, если для \"mode\" задано значение \"loadOnlyIncluded\".", - "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includeSymbolsNextToModules.description": "Если значение равно true, для любого модуля, НЕ входящего в массив \"includedModules\", отладчик по-прежнему будет проверять рядом с самим модулем и запускаемым исполняемым файлом, но он не будет проверять пути в списке поиска символов. По умолчанию для этого параметра установлено значение \"true\".\n\nЭто свойство игнорируется, если для параметра \"mode\" установлено значение \"loadOnlyIncluded\"." + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includeSymbolsNextToModules.description": "Если значение равно true, для любого модуля, НЕ входящего в массив \"includedModules\", отладчик по-прежнему будет проверять рядом с самим модулем и запускаемым исполняемым файлом, но он не будет проверять пути в списке поиска символов. По умолчанию для этого параметра установлено значение \"true\".\n\nЭто свойство игнорируется, если для параметра \"mode\" установлено значение \"loadOnlyIncluded\".", + "c_cpp.semanticTokenTypes.referenceType.description": "Стиль для ссылочных типов C++/CLI.", + "c_cpp.semanticTokenTypes.cliProperty.description": "Стиль для свойств C++/CLI.", + "c_cpp.semanticTokenTypes.genericType.description": "Стиль для универсальных типов C++/CLI.", + "c_cpp.semanticTokenTypes.valueType.description": "Стиль для типов значений C++/CLI.", + "c_cpp.semanticTokenTypes.templateFunction.description": "Стиль для функций шаблона C++.", + "c_cpp.semanticTokenTypes.templateType.description": "Стиль для типов шаблонов C++.", + "c_cpp.semanticTokenTypes.operatorOverload.description": "Стиль для перегруженных операторов C++.", + "c_cpp.semanticTokenTypes.memberOperatorOverload.description": "Стиль для функций-членов перегруженных операторов C++.", + "c_cpp.semanticTokenTypes.newOperator.description": "Стиль для операторов создания или удаления C++.", + "c_cpp.semanticTokenTypes.customLiteral.description": "Стиль для определяемых пользователем литералов C++.", + "c_cpp.semanticTokenTypes.numberLiteral.description": "Стиль для определяемых пользователем числовых литералов C++.", + "c_cpp.semanticTokenTypes.stringLiteral.description": "Стиль для определяемых пользователем строковых литералов C++.", + "c_cpp.semanticTokenModifiers.global.description": "Стиль для символов, которые являются глобальными.", + "c_cpp.semanticTokenModifiers.local.description": "Стиль для символов, которые являются локальными." } \ No newline at end of file diff --git a/Extension/i18n/trk/package.i18n.json b/Extension/i18n/trk/package.i18n.json index 4c3343e8f8..d957bd0c00 100644 --- a/Extension/i18n/trk/package.i18n.json +++ b/Extension/i18n/trk/package.i18n.json @@ -34,10 +34,10 @@ "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "Dil hizmeti işleme için kullanılacak maksimum eşzamanlı iş parçacığı sayısı. Değer bir ipucudur ve her zaman kullanılamaz. `null` (boş) varsayılanı, mevcut mantıksal işlemcilerin sayısını kullanır.", "c_cpp.configuration.maxCachedProcesses.markdownDescription": "Dil hizmeti işleme için kullanılacak önbelleğe alınmış maksimum işlem sayısı. Varsayılan `null` (boş) değeri kullanılabilir mantıksal işlemci sayısının iki katını kullanıyor.", "c_cpp.configuration.maxMemory.markdownDescription": "Dil hizmeti işleme için kullanılabilen maksimum bellek (MB cinsinden). Bu bellek kullanımı aşıldıktan sonra daha az işlem önbelleğe alınacak ve eşzamanlı olarak çalıştırılacaktır. Varsayılan `null` (boş) sistemin boş belleğini kullanır.", - "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "Çalışmaya devam edecek maksimum IntelliSense işlemi sayısı. Varsayılan `null` (boş) `#C_Cpp.maxCachedProcesses#` öğesinden devralınan değeri kullanır", + "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "Çalışmaya devam edecek maksimum IntelliSense işlemi sayısı. Varsayılan `null` (boş) `#C_Cpp.maxCachedProcesses#` öğesinden devralınan değeri kullanır.", "c_cpp.configuration.intelliSense.maxMemory.markdownDescription": "Bu bellek kullanımı (MB cinsinden) aşıldıktan sonra yeni işlemler oluşturulmadan önce eski IntelliSense işlemleri kapatılır. Varsayılan `null` (boş), `#C_Cpp.maxMemory#` öğesinden devralınan değeri kullanır.", "c_cpp.configuration.references.maxConcurrentThreads.markdownDescription": "“Tüm Referansları Bul” ve “Yeniden Adlandır” için kullanılacak maksimum eşzamanlı iş parçacığı sayısı. Varsayılan `null` (boş), `#C_Cpp.maxConcurrentThreads#` öğesinden devralınan değeri kullanır.", - "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "“Tüm Referansları Bul” ve “Yeniden Adlandır” için bellekte tutulacak maksimum işlem sayısı. `null` (boş) değeri, `#C_Cpp.maxCachedProcesses#` öğesinden devralınan değeri kullanır.", + "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "‘Tüm Başvuruları Bul’ ve ‘Yeniden Adlandır’ için bellekte tutulacak maksimum işlem sayısı. `0` varsayılanı bu özelliği devre dışı bırakır. `null` (boş) değeri, `#C_Cpp.maxCachedProcesses#` öğesinden devralınan değeri kullanır.", "c_cpp.configuration.references.maxMemory.markdownDescription": "Bu bellek kullanımı (MB cinsinden) aşıldıktan sonra daha az kod analizi işlemi aynı anda çalışır. Varsayılan `null` (boş), `#C_Cpp.maxMemory#` öğesinden devralınan değeri kullanır.", "c_cpp.configuration.codeAnalysis.maxConcurrentThreads.markdownDescription": "Kod analizi için kullanılacak maksimum eşzamanlı iş parçacığı sayısı. Varsayılan `null` (boş), `#C_Cpp.maxConcurrentThreads#` öğesinden devralınan değerin yarısını kullanır.", "c_cpp.configuration.codeAnalysis.maxMemory.markdownDescription": "Bu bellek kullanımı (MB cinsinden) aşıldıktan sonra daha az kod analizi işlemi aynı anda çalışır. Varsayılan `null` (boş), `#C_Cpp.maxMemory#` öğesinden devralınan değeri kullanır.", @@ -54,7 +54,7 @@ "c_cpp.configuration.codeAnalysis.clangTidy.args.markdownDescription": "`clang-tidy` metoduna geçirilecek ek komut satırı bağımsız değişkenleri. Bunlar, eşdeğer `C_Cpp.codeAnalysis.clangTidy.*` ayarlarından önceliklidir.", "c_cpp.configuration.codeAnalysis.clangTidy.checks.enabled.markdownDescription": "Etkinleştirilmiş `clang-tidy` kontrollerinin listesi. Değerler, bir `.clang-tidy` dosyasındaki `Checks` veya varsa `#C_Cpp.codeAnalysis.clangTidy.config#` dosyasına eklenir. Varsayılan kontrol `clang-analyzer-*`, açıkça devre dışı bırakılmadığı sürece her zaman kullanılır.", "c_cpp.configuration.codeAnalysis.clangTidy.checks.disabled.markdownDescription": "Devre dışı bırakılan `clang-tidy` denetimlerinin listesi. Değerler bir `.clang-tidy` dosyasındaki `Checks` değerine veya varsa `#C_Cpp.codeAnalysis.clangTidy.config#` değerine eklenir.", - "c_cpp.configuration.formatting.description": "Biçimlendirme altyapısını yapılandırır", + "c_cpp.configuration.formatting.description": "Biçimlendirme altyapısını yapılandırır.", "c_cpp.configuration.formatting.clangFormat.markdownDescription": "Kodu biçimlendirmek için `clang-format` kullanılacak.", "c_cpp.configuration.formatting.vcFormat.markdownDescription": "Kodu biçimlendirmek için Visual C++ biçimlendirme altyapısı kullanılacak.", "c_cpp.configuration.formatting.Default.markdownDescription": "Varsayılan olarak, kodu biçimlendirmek için `clang-format` kullanılır. Ancak, ilgili ayarlara sahip bir `.editorconfig` dosyası, biçimlendirilmekte olan koda yaklaştığında ve `#C_Cpp.clang_format_style#` varsayılan değer olan `file` olduğunda Visual C++ biçimlendirme altyapısı kullanılır.", @@ -207,7 +207,7 @@ "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "`nan` ve `node-addon-api` bağımlılık olduğunda bunlardan ekleme yolları ekleyin.", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "`true` ise, 'Sembolü Yeniden Adlandır' işlemi için geçerli bir C/C++ tanımlayıcısı gerekir.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "`true` ise otomatik tamamla özelliği, işlev çağrılarından sonra otomatik olarak `(` ekler. Bazı durumlarda `#editor.autoClosingBrackets#` ayarının değerine bağlı olarak `)` karakteri de eklenebilir.", - "c_cpp.configuration.filesExclude.markdownDescription": "Klasörleri (ve `#C_Cpp.exclusionPolicy#` değiştirilirse dosyaları) hariç tutmak için glob desenlerini yapılandırın. Bunlar, C/C++ uzantısına özgüdür ve `#files.exclude#`a ek olarak, ancak `#files.exclude#` dan farklı olarak, geçerli çalışma alanı klasörünün dışındaki yollara da uygulanırlar ve Explorer görünümünden kaldırılmazlar. Glob desenleri ile ilgili daha fazla bilgiyi [buradan](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options) okuyun.", + "c_cpp.configuration.filesExclude.markdownDescription": "Klasörleri (ve `#C_Cpp.exclusionPolicy#` değiştirilirse dosyaları) hariç tutmak için glob desenlerini yapılandırın. Bunlar, C/C++ uzantısına özgüdür ve `#files.exclude#`a ek olarak, ancak `#files.exclude#`dan farklı olarak, geçerli çalışma alanı klasörünün dışındaki yollara da uygulanırlar ve Explorer görünümünden kaldırılmazlar. Glob desenleri ile ilgili daha fazla bilgiyi [buradan](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options) okuyun.", "c_cpp.configuration.filesExcludeBoolean.markdownDescription": "Dosya yollarıyla eşleşecek glob deseni. Deseni etkinleştirmek veya devre dışı bırakmak için `true` ya da `false` olarak ayarlayın.", "c_cpp.configuration.filesExcludeWhen.markdownDescription": "Eşleşen bir dosyanın eşdüzey öğeleri üzerindeki ek denetim. Eşleşen dosya adı için değişken olarak `$(basename)` kullanın.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.markdownDescription": "`true` ise, hata ayıklayıcı kabuk komut değiştirme eski kesme işaretini (`) kullanır.", @@ -305,5 +305,19 @@ "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.loadOnlyIncluded.enumDescriptions": "'includedModules' dizisinde olmayan veya 'includeSymbolsNextToModules' ayarı aracılığıyla eklenmeyen modüller için sembol yüklemeye çalışmayın.", "c_cpp.debuggers.VSSymbolOptionsModuleFilter.excludedModules.description": "Hata ayıklayıcısının, sembolleri YÜKLEMEMESİ gereken modül dizisi. Joker karakterler (ör. MyCompany.*.dll) desteklenir.\n\n'Mode' değeri 'loadAllButExcluded' olarak ayarlanmadıkça bu özellik yoksayılır.", "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includedModules.description": "Hata ayıklayıcısının, sembolleri yüklemesi gereken modül dizisi. Joker karakterler (ör. MyCompany.*.dll) desteklenir.\n\n'Mode' değeri 'loadOnlyIncluded' olarak ayarlanmadıkça bu özellik yoksayılır.", - "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includeSymbolsNextToModules.description": "True ise hata ayıklayıcısı, 'includedModules' dizisinde OLMAYAN herhangi bir modül için modülün ve başlatılan yürütülebilir dosyanın yanında denetlemeye devam eder ancak sembol arama listesindeki yolları denetlemez.\n\nBu seçenek varsayılan olarak 'true' şeklinde ayarlanır. 'Mode', 'loadOnlyIncluded' olarak ayarlanmadıkça bu özellik yoksayılır." + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.includeSymbolsNextToModules.description": "True ise hata ayıklayıcısı, 'includedModules' dizisinde OLMAYAN herhangi bir modül için modülün ve başlatılan yürütülebilir dosyanın yanında denetlemeye devam eder ancak sembol arama listesindeki yolları denetlemez.\n\nBu seçenek varsayılan olarak 'true' şeklinde ayarlanır. 'Mode', 'loadOnlyIncluded' olarak ayarlanmadıkça bu özellik yoksayılır.", + "c_cpp.semanticTokenTypes.referenceType.description": "C++/CLI başvuru türleri için kullanılacak stil.", + "c_cpp.semanticTokenTypes.cliProperty.description": "C++/CLI özellikleri için kullanılacak stil.", + "c_cpp.semanticTokenTypes.genericType.description": "C++/CLI genel türleri için kullanılacak stil.", + "c_cpp.semanticTokenTypes.valueType.description": "C++/CLI değer türleri için kullanılacak stil.", + "c_cpp.semanticTokenTypes.templateFunction.description": "C++ şablon işlevleri için kullanılacak stil.", + "c_cpp.semanticTokenTypes.templateType.description": "C++ şablon türleri için kullanılacak stil.", + "c_cpp.semanticTokenTypes.operatorOverload.description": "C++ aşırı yüklenmiş operatörleri için kullanılacak stil.", + "c_cpp.semanticTokenTypes.memberOperatorOverload.description": "C++ aşırı yüklenmiş operatör üye işlevleri için kullanılacak stil.", + "c_cpp.semanticTokenTypes.newOperator.description": "C++ new veya delete operatörleri için kullanılacak stil.", + "c_cpp.semanticTokenTypes.customLiteral.description": "C++ kullanıcı tanımlı sabit değerler için kullanılacak stil.", + "c_cpp.semanticTokenTypes.numberLiteral.description": "C++ kullanıcı tanımlı sabit sayılar için kullanılacak stil.", + "c_cpp.semanticTokenTypes.stringLiteral.description": "C++ kullanıcı tanımlı sabit dizeleri için kullanılacak stil.", + "c_cpp.semanticTokenModifiers.global.description": "Genel semboller için kullanılacak stil.", + "c_cpp.semanticTokenModifiers.local.description": "Yerel semboller için kullanılacak stil." } \ No newline at end of file diff --git a/Extension/package.nls.json b/Extension/package.nls.json index 5da67f3141..e35bc5519d 100644 --- a/Extension/package.nls.json +++ b/Extension/package.nls.json @@ -309,7 +309,7 @@ "c_cpp.semanticTokenTypes.templateType.description": "Style for C++ template types.", "c_cpp.semanticTokenTypes.operatorOverload.description": "Style for C++ overloaded operators.", "c_cpp.semanticTokenTypes.memberOperatorOverload.description": "Style for C++ overloaded operator member functions.", - "c_cpp.semanticTokenTypes.newOperator.description": "Style for C++ new or delete operators.", + "c_cpp.semanticTokenTypes.newOperator.description": "Style for C++ `new` or `delete` operators.", "c_cpp.semanticTokenTypes.customLiteral.description": "Style for C++ user-defined literals.", "c_cpp.semanticTokenTypes.numberLiteral.description": "Style for C++ user-defined literal numbers.", "c_cpp.semanticTokenTypes.stringLiteral.description": "Style for C++ user-defined literal strings.", From 6f39f3b2cf8efe9d8b24080c670900de356401b9 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson <49173979+Colengms@users.noreply.github.com> Date: Thu, 9 Dec 2021 18:08:11 -0800 Subject: [PATCH 02/16] A few more loc string fixes (#8513) --- Extension/i18n/csy/package.i18n.json | 38 ++++++++++++++-------------- Extension/i18n/fra/package.i18n.json | 2 +- Extension/i18n/plk/package.i18n.json | 20 +++++++-------- Extension/i18n/ptb/package.i18n.json | 8 +++--- 4 files changed, 34 insertions(+), 34 deletions(-) diff --git a/Extension/i18n/csy/package.i18n.json b/Extension/i18n/csy/package.i18n.json index cf3fb150d5..e35113705b 100644 --- a/Extension/i18n/csy/package.i18n.json +++ b/Extension/i18n/csy/package.i18n.json @@ -31,29 +31,29 @@ "c_cpp.command.RunCodeAnalysisOnOpenFiles.title": "Spustit Code Analysis při otevírání souborů", "c_cpp.command.RunCodeAnalysisOnAllFiles.title": "Spustit Code Analysis u všech souborů", "c_cpp.command.ClearCodeAnalysisSquiggles.title": "Vymazat podtržení vlnovkou Code Analysis", - "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "Maximální počet souběžných vláken, která se mají použít pro zpracování služby jazyka. Hodnota je nápověda a nemusí být vždy použita. Výchozí hodnota null (prázdná) používá počet dostupných logických procesorů.", - "c_cpp.configuration.maxCachedProcesses.markdownDescription": "Maximální počet procesů uložených v mezipaměti, které se mají použít pro zpracování služby jazyka. Výchozí hodnota null (prázdná) používá dvojnásobek dostupného počtu logických procesorů.", - "c_cpp.configuration.maxMemory.markdownDescription": "Maximální paměť (v MB), která je k dispozici pro zpracování služby jazyka. Po překročení tohoto využití paměti bude uloženo do mezipaměti méně procesů, které budou spuštěny souběžně. Výchozí hodnota null (prázdná) používá volnou paměť systému.", - "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "Maximální počet procesů IntelliSense, které mají být nadále spuštěny. Výchozí hodnota null (prázdná) používá hodnotu zděděnou z `#C_Cpp.maxCachedProcesses#`.", - "c_cpp.configuration.intelliSense.maxMemory.markdownDescription": "Po překročení tohoto využití paměti (v MB) se starší procesy IntelliSense vypnou před vytvořením nových procesů. Výchozí hodnota null (prázdná) používá hodnotu zděděnou od `#C_Cpp.maxMemory#`.", - "c_cpp.configuration.references.maxConcurrentThreads.markdownDescription": "Maximální počet souběžných vláken, která se mají použít pro možnosti Najít všechny odkazy a Přejmenovat. Výchozí hodnota null (prázdná) používá hodnotu zděděnou od `#C_Cpp.maxConcurrentThreads#`.", - "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "Maximální počet procesů, které se mají uchovávat v paměti pro příkazy Najít všechny odkazy a Přejmenovat. Výchozí hodnota 0 tuto funkci zakáže. Hodnota null (prázdná) používá hodnotu zděděnou z `#C_Cpp.maxCachedProcesses#`.", - "c_cpp.configuration.references.maxMemory.markdownDescription": "Po překročení tohoto využití paměti (v MB) bude uloženo do mezipaměti a souběžně spuštěno méně procesů Najít všechny odkazy a Přejmenovat. Výchozí hodnota null (prázdná) používá hodnotu zděděnou od `#C_Cpp.maxMemory#`.", + "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "Maximální počet souběžných vláken, která se mají použít pro zpracování služby jazyka. Hodnota je nápověda a nemusí být vždy použita. Výchozí hodnota `null` (prázdná) používá počet dostupných logických procesorů.", + "c_cpp.configuration.maxCachedProcesses.markdownDescription": "Maximální počet procesů uložených v mezipaměti, které se mají použít pro zpracování služby jazyka. Výchozí hodnota `null` (prázdná) používá dvojnásobek dostupného počtu logických procesorů.", + "c_cpp.configuration.maxMemory.markdownDescription": "Maximální paměť (v MB), která je k dispozici pro zpracování služby jazyka. Po překročení tohoto využití paměti bude uloženo do mezipaměti méně procesů, které budou spuštěny souběžně. Výchozí hodnota `null` (prázdná) používá volnou paměť systému.", + "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "Maximální počet procesů IntelliSense, které mají být nadále spuštěny. Výchozí hodnota `null` (prázdná) používá hodnotu zděděnou z `#C_Cpp.maxCachedProcesses#`.", + "c_cpp.configuration.intelliSense.maxMemory.markdownDescription": "Po překročení tohoto využití paměti (v MB) se starší procesy IntelliSense vypnou před vytvořením nových procesů. Výchozí hodnota `null` (prázdná) používá hodnotu zděděnou od `#C_Cpp.maxMemory#`.", + "c_cpp.configuration.references.maxConcurrentThreads.markdownDescription": "Maximální počet souběžných vláken, která se mají použít pro možnosti Najít všechny odkazy a Přejmenovat. Výchozí hodnota `null` (prázdná) používá hodnotu zděděnou od `#C_Cpp.maxConcurrentThreads#`.", + "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "Maximální počet procesů, které se mají uchovávat v paměti pro příkazy Najít všechny odkazy a Přejmenovat. Výchozí hodnota 0 tuto funkci zakáže. Hodnota `null` (prázdná) používá hodnotu zděděnou z `#C_Cpp.maxCachedProcesses#`.", + "c_cpp.configuration.references.maxMemory.markdownDescription": "Po překročení tohoto využití paměti (v MB) bude uloženo do mezipaměti a souběžně spuštěno méně procesů Najít všechny odkazy a Přejmenovat. Výchozí hodnota `null` (prázdná) používá hodnotu zděděnou od `#C_Cpp.maxMemory#`.", "c_cpp.configuration.codeAnalysis.maxConcurrentThreads.markdownDescription": "Maximální počet souběžných vláken, která se mají použít pro analýzu kódu. Výchozí hodnota `null` (prázdná) používá poloviční hodnotu zděděnou od `#C_Cpp.maxConcurrentThreads#`.", - "c_cpp.configuration.codeAnalysis.maxMemory.markdownDescription": "Po překročení tohoto využití paměti (v MB) bude souběžně spuštěno méně procesů analýzy kódu. Výchozí hodnota null (prázdná) používá hodnotu zděděnou od `#C_Cpp.maxMemory#`.", - "c_cpp.configuration.codeAnalysis.updateDelay.markdownDescription": "Určuje prodlevu v milisekundách před zahájením zpracování analýzy kódu po spuštění uložení z úpravy, když je #files.autoSave# afterDelay a `#C_Cpp.codeAnalysis.runAutomatically#` je true.", - "c_cpp.configuration.codeAnalysis.exclude.markdownDescription": "Umožňuje nakonfigurovat vzory glob pro vyloučení složek a souborů pro analýzu kódu. Soubory mimo složku pracovního prostoru jsou vždy vyloučeny. Dědí hodnoty od #files.exclude# a `#C_Cpp.files.exclude#`. Další informace o vzorech glob [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.codeAnalysis.maxMemory.markdownDescription": "Po překročení tohoto využití paměti (v MB) bude souběžně spuštěno méně procesů analýzy kódu. Výchozí hodnota `null` (prázdná) používá hodnotu zděděnou od `#C_Cpp.maxMemory#`.", + "c_cpp.configuration.codeAnalysis.updateDelay.markdownDescription": "Určuje prodlevu v milisekundách před zahájením zpracování analýzy kódu po spuštění uložení z úpravy, když je `#files.autoSave#` `afterDelay` a `#C_Cpp.codeAnalysis.runAutomatically#` je `true`.", + "c_cpp.configuration.codeAnalysis.exclude.markdownDescription": "Umožňuje nakonfigurovat vzory glob pro vyloučení složek a souborů pro analýzu kódu. Soubory mimo složku pracovního prostoru jsou vždy vyloučeny. Dědí hodnoty od `#files.exclude#` a `#C_Cpp.files.exclude#`. Další informace o vzorech glob [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", "c_cpp.configuration.codeAnalysis.excludeBoolean.markdownDescription": "Vzor glob pro hledání shod s cestami k souborům. Pokud chcete vzor povolit, nastavte hodnotu `true`, pokud ho chcete zakázat, nastavte hodnotu `false`.", "c_cpp.configuration.codeAnalysis.excludeWhen.markdownDescription": "Další kontrola položek na stejné úrovni u odpovídajícího souboru. Jako proměnnou názvu odpovídajícího souboru použijte `$(basename)`.", "c_cpp.configuration.codeAnalysis.runAutomatically.markdownDescription": "Pokud se nastaví na hodnotu true, analýza kódu se pro soubor spustí automaticky po jeho otevření nebo uložení.", - "c_cpp.configuration.codeAnalysis.clangTidy.enabled.markdownDescription": "Pokud true, bude analýza kódu pomocí clang-tidy povolena a spuštěna automaticky, pokud je `#C_Cpp.codeAnalysis.runAutomatically#` true (výchozí).", + "c_cpp.configuration.codeAnalysis.clangTidy.enabled.markdownDescription": "Pokud true, bude analýza kódu pomocí `clang-tidy` povolena a spuštěna automaticky, pokud je `#C_Cpp.codeAnalysis.runAutomatically#` true (výchozí).", "c_cpp.configuration.codeAnalysis.clangTidy.path.markdownDescription": "Úplná cesta ke spustitelnému souboru `clang-tidy`. Pokud se nespecifikuje a `clang-tidy` je k dispozici na cestě prostředí, použije se. Pokud se na cestě prostředí nenajde, použije se kopie `clang-tidy`, která se dodává spolu s rozšířením.", - "c_cpp.configuration.codeAnalysis.clangTidy.config.markdownDescription": "Určuje konfiguraci clang-tidy ve formátu YAML/JSON: {Checks: '-*,clang-analyzer-*', CheckOptions: [{key: x, value: y}]}. Když je hodnota prázdná, clang-tidy se pokusí najít soubor s názvem .clang-tidy pro každý zdrojový soubor v jeho nadřazených adresářích.", - "c_cpp.configuration.codeAnalysis.clangTidy.fallbackConfig.markdownDescription": "Určuje konfiguraci clang-tidy ve formátu YAML/JSON, která se použije jako náhradní, když není nastavená konfigurace `#C_Cpp.codeAnalysis.clangTidy.config#` a nenašel se žádný soubor .clang-tidy: {Checks: '-*,clang-analyzer-*', CheckOptions: [{key: x, value: y}]}.", - "c_cpp.configuration.codeAnalysis.clangTidy.headerFilter.markdownDescription": "Rozšířený regulární výraz POSIX (ERE) odpovídající názvům záhlaví pro výstup diagnostiky. Diagnostika z hlavního souboru každé jednotky překladu se vždy zobrazí. Proměnná ${workspaceFolder} se podporuje (a používá se jako výchozí základní hodnota, pokud neexistuje žádný soubor .clang-tidy). Pokud tato možnost není null (prázdná), přepíše možnost HeaderFilterRegex v souboru .clang-tidy, pokud existuje.", - "c_cpp.configuration.codeAnalysis.clangTidy.args.markdownDescription": "Další argumenty příkazového řádku, které se mají předat do clang-tidy. Mají přednost před ekvivalentním nastavením C_Cpp.codeAnalysis.clangTidy.*.", - "c_cpp.configuration.codeAnalysis.clangTidy.checks.enabled.markdownDescription": "Seznam povolených kontrol clang-tidy. Hodnoty jsou připojeny k hodnotě Checks v souboru .clang-tidy nebo `#C_Cpp.codeAnalysis.clangTidy.config#`, pokud existují. Pokud není explicitně zakázaná, použije se výchozí kontrola clang-analyzer-*.", - "c_cpp.configuration.codeAnalysis.clangTidy.checks.disabled.markdownDescription": "Seznam zakázaných kontrol clang-tidy. Hodnoty jsou připojeny k hodnotě Checks v souboru .clang-tidy nebo `#C_Cpp.codeAnalysis.clangTidy.config#`, pokud existují.", + "c_cpp.configuration.codeAnalysis.clangTidy.config.markdownDescription": "Určuje konfiguraci `clang-tidy` ve formátu YAML/JSON: `{Checks: '-*,clang-analyzer-*', CheckOptions: [{key: x, value: y}]}`. Když je hodnota prázdná, `clang-tidy` se pokusí najít soubor s názvem `.clang-tidy` pro každý zdrojový soubor v jeho nadřazených adresářích.", + "c_cpp.configuration.codeAnalysis.clangTidy.fallbackConfig.markdownDescription": "Určuje konfiguraci `clang-tidy` ve formátu YAML/JSON, která se použije jako náhradní, když není nastavená konfigurace `#C_Cpp.codeAnalysis.clangTidy.config#` a nenašel se žádný soubor `.clang-tidy`: `{Checks: '-*,clang-analyzer-*', CheckOptions: [{key: x, value: y}]}`.", + "c_cpp.configuration.codeAnalysis.clangTidy.headerFilter.markdownDescription": "Rozšířený regulární výraz POSIX (ERE) odpovídající názvům záhlaví pro výstup diagnostiky. Diagnostika z hlavního souboru každé jednotky překladu se vždy zobrazí. Proměnná `${workspaceFolder}` se podporuje (a používá se jako výchozí základní hodnota, pokud neexistuje žádný soubor `.clang-tidy`). Pokud tato možnost není `null` (prázdná), přepíše možnost `HeaderFilterRegex` v souboru `.clang-tidy`, pokud existuje.", + "c_cpp.configuration.codeAnalysis.clangTidy.args.markdownDescription": "Další argumenty příkazového řádku, které se mají předat do `clang-tidy`. Mají přednost před ekvivalentním nastavením `C_Cpp.codeAnalysis.clangTidy.*`.", + "c_cpp.configuration.codeAnalysis.clangTidy.checks.enabled.markdownDescription": "Seznam povolených kontrol `clang-tidy`. Hodnoty jsou připojeny k hodnotě `Checks` v souboru `.clang-tidy` nebo `#C_Cpp.codeAnalysis.clangTidy.config#`, pokud existují. Pokud není explicitně zakázaná, použije se výchozí kontrola `clang-analyzer-*`.", + "c_cpp.configuration.codeAnalysis.clangTidy.checks.disabled.markdownDescription": "Seznam zakázaných kontrol `clang-tidy`. Hodnoty jsou připojeny k hodnotě `Checks` v souboru `.clang-tidy` nebo `#C_Cpp.codeAnalysis.clangTidy.config#`, pokud existují.", "c_cpp.configuration.formatting.description": "Nakonfiguruje nástroj pro formátování.", "c_cpp.configuration.formatting.clangFormat.markdownDescription": "K formátování kódu se použije `clang-format`.", "c_cpp.configuration.formatting.vcFormat.markdownDescription": "K formátování kódu se použije nástroj formátování textu Visual C++.", @@ -207,7 +207,7 @@ "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "Pokud existují závislosti, přidejte cesty pro zahrnuté soubory z `nan` a `node-addon-api`.", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Když se tato hodnota nastaví na `true`, operace Přejmenovat symbol bude vyžadovat platný identifikátor C/C++.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "Pokud je hodnota `true`, automatické dokončování automaticky přidá za volání funkcí znak `(`. V takovém případě se může přidat i znak `)`, což záleží na hodnotě nastavení `#editor.autoClosingBrackets#`.", - "c_cpp.configuration.filesExclude.markdownDescription": "Nakonfigurujte vzory glob pro vyloučení složek (a souborů, pokud se změní `#C_Cpp.exclusionPolicy#`). Ty jsou specifické pro rozšíření C/C++ a doplňují `#files.exclude#`, ale na rozdíl od #files.exclude# platí také pro cesty mimo aktuální složku pracovního prostoru a neodebírají se ze zobrazení Průzkumníka. Další informace o vzorech glob najdete [tady](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExclude.markdownDescription": "Nakonfigurujte vzory glob pro vyloučení složek (a souborů, pokud se změní `#C_Cpp.exclusionPolicy#`). Ty jsou specifické pro rozšíření C/C++ a doplňují `#files.exclude#`, ale na rozdíl od `#files.exclude#` platí také pro cesty mimo aktuální složku pracovního prostoru a neodebírají se ze zobrazení Průzkumníka. Další informace o vzorech glob najdete [tady](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", "c_cpp.configuration.filesExcludeBoolean.markdownDescription": "Vzor glob pro hledání shod s cestami k souborům. Pokud chcete vzor povolit, nastavte hodnotu `true`, pokud ho chcete zakázat, nastavte hodnotu `false`.", "c_cpp.configuration.filesExcludeWhen.markdownDescription": "Další kontrola položek na stejné úrovni u odpovídajícího souboru. Jako proměnnou názvu odpovídajícího souboru použijte `$(basename)`.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.markdownDescription": "Když se nastaví na `true`, nahrazování příkazů shellu ladicího programu bude používat starou verzi obrácené čárky (`).", diff --git a/Extension/i18n/fra/package.i18n.json b/Extension/i18n/fra/package.i18n.json index df36ba3416..667c3cb203 100644 --- a/Extension/i18n/fra/package.i18n.json +++ b/Extension/i18n/fra/package.i18n.json @@ -50,7 +50,7 @@ "c_cpp.configuration.codeAnalysis.clangTidy.path.markdownDescription": "Le chemin complet de l'exécutable `clang-tidy`. S'il n'est pas spécifié, et que `clang-tidy` est disponible dans le chemin de l'environnement, il sera utilisé. S'il n'est pas trouvé dans le chemin de l'environnement, le `clang-tidy` fourni avec l'extension sera utilisé.", "c_cpp.configuration.codeAnalysis.clangTidy.config.markdownDescription": "Spécifie une configuration `clang-tidy` au format YAML/JSON : `{Checks: '-*,clang-analyzer-*', CheckOptions : [{key: x, value: y}]}`. Quand la valeur est vide, `clang-tidy` tente de trouver un fichier nommé `.clang-tidy` pour chaque fichier source dans ses répertoires parents.", "c_cpp.configuration.codeAnalysis.clangTidy.fallbackConfig.markdownDescription": "Spécifie une configuration `clang-tidy` au format YAML/JSON à utiliser comme secours quand `#C_Cpp.codeAnalysis.clangTidy.config#` n’est pas défini et qu’aucun fichier `.clang-tidy` n’est trouvé : `{Checks: '-*,clang-analyzer-*', CheckOptions : [{key: x, value: y}]}`.", - "c_cpp.configuration.codeAnalysis.clangTidy.headerFilter.markdownDescription": "Expression régulière étendue POSIX (ERE) correspondant aux noms des en-têtes à partir des diagnostics de sortie. Les diagnostics du fichier principal de chaque unité de traduction sont toujours affichés. La variable « ${workspaceFolder} » est prise en charge (et est utilisée comme valeur de secours par défaut si aucun fichier « .clang-tidy » n’existe). Si cette option n’est pas « null » (vide), elle remplace l’option « HeaderFilterRegex » dans un fichier « .clang-tidy », le cas échéant.", + "c_cpp.configuration.codeAnalysis.clangTidy.headerFilter.markdownDescription": "Expression régulière étendue POSIX (ERE) correspondant aux noms des en-têtes à partir des diagnostics de sortie. Les diagnostics du fichier principal de chaque unité de traduction sont toujours affichés. La variable `${workspaceFolder}` est prise en charge (et est utilisée comme valeur de secours par défaut si aucun fichier `.clang-tidy` n’existe). Si cette option n’est pas `null` (vide), elle remplace l’option `HeaderFilterRegex` dans un fichier `.clang-tidy`, le cas échéant.", "c_cpp.configuration.codeAnalysis.clangTidy.args.markdownDescription": "Arguments de ligne de commande supplémentaires à passer à `clang-tidy`. Ces paramètres sont prioritaires sur les paramètres équivalents `C_Cpp.codeAnalysis.clangTidy.*`.", "c_cpp.configuration.codeAnalysis.clangTidy.checks.enabled.markdownDescription": "Liste des vérifications `clang-tidy` activées. Les valeurs sont ajoutées aux `Checks` dans un fichier `.clang-tidy` ou `#C_Cpp.codeAnalysis.clangTidy.config#`, le cas échéant. La vérification par défaut `clang-analyzer-*` est toujours utilisée, sauf si elle est explicitement désactivée.", "c_cpp.configuration.codeAnalysis.clangTidy.checks.disabled.markdownDescription": "Liste des vérifications `clang-tidy` désactivées. Les valeurs sont ajoutées aux `Checks` dans un fichier `.clang-tidy` ou `#C_Cpp.codeAnalysis.clangTidy.config#`, le cas échéant.", diff --git a/Extension/i18n/plk/package.i18n.json b/Extension/i18n/plk/package.i18n.json index 2d30042069..b942aaf46f 100644 --- a/Extension/i18n/plk/package.i18n.json +++ b/Extension/i18n/plk/package.i18n.json @@ -31,17 +31,17 @@ "c_cpp.command.RunCodeAnalysisOnOpenFiles.title": "Uruchamianie rozszerzenia Code Analysis na otwartych plikach", "c_cpp.command.RunCodeAnalysisOnAllFiles.title": "Uruchamianie analizy kodu dla wszystkich plików", "c_cpp.command.ClearCodeAnalysisSquiggles.title": "Wyczyść zygzaki rozszerzenia Code Analysis", - "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "Maksymalna liczba współbieżnych wątków do użycia na potrzeby przetwarzania usług językowych. Wartość jest wskazówką i nie zawsze może być używana. Wartość domyślna „null” (pusta) używa liczby dostępnych procesorów logicznych.", - "c_cpp.configuration.maxCachedProcesses.markdownDescription": "Maksymalna liczba buforowanych procesów do użycia na potrzeby przetwarzania usług językowych. Wartość domyślna „null” (pusta) używa podwójnej liczby dostępnych procesorów logicznych.", - "c_cpp.configuration.maxMemory.markdownDescription": "Maksymalna ilość pamięci (w MB) dostępna na potrzeby przetwarzania usług językowych. Mniej procesów będzie buforowanych i uruchamianych współbieżnie po przekroczeniu tego użycia pamięci. Wartość domyślna „null” (pusta) używa wolnej pamięci systemu.", + "c_cpp.configuration.maxConcurrentThreads.markdownDescription": "Maksymalna liczba współbieżnych wątków do użycia na potrzeby przetwarzania usług językowych. Wartość jest wskazówką i nie zawsze może być używana. Wartość domyślna `null` (pusta) używa liczby dostępnych procesorów logicznych.", + "c_cpp.configuration.maxCachedProcesses.markdownDescription": "Maksymalna liczba buforowanych procesów do użycia na potrzeby przetwarzania usług językowych. Wartość domyślna `null` (pusta) używa podwójnej liczby dostępnych procesorów logicznych.", + "c_cpp.configuration.maxMemory.markdownDescription": "Maksymalna ilość pamięci (w MB) dostępna na potrzeby przetwarzania usług językowych. Mniej procesów będzie buforowanych i uruchamianych współbieżnie po przekroczeniu tego użycia pamięci. Wartość domyślna `null` (pusta) używa wolnej pamięci systemu.", "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "Maksymalna liczba procesów IntelliSense, które mają być nadal uruchomione. Wartość domyślna `null` (pusta) używa wartości odziedziczonej z elementu `#C_Cpp.maxCachedProcesses#`.", - "c_cpp.configuration.intelliSense.maxMemory.markdownDescription": "Starsze procesy IntelliSense zostaną zamknięte przed utworzeniem nowych procesów po przekroczeniu tego użycia pamięci (w MB). Wartość domyślna „null” (pusta) używa wartości dziedziczonej z elementu `#C_Cpp.maxMemory#`.", - "c_cpp.configuration.references.maxConcurrentThreads.markdownDescription": "Maksymalna liczba współbieżnych wątków do użycia dla opcji „Znajdź wszystkie odwołania” i „Zmień nazwę”. Wartość domyślna „null” (pusta) używa wartości dziedziczonej z elementu `#C_Cpp.maxConcurrentThreads#`.", + "c_cpp.configuration.intelliSense.maxMemory.markdownDescription": "Starsze procesy IntelliSense zostaną zamknięte przed utworzeniem nowych procesów po przekroczeniu tego użycia pamięci (w MB). Wartość domyślna `null` (pusta) używa wartości dziedziczonej z elementu `#C_Cpp.maxMemory#`.", + "c_cpp.configuration.references.maxConcurrentThreads.markdownDescription": "Maksymalna liczba współbieżnych wątków do użycia dla opcji „Znajdź wszystkie odwołania” i „Zmień nazwę”. Wartość domyślna `null` (pusta) używa wartości dziedziczonej z elementu `#C_Cpp.maxConcurrentThreads#`.", "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "Maksymalna liczba procesów do zachowania w pamięci dla elementów „Znajdź wszystkie odwołania” i „Zmień nazwę”. Wartość domyślna `0` powoduje wyłączenie tej funkcji. Wartość `null` (pusta) używa wartości dziedziczonej z elementu `#C_Cpp.maxCachedProcesses#`.", - "c_cpp.configuration.references.maxMemory.markdownDescription": "Mniej procesów „Znajdź wszystkie odwołania” i „Zmień nazwę” będzie buforowanych i uruchamianych współbieżnie po przekroczeniu tego użycia pamięci (w MB). Wartość domyślna „null” (pusta) używa wartości dziedziczonej z elementu `#C_Cpp.maxMemory#`.", + "c_cpp.configuration.references.maxMemory.markdownDescription": "Mniej procesów „Znajdź wszystkie odwołania” i „Zmień nazwę” będzie buforowanych i uruchamianych współbieżnie po przekroczeniu tego użycia pamięci (w MB). Wartość domyślna `null` (pusta) używa wartości dziedziczonej z elementu `#C_Cpp.maxMemory#`.", "c_cpp.configuration.codeAnalysis.maxConcurrentThreads.markdownDescription": "Maksymalna liczba współbieżnych wątków do użycia na potrzeby analizy kodu. Wartość domyślna `null` (pusta) używa połowy wartości elementu `#C_Cpp.maxConcurrentThreads#`.", - "c_cpp.configuration.codeAnalysis.maxMemory.markdownDescription": "Mniej procesów analizy kodu będzie uruchamianych współbieżnie po przekroczeniu tego użycia pamięci (w MB). Wartość domyślna „null” (pusta) używa wartości dziedziczonej z elementu `#C_Cpp.maxMemory#`.", - "c_cpp.configuration.codeAnalysis.updateDelay.markdownDescription": "Steruje opóźnieniem w milisekundach zanim rozszerzenie Code Analysis rozpocznie przetwarzanie po wyzwoleniu zapisu z edycji, gdy właściwość `#files.autoSave#` ma wartość „afterDelay”, a właściwość `#C_Cpp.codeAnalysis.runAutomatically#` ma wartość „true”.", + "c_cpp.configuration.codeAnalysis.maxMemory.markdownDescription": "Mniej procesów analizy kodu będzie uruchamianych współbieżnie po przekroczeniu tego użycia pamięci (w MB). Wartość domyślna `null` (pusta) używa wartości dziedziczonej z elementu `#C_Cpp.maxMemory#`.", + "c_cpp.configuration.codeAnalysis.updateDelay.markdownDescription": "Steruje opóźnieniem w milisekundach zanim rozszerzenie Code Analysis rozpocznie przetwarzanie po wyzwoleniu zapisu z edycji, gdy właściwość `#files.autoSave#` ma wartość `afterDelay`, a właściwość `#C_Cpp.codeAnalysis.runAutomatically#` ma wartość `true`.", "c_cpp.configuration.codeAnalysis.exclude.markdownDescription": "Skonfiguruj wzorce globalne na potrzeby wykluczania folderów i plików na potrzeby analizy kodu. Pliki, które nie znajdują się w folderze obszaru roboczego, są zawsze wykluczone. Dziedziczy wartości z elementów `#files.exclude#` i `#C_Cpp.files.exclude#`. Przeczytaj więcej o wzorcach globalnych [tutaj](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", "c_cpp.configuration.codeAnalysis.excludeBoolean.markdownDescription": "Wzorzec globalny do dopasowywania ścieżek do plików. Aby włączyć lub wyłączyć wzorzec, ustaw na wartość `true` lub `false`.", "c_cpp.configuration.codeAnalysis.excludeWhen.markdownDescription": "Dodatkowe sprawdzenie elementów równorzędnych pasującego pliku. Użyj ciągu `$(basename)` jako zmiennej dla nazwy pasującego pliku.", @@ -50,7 +50,7 @@ "c_cpp.configuration.codeAnalysis.clangTidy.path.markdownDescription": "Pełna ścieżka pliku wykonywalnego `clang-tidy`. Jeśli nie zostanie określony, a element `clang-tidy` jest dostępny w ścieżce środowiska, jest używany. Jeśli ścieżka środowiska nie zostanie znaleziona, zostanie użyty element `clang-tidy` w pakiecie z rozszerzeniem.", "c_cpp.configuration.codeAnalysis.clangTidy.config.markdownDescription": "Określa konfigurację `clang-tidy` w formacie YAML/JSON: `{Checks: '-*,clang-analyzer-*', CheckOptions: [{key: x, value: y}]}`. Gdy wartość jest pusta, element `clang-tidy` podejmie próbę znalezienia pliku o nazwie `clang-tidy` dla każdego pliku źródłowego w jego katalogach nadrzędnych.", "c_cpp.configuration.codeAnalysis.clangTidy.fallbackConfig.markdownDescription": "Określa konfigurację `clang-tidy` w formacie YAML/JSON, który ma być używany jako rezerwowy, gdy konfiguracja `#C_Cpp.codeAnalysis.clangTidy.config#` nie jest ustawiona i nie znaleziono pliku `.clang-tidy`: `{Checks: `-*,clang-analyzer-*`, CheckOptions: [{key: x, wartość: y}]}`.", - "c_cpp.configuration.codeAnalysis.clangTidy.headerFilter.markdownDescription": "Rozszerzone wyrażenie regularne (ERE) POSIX pasujące do nazw nagłówków do diagnostyki wyjściowej. Diagnostyka z głównego pliku każdej jednostki tłumaczenia jest zawsze wyświetlana. Zmienna „${workspaceFolder}” jest obsługiwana (i jest używana jako domyślna wartość rezerwowa, jeśli plik „.clang-tidy” nie istnieje). Jeśli ta opcja nie ma wartości „null” (pusta), zastępuje opcję „HeaderFilterRegex” w pliku „.clang-tidy”, jeśli istnieje.", + "c_cpp.configuration.codeAnalysis.clangTidy.headerFilter.markdownDescription": "Rozszerzone wyrażenie regularne (ERE) POSIX pasujące do nazw nagłówków do diagnostyki wyjściowej. Diagnostyka z głównego pliku każdej jednostki tłumaczenia jest zawsze wyświetlana. Zmienna `${workspaceFolder}` jest obsługiwana (i jest używana jako domyślna wartość rezerwowa, jeśli plik `.clang-tidy` nie istnieje). Jeśli ta opcja nie ma wartości `null` (pusta), zastępuje opcję `HeaderFilterRegex` w pliku `.clang-tidy`, jeśli istnieje.", "c_cpp.configuration.codeAnalysis.clangTidy.args.markdownDescription": "Dodatkowe argumenty wiersza polecenia do przekazania do elementu `clang-tidy`. Mają one pierwszeństwo przed odpowiednikami ustawień `C_Cpp.codeAnalysis.clangTidy.*`.", "c_cpp.configuration.codeAnalysis.clangTidy.checks.enabled.markdownDescription": "Lista włączonych sprawdzeń `clang-tidy`. Wartości są dołączane do elementu `Checks` w pliku `.clang-tidy` lub konfiguracji `#C_Cpp.codeAnalysis.clangTidy.config#`, jeśli istnieją. Domyślne sprawdzenie `clang-analyzer-*` jest zawsze używane, chyba że jest jawnie wyłączone.", "c_cpp.configuration.codeAnalysis.clangTidy.checks.disabled.markdownDescription": "Lista wyłączonych testów `clang-tidy`. Wartości są dołączane do elementu `Checks` w pliku `.clang-tidy` lub konfiguracji `#C_Cpp.codeAnalysis.clangTidy.config#`, jeśli istnieją.", @@ -201,7 +201,7 @@ "c_cpp.configuration.updateChannel.markdownDescription": "Ustaw na wartość `Insiders`, aby automatycznie pobierać i instalować najnowsze kompilacje niejawnych testerów rozszerzenia, które zawierają nadchodzące funkcje i poprawki błędów.", "c_cpp.configuration.experimentalFeatures.description": "Określa, czy można używać funkcji „eksperymentalnych”.", "c_cpp.configuration.suggestSnippets.markdownDescription": "Jeśli wartość to `true`, fragmenty kodu będą dostarczane przez serwer języka.", - "c_cpp.configuration.enhancedColorization.markdownDescription": "Jeśli ta opcja jest włączona, kod jest kolorowany na podstawie funkcji IntelliSense. To ustawienie ma zastosowanie tylko wtedy, gdy element #C_Cpp.intelliSenseEngine#` jest ustawiony na wartość `Default`.", + "c_cpp.configuration.enhancedColorization.markdownDescription": "Jeśli ta opcja jest włączona, kod jest kolorowany na podstawie funkcji IntelliSense. To ustawienie ma zastosowanie tylko wtedy, gdy element `#C_Cpp.intelliSenseEngine#` jest ustawiony na wartość `Default`.", "c_cpp.configuration.codeFolding.description": "Jeśli ta opcja jest włączona, zakresy składania kodu są dostarczane przez serwer języka.", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "Włącz usługi integracji dla elementu [vcpkg dependency manager](https://aka.ms/vcpkg/).", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "Dodaj ścieżki dołączania z plików `nan` i `node-addon-api`, jeśli są one zależnościami.", diff --git a/Extension/i18n/ptb/package.i18n.json b/Extension/i18n/ptb/package.i18n.json index 5a722a5318..1d3adc3873 100644 --- a/Extension/i18n/ptb/package.i18n.json +++ b/Extension/i18n/ptb/package.i18n.json @@ -36,7 +36,7 @@ "c_cpp.configuration.maxMemory.markdownDescription": "A memória máxima (em MB) disponível para processamento do serviço de idioma. Menos processos serão armazenados em cache e executados simultaneamente depois que esse uso de memória for excedido. O padrão `null` (vazio) usa a memória livre do sistema.", "c_cpp.configuration.intelliSense.maxCachedProcesses.markdownDescription": "O número máximo de processos do IntelliSense a serem mantidos em execução. O padrão de `null` (vazio) usa o valor herdado de `#C_Cpp.maxCachedProcesses#`", "c_cpp.configuration.intelliSense.maxMemory.markdownDescription": "Os processos mais antigos do IntelliSense serão desligados antes que novos processos sejam criados depois que esse uso de memória (em MB) for excedido. O padrão de `null` (vazio) usa o valor herdado de `#C_Cpp.maxMemory#`.", - "c_cpp.configuration.references.maxConcurrentThreads.markdownDescription": "O número máximo de threads simultâneos a serem usados para 'Localizar todas as referências' e 'Renomear'. O padrão de `null` (vazio) usa o valor herdado de` # C_Cpp.maxConcurrentThreads # `.", + "c_cpp.configuration.references.maxConcurrentThreads.markdownDescription": "O número máximo de threads simultâneos a serem usados para 'Localizar todas as referências' e 'Renomear'. O padrão de `null` (vazio) usa o valor herdado de `#C_Cpp.maxConcurrentThreads#`.", "c_cpp.configuration.references.maxCachedProcesses.markdownDescription": "O número máximo de processos para manter na memória para 'Encontrar todas as referências' e 'Renomear'. O padrão de `0` desabilita esse recurso. O valor de `null` (vazio) usa o valor herdado de `#C_Cpp.maxCachedProcesses#`.", "c_cpp.configuration.references.maxMemory.markdownDescription": "Menos processos 'Localizar Todas as Referências' e 'Renomear' serão armazenados em cache e executados simultaneamente depois que esse uso de memória (em MB) for excedido. O padrão de `null` (vazio) usa o valor herdado de `#C_Cpp.maxMemory#`.", "c_cpp.configuration.codeAnalysis.maxConcurrentThreads.markdownDescription": "O número máximo de threads simultâneos a serem usados para análise de código. O padrão `null` (vazio) usa metade do valor herdado de `#C_Cpp.maxConcurrentThreads#`.", @@ -57,7 +57,7 @@ "c_cpp.configuration.formatting.description": "Configura o mecanismo de formatação.", "c_cpp.configuration.formatting.clangFormat.markdownDescription": "`clang-format` será usado para formatar o código.", "c_cpp.configuration.formatting.vcFormat.markdownDescription": "O mecanismo de formatação Visual C++ será usado para formatar o código.", - "c_cpp.configuration.formatting.Default.markdownDescription": "Por padrão, `clang-format` será usado para formatar o código. No entanto, o mecanismo de formatação Visual C++ será usado se um arquivo `.editorconfig` com configurações relevantes for encontrado próximo ao código sendo formatado e` #C_Cpp.clang_format_style# ` for o valor padrão:`arquivo`.", + "c_cpp.configuration.formatting.Default.markdownDescription": "Por padrão, `clang-format` será usado para formatar o código. No entanto, o mecanismo de formatação Visual C++ será usado se um arquivo `.editorconfig` com configurações relevantes for encontrado próximo ao código sendo formatado e `#C_Cpp.clang_format_style#` for o valor padrão:`arquivo`.", "c_cpp.configuration.formatting.Disabled.markdownDescription": "A formatação de código será desabilitada.", "c_cpp.configuration.vcFormat.indent.braces.markdownDescription": "As chaves são recuadas pelo valor especificado na configuração `#editor.tabSize#`.", "c_cpp.configuration.vcFormat.indent.multiLineRelativeTo.description": "Determina a que recuo de nova linha é relativo.", @@ -179,12 +179,12 @@ "c_cpp.configuration.intelliSenseCacheSize.markdownDescription": "Tamanho máximo do espaço do disco rígido por espaço de trabalho em megabytes (MB) para cabeçalhos pré-compilados em cache; o uso real pode oscilar em torno desse valor. O tamanho padrão é `5120` MB. O cache de cabeçalho pré-compilado é desabilitado quando o tamanho é `0`.", "c_cpp.configuration.intelliSenseMemoryLimit.markdownDescription": "Limite de uso de memória em megabytes (MB) de um processo IntelliSense. O padrão é `4096` e o máximo é` 16384`. A extensão será desligada e reiniciada um processo IntelliSense quando ele exceder o limite.", "c_cpp.configuration.intelliSenseUpdateDelay.description": "Controla o atraso em milissegundos até que o IntelliSense comece a ser atualizado após uma modificação.", - "c_cpp.configuration.default.includePath.markdownDescription": "O valor a ser usado em uma configuração se `includePath` não for especificado em` c_cpp_properties.json`. Se `includePath` for especificado, adicione` $ {default} `ao array para inserir os valores desta configuração. Normalmente, isso não deve incluir inclusões de sistema; em vez disso, defina `#C_Cpp.default.compilerPath#`.", + "c_cpp.configuration.default.includePath.markdownDescription": "O valor a ser usado em uma configuração se `includePath` não for especificado em `c_cpp_properties.json`. Se `includePath` for especificado, adicione `${default}` ao array para inserir os valores desta configuração. Normalmente, isso não deve incluir inclusões de sistema; em vez disso, defina `#C_Cpp.default.compilerPath#`.", "c_cpp.configuration.default.defines.markdownDescription": "O valor a ser usado em uma configuração se `define` não for especificado, ou os valores a serem inseridos se `${default} `estiver presente em` define`.", "c_cpp.configuration.default.macFrameworkPath.markdownDescription": "O valor a ser usado em uma configuração se `macFrameworkPath` não for especificado, ou os valores a serem inseridos se`${default}`estiver presente em` macFrameworkPath`.", "c_cpp.configuration.default.windowsSdkVersion.markdownDescription": "A versão do SDK do Windows inclui o caminho a ser usado no Windows, por exemplo, `10.0.17134.0`.", "c_cpp.configuration.default.compileCommands.markdownDescription": "O valor a ser usado em uma configuração se `compileCommands` não for especificado ou definido como`${default}`.", - "c_cpp.configuration.default.forcedInclude.markdownDescription": "O valor a usar em uma configuração se `forcedInclude` não for especificado, ou os valores a inserir se` ${padrão}`estiver presente em`forcedInclude`.", + "c_cpp.configuration.default.forcedInclude.markdownDescription": "O valor a usar em uma configuração se `forcedInclude` não for especificado, ou os valores a inserir se `${default}` estiver presente em`forcedInclude`.", "c_cpp.configuration.default.intelliSenseMode.markdownDescription": "O valor a ser usado em uma configuração se `intelliSenseMode` não for especificado ou definido como`${default}`.", "c_cpp.configuration.default.compilerPath.markdownDescription": "O valor a ser usado em uma configuração se `compilerPath` não for especificado ou definido como`${default}`.", "c_cpp.configuration.default.compilerArgs.markdownDescription": "O valor a ser usado na configuração se `compilerArgs` não for especificado ou definido como`${default}`.", From aa4c8647ba2d0ff72dcb4f1df986685073e99bc5 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson <49173979+Colengms@users.noreply.github.com> Date: Mon, 13 Dec 2021 14:00:41 -0800 Subject: [PATCH 03/16] Remove redundant cl.exe instances from build list (#8517) --- .../src/LanguageServer/cppBuildTaskProvider.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/Extension/src/LanguageServer/cppBuildTaskProvider.ts b/Extension/src/LanguageServer/cppBuildTaskProvider.ts index d8f10724d1..0c3eab3367 100644 --- a/Extension/src/LanguageServer/cppBuildTaskProvider.ts +++ b/Extension/src/LanguageServer/cppBuildTaskProvider.ts @@ -117,17 +117,23 @@ export class CppBuildTaskProvider implements TaskProvider { } const isCompilerValid: boolean = userCompilerPath ? await util.checkFileExists(userCompilerPath) : false; + const userCompilerIsCl: boolean = isCompilerValid && !!userCompilerPathAndArgs && userCompilerPathAndArgs.compilerName === "cl.exe"; // Get known compiler paths. Do not include the known compiler path that is the same as user compiler path. // Filter them based on the file type to get a reduced list appropriate for the active file. + // Only allow one instance of cl.exe to be included, as the user must launch VS Code using a VS command + // prompt in order to build with cl.exe, so only one can apply. const knownCompilerPathsSet: Set = new Set(); let knownCompilers: configs.KnownCompiler[] | undefined = await activeClient.getKnownCompilers(); if (knownCompilers) { - knownCompilers = knownCompilers.filter(info => - ((fileIsCpp && !info.isC) || (fileIsC && info.isC)) && - (!isCompilerValid || (userCompilerPathAndArgs && + const compiler_condition: (info: configs.KnownCompiler) => boolean = info => ((fileIsCpp && !info.isC) || (fileIsC && info.isC)) && + (!isCompilerValid || (!!userCompilerPathAndArgs && (path.basename(info.path) !== userCompilerPathAndArgs.compilerName))) && - (!isWindows || !info.path.startsWith("/"))); // TODO: Add WSL compiler support. + (!isWindows || !info.path.startsWith("/")); // TODO: Add WSL compiler support. + const cl_to_add: configs.KnownCompiler | undefined = userCompilerIsCl ? undefined : knownCompilers.find(info => + ((path.basename(info.path) === "cl.exe") && compiler_condition(info))); + knownCompilers = knownCompilers.filter(info => + ((info === cl_to_add) || (path.basename(info.path) !== "cl.exe" && compiler_condition(info)))); knownCompilers.map(info => { knownCompilerPathsSet.add(info.path); }); From cfd43015c65834bc45c7ee27e8ab78eadd430847 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson <49173979+Colengms@users.noreply.github.com> Date: Mon, 13 Dec 2021 17:24:52 -0800 Subject: [PATCH 04/16] Set code page to UTF8 when processing build task output (#8519) --- .../LanguageServer/cppBuildTaskProvider.ts | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/Extension/src/LanguageServer/cppBuildTaskProvider.ts b/Extension/src/LanguageServer/cppBuildTaskProvider.ts index 0c3eab3367..56c03d483f 100644 --- a/Extension/src/LanguageServer/cppBuildTaskProvider.ts +++ b/Extension/src/LanguageServer/cppBuildTaskProvider.ts @@ -371,7 +371,8 @@ class CustomBuildTaskTerminal implements Pseudoterminal { private async doBuild(): Promise { // Do build. - let activeCommand: string = util.resolveVariables(this.command); + let command: string = util.resolveVariables(this.command); + let activeCommand: string = command; this.args.forEach((value, index) => { value = util.normalizeArg(util.resolveVariables(value)); activeCommand = activeCommand + " " + value; @@ -387,15 +388,27 @@ class CustomBuildTaskTerminal implements Pseudoterminal { } const splitWriteEmitter = (lines: string | Buffer) => { - for (const line of lines.toString().split(/\r?\n/g)) { - this.writeEmitter.fire(line + this.endOfLine); + const splitLines: string[] = lines.toString().split(/\r?\n/g); + for (let i: number = 0; i < splitLines.length; i++) { + let line: string = splitLines[i]; + + // We may not get full lines. + // Only output an endOfLine when a full line is detected. + if (i !== splitLines.length - 1) { + line += this.endOfLine; + } + this.writeEmitter.fire(line); } }; + if (os.platform() === 'win32') { + command = `cmd /c chcp 65001>nul && ${command}`; + } + this.writeEmitter.fire(activeCommand + this.endOfLine); let child: cp.ChildProcess | undefined; try { - child = cp.spawn(this.command, this.args, this.options ? this.options : {}); + child = cp.spawn(command, this.args, this.options ? this.options : {}); let error: string = ""; let stdout: string = ""; let stderr: string = ""; @@ -407,16 +420,17 @@ class CustomBuildTaskTerminal implements Pseudoterminal { resolve(-1); }); child.stdout?.on('data', data => { - const str: string = data.toString("utf8"); + const str: string = data.toString(); splitWriteEmitter(str); stdout += str; }); child.stderr?.on('data', data => { - const str: string = data.toString("utf8"); + const str: string = data.toString(); splitWriteEmitter(str); stderr += str; }); child.on('close', result => { + this.writeEmitter.fire(this.endOfLine); if (result === null) { this.writeEmitter.fire(localize("build.run.terminated", "Build run was terminated.") + this.endOfLine); resolve(-1); From 58e1a78191fa173422677656f2f693b106f8ab65 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson <49173979+Colengms@users.noreply.github.com> Date: Tue, 14 Dec 2021 11:46:24 -0800 Subject: [PATCH 05/16] More misc loc fixes (#8537) --- Extension/i18n/chs/package.i18n.json | 4 +-- Extension/i18n/cht/package.i18n.json | 2 +- Extension/i18n/csy/package.i18n.json | 2 +- Extension/i18n/esn/package.i18n.json | 4 +-- Extension/i18n/jpn/package.i18n.json | 2 +- Extension/i18n/ptb/package.i18n.json | 48 ++++++++++++++-------------- Extension/i18n/trk/package.i18n.json | 4 +-- Extension/package.nls.json | 2 +- 8 files changed, 34 insertions(+), 34 deletions(-) diff --git a/Extension/i18n/chs/package.i18n.json b/Extension/i18n/chs/package.i18n.json index 434dce6483..db19b04b7c 100644 --- a/Extension/i18n/chs/package.i18n.json +++ b/Extension/i18n/chs/package.i18n.json @@ -64,7 +64,7 @@ "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.markdownDescription": "键入新行时,其会在左括号下或根据`#C_Cpp.vcFormat.indent.multiLineRelativeTo#` 进行对齐。", + "c_cpp.configuration.vcFormat.indent.withinParentheses.markdownDescription": "键入新行时,其会在左括号下或根据 `#C_Cpp.vcFormat.indent.multiLineRelativeTo#` 进行对齐。", "c_cpp.configuration.vcFormat.indent.withinParentheses.alignToParenthesis.markdownDescription": "新行对齐到左括号下。", "c_cpp.configuration.vcFormat.indent.withinParentheses.indent.markdownDescription": "根据 `#C_Cpp.vcFormat.indent.multiLineRelativeTo#` 缩进新行。", "c_cpp.configuration.vcFormat.indent.preserveWithinParentheses.description": "在现有代码中,保留括号内新行现有的缩进对齐方式。", @@ -152,7 +152,7 @@ "c_cpp.configuration.intelliSenseEngine.default.description": "通过单独的 IntelliSense 流程提供上下文感知结果。", "c_cpp.configuration.intelliSenseEngine.tagParser.description": "提供非上下文感知的“模糊”结果。", "c_cpp.configuration.intelliSenseEngine.disabled.description": "关闭 C/C++ 语言服务功能。", - "c_cpp.configuration.intelliSenseEngineFallback.markdownDescription": "控制 IntelliSense 引擎是否将自动切换为包含`#include` 错误的翻译单元的标记分析器。", + "c_cpp.configuration.intelliSenseEngineFallback.markdownDescription": "控制 IntelliSense 引擎是否将自动切换为包含 `#include` 错误的翻译单元的标记分析器。", "c_cpp.configuration.autocomplete.markdownDescription": "控制自动完成提供程序。如果“已禁用”,且你想要基于字词的补全,则还需要设置 `\"[cpp]\": {\"editor.wordBasedSuggestions\": true}`(对 `c` 和 `cuda-cpp` 语言同样执行此操作)。", "c_cpp.configuration.autocomplete.default.description": "使用活动的 IntelliSense 引擎。", "c_cpp.configuration.autocomplete.disabled.description": "使用 Visual Studio Code 提供的基于字词的补全。", diff --git a/Extension/i18n/cht/package.i18n.json b/Extension/i18n/cht/package.i18n.json index 1caf48de86..4b38c66a5c 100644 --- a/Extension/i18n/cht/package.i18n.json +++ b/Extension/i18n/cht/package.i18n.json @@ -46,7 +46,7 @@ "c_cpp.configuration.codeAnalysis.excludeBoolean.markdownDescription": "要符合檔案路徑的 Glob 模式。設為 `true` 或 `false` 可啟用或停用模式。", "c_cpp.configuration.codeAnalysis.excludeWhen.markdownDescription": "對相符檔案同層級進行額外檢查。請使用 `$(basename)` 作為相符檔案名稱的變數。", "c_cpp.configuration.codeAnalysis.runAutomatically.markdownDescription": "若為 `true`,則程式碼分析將會在檔案開啟或儲存之後,自動在該檔案上執行。", - "c_cpp.configuration.codeAnalysis.clangTidy.enabled.markdownDescription": "若為 `true`,則會啟用使用 `clang-tidy` 的程式碼分析,並在`#C_Cpp.codeAnalysis.runAutomatically#` 為 `true` 時自動執行 (預設)。", + "c_cpp.configuration.codeAnalysis.clangTidy.enabled.markdownDescription": "若為 `true`,則會啟用使用 `clang-tidy` 的程式碼分析,並在 `#C_Cpp.codeAnalysis.runAutomatically#` 為 `true` 時自動執行 (預設)。", "c_cpp.configuration.codeAnalysis.clangTidy.path.markdownDescription": "`clang-tidy` 可執行檔的完整路徑。若未指定可執行檔,且可在環境路徑中使用 `clang-tidy`,則會加以使用。若在環境路徑中找不到可執行檔,則會使用與延伸模組搭配的 `clang-tidy`。", "c_cpp.configuration.codeAnalysis.clangTidy.config.markdownDescription": "以 YAML/JSON 格式指定 `clang-tidy` 組態: `{Checks: '-*,clang-analyzer-*', CheckOptions: [{key: x, value: y}]}`。當值為空白時,`clang-tidy` 將會嘗試為其父目錄中的每個來源檔案尋找名為 `.clang-tidy` 的檔案。", "c_cpp.configuration.codeAnalysis.clangTidy.fallbackConfig.markdownDescription": "當 `#C_Cpp.codeAnalysis.clangTidy.config#` 未設定且找不到 `.clang-tidy` 檔案時,指定 YAML/JSON 格式的 `clang-tidy` 組態用作遞補: `{Checks: '-*,clang-analyzer-*', CheckOptions: [{key: x, value: y}]}`。", diff --git a/Extension/i18n/csy/package.i18n.json b/Extension/i18n/csy/package.i18n.json index e35113705b..10f289be83 100644 --- a/Extension/i18n/csy/package.i18n.json +++ b/Extension/i18n/csy/package.i18n.json @@ -46,7 +46,7 @@ "c_cpp.configuration.codeAnalysis.excludeBoolean.markdownDescription": "Vzor glob pro hledání shod s cestami k souborům. Pokud chcete vzor povolit, nastavte hodnotu `true`, pokud ho chcete zakázat, nastavte hodnotu `false`.", "c_cpp.configuration.codeAnalysis.excludeWhen.markdownDescription": "Další kontrola položek na stejné úrovni u odpovídajícího souboru. Jako proměnnou názvu odpovídajícího souboru použijte `$(basename)`.", "c_cpp.configuration.codeAnalysis.runAutomatically.markdownDescription": "Pokud se nastaví na hodnotu true, analýza kódu se pro soubor spustí automaticky po jeho otevření nebo uložení.", - "c_cpp.configuration.codeAnalysis.clangTidy.enabled.markdownDescription": "Pokud true, bude analýza kódu pomocí `clang-tidy` povolena a spuštěna automaticky, pokud je `#C_Cpp.codeAnalysis.runAutomatically#` true (výchozí).", + "c_cpp.configuration.codeAnalysis.clangTidy.enabled.markdownDescription": "Pokud true, bude analýza kódu pomocí `clang-tidy` povolena a spuštěna automaticky, pokud je `#C_Cpp.codeAnalysis.runAutomatically#` `true` (výchozí).", "c_cpp.configuration.codeAnalysis.clangTidy.path.markdownDescription": "Úplná cesta ke spustitelnému souboru `clang-tidy`. Pokud se nespecifikuje a `clang-tidy` je k dispozici na cestě prostředí, použije se. Pokud se na cestě prostředí nenajde, použije se kopie `clang-tidy`, která se dodává spolu s rozšířením.", "c_cpp.configuration.codeAnalysis.clangTidy.config.markdownDescription": "Určuje konfiguraci `clang-tidy` ve formátu YAML/JSON: `{Checks: '-*,clang-analyzer-*', CheckOptions: [{key: x, value: y}]}`. Když je hodnota prázdná, `clang-tidy` se pokusí najít soubor s názvem `.clang-tidy` pro každý zdrojový soubor v jeho nadřazených adresářích.", "c_cpp.configuration.codeAnalysis.clangTidy.fallbackConfig.markdownDescription": "Určuje konfiguraci `clang-tidy` ve formátu YAML/JSON, která se použije jako náhradní, když není nastavená konfigurace `#C_Cpp.codeAnalysis.clangTidy.config#` a nenašel se žádný soubor `.clang-tidy`: `{Checks: '-*,clang-analyzer-*', CheckOptions: [{key: x, value: y}]}`.", diff --git a/Extension/i18n/esn/package.i18n.json b/Extension/i18n/esn/package.i18n.json index d08b0be571..bf1f7151ba 100644 --- a/Extension/i18n/esn/package.i18n.json +++ b/Extension/i18n/esn/package.i18n.json @@ -43,7 +43,7 @@ "c_cpp.configuration.codeAnalysis.maxMemory.markdownDescription": "Menos procesos de análisis de código se ejecutarán simultáneamente después de superar este uso de memoria (en MB). El valor predeterminado de `null` (vacío) usa el valor heredado de `#C_Cpp.maxMemory#`.", "c_cpp.configuration.codeAnalysis.updateDelay.markdownDescription": "Controla el retraso en milisegundos antes de que el análisis de código empiece a procesarse después de que se desencadene un guardado desde una edición cuando `#files.autoSave#` es `afterDelay` y `#C_Cpp.codeAnalysis.runAutomatically#` es `true`.", "c_cpp.configuration.codeAnalysis.exclude.markdownDescription": "Configure patrones globales para excluir carpetas y archivos para el análisis de código. Los archivos que no estén en la carpeta del área de trabajo siempre se excluyen. Hereda valores de `#files.exclude#` y `#C_Cpp.files.exclude#`. Más información sobre los patrones globales [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", - "c_cpp.configuration.codeAnalysis.excludeBoolean.markdownDescription": "El patrón global con el que se van a comparar las rutas de acceso de los archivos. Establézcalo en` true` o `false` para habilitarlo o deshabilitarlo.", + "c_cpp.configuration.codeAnalysis.excludeBoolean.markdownDescription": "El patrón global con el que se van a comparar las rutas de acceso de los archivos. Establézcalo en `true` o `false` para habilitarlo o deshabilitarlo.", "c_cpp.configuration.codeAnalysis.excludeWhen.markdownDescription": "Comprobación adicional de los elementos del mismo nivel de un archivo coincidente. Usa `$(basename)` como variable para el nombre del archivo coincidente.", "c_cpp.configuration.codeAnalysis.runAutomatically.markdownDescription": "Si es `true`, el análisis de código se ejecutará automáticamente en un archivo después de abrirlo o guardarlo.", "c_cpp.configuration.codeAnalysis.clangTidy.enabled.markdownDescription": "Si es `true`, el análisis de código que usa `clang-tidy` se habilitará y se ejecutará automáticamente si `#C_Cpp.codeAnalysis.runAutomatically#` es `true` (valor predeterminado).", @@ -208,7 +208,7 @@ "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Si es `true`, 'Rename Symbol' requerirá un identificador de C/C++ válido.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "Si es `true`, la opción de autocompletar agregará `(` de forma automática después de las llamadas a funciones, en cuyo caso puede que también se agregue `)`, en función del valor de la configuración de `editor.autoClosingBrackets`.", "c_cpp.configuration.filesExclude.markdownDescription": "Configura patrones globales para excluir carpetas (y archivos si se cambia `#C_Cpp.exclusionPolicy#`). Estos son específicos de la extensión de C/C++ y se agregan a `#files.exclude#`, pero a diferencia de `#files.exclude#` también se aplican a rutas fuera de la carpeta del área de trabajo actual y no se quitan de la Vista del explorador. Más información acerca de los patrones de globales [aquí](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", - "c_cpp.configuration.filesExcludeBoolean.markdownDescription": "El patrón global con el que se van a comparar las rutas de acceso de los archivos. Establézcalo en` true` o `false` para habilitarlo o deshabilitarlo.", + "c_cpp.configuration.filesExcludeBoolean.markdownDescription": "El patrón global con el que se van a comparar las rutas de acceso de los archivos. Establézcalo en `true` o `false` para habilitarlo o deshabilitarlo.", "c_cpp.configuration.filesExcludeWhen.markdownDescription": "Comprobación adicional de los elementos del mismo nivel de un archivo coincidente. Usa `$(basename)` como variable para el nombre del archivo coincidente.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.markdownDescription": "Si es `true`, la sustitución de comandos del shell del depurador usará la marca de acento grave (`) obsoleta.", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: resultados de otras referencias.", diff --git a/Extension/i18n/jpn/package.i18n.json b/Extension/i18n/jpn/package.i18n.json index b234f47ae4..acb34c0d16 100644 --- a/Extension/i18n/jpn/package.i18n.json +++ b/Extension/i18n/jpn/package.i18n.json @@ -201,7 +201,7 @@ "c_cpp.configuration.updateChannel.markdownDescription": "`Insider` に設定すると、拡張機能の最新の Insider ビルドが自動的にダウンロードされてインストールされます。これには、次期バージョンの機能とバグ修正が含まれています。", "c_cpp.configuration.experimentalFeatures.description": "\"experimental\" の機能を使用できるかどうかを制御します。", "c_cpp.configuration.suggestSnippets.markdownDescription": "`true` の場合、スニペットは言語サーバーによって提供されます。", - "c_cpp.configuration.enhancedColorization.markdownDescription": "有効にすると、IntelliSense に基づいてコードが色分けされます。この設定は、`#C_Cpp.intelliSenseEngine#`が `Default` に設定されている場合にのみ適用されます。", + "c_cpp.configuration.enhancedColorization.markdownDescription": "有効にすると、IntelliSense に基づいてコードが色分けされます。この設定は、`#C_Cpp.intelliSenseEngine#` が `Default` に設定されている場合にのみ適用されます。", "c_cpp.configuration.codeFolding.description": "有効にした場合、コードの折りたたみの範囲は言語サーバーによって指定されます。", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "[vcpkg 依存関係マネージャー](https://aka.ms/vcpkg/) の統合サービスを有効にします。", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "依存関係である場合は、`nan` および `node-addon-api` のインクルード パスを追加してください。", diff --git a/Extension/i18n/ptb/package.i18n.json b/Extension/i18n/ptb/package.i18n.json index 1d3adc3873..4c2e4d43da 100644 --- a/Extension/i18n/ptb/package.i18n.json +++ b/Extension/i18n/ptb/package.i18n.json @@ -43,7 +43,7 @@ "c_cpp.configuration.codeAnalysis.maxMemory.markdownDescription": "Menos processos de análise de código serão executados simultaneamente depois que esse uso de memória (em MB) for excedido. O padrão de `null` (vazio) usa o valor herdado de `#C_Cpp.maxMemory#`.", "c_cpp.configuration.codeAnalysis.updateDelay.markdownDescription": "Controla o atraso em milissegundos antes que a análise de código comece o processamento depois que um salvamento é disparado de uma edição quando `#files.autoSave#` é `afterDelay` e `#C_Cpp.codeAnalysis.runAutomatically#` é `true`.", "c_cpp.configuration.codeAnalysis.exclude.markdownDescription": "Configure padrões glob para excluir pastas e arquivos para análise de código. Arquivos que não estão na pasta do workspace são sempre excluídos. Herda valores de `#files.exclude#` e `#C_Cpp.files.exclude#`. Leia mais sobre padrões glob [aqui](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", - "c_cpp.configuration.codeAnalysis.excludeBoolean.markdownDescription": "O padrão glob para corresponder aos caminhos de arquivo. Defina como `true` ou` false` para habilitar ou desabilitar o padrão.", + "c_cpp.configuration.codeAnalysis.excludeBoolean.markdownDescription": "O padrão glob para corresponder aos caminhos de arquivo. Defina como `true` ou `false` para habilitar ou desabilitar o padrão.", "c_cpp.configuration.codeAnalysis.excludeWhen.markdownDescription": "Verificação adicional nos irmãos de um arquivo correspondente. Use `$(basename)` como variável para o nome do arquivo correspondente.", "c_cpp.configuration.codeAnalysis.runAutomatically.markdownDescription": "Se for `true`, a análise de código será executada automaticamente em um arquivo depois que ele for aberto ou salvo.", "c_cpp.configuration.codeAnalysis.clangTidy.enabled.markdownDescription": "Se for `true`, a análise de código usando `clang-tidy` será habilitada e executada automaticamente se `#C_Cpp.codeAnalysis.runAutomatically#` for `true` (o padrão).", @@ -69,7 +69,7 @@ "c_cpp.configuration.vcFormat.indent.withinParentheses.indent.markdownDescription": "A nova linha é recuada com base em `#C_Cpp.vcFormat.indent.multiLineRelativeTo#`.", "c_cpp.configuration.vcFormat.indent.preserveWithinParentheses.description": "No código existente, preservar o alinhamento de recuo existente das novas linhas entre parênteses.", "c_cpp.configuration.vcFormat.indent.caseLabels.markdownDescription": "Os rótulos são recuados em relação às instruções de troca pela quantidade especificada na configuração `#editor.tabSize#`.", - "c_cpp.configuration.vcFormat.indent.caseContents.markdownDescription": "O código dentro de um bloco `case` é recuado em relação ao seu rótulo pela quantidade especificada na configuração`#editor.tabSize#`.", + "c_cpp.configuration.vcFormat.indent.caseContents.markdownDescription": "O código dentro de um bloco `case` é recuado em relação ao seu rótulo pela quantidade especificada na configuração `#editor.tabSize#`.", "c_cpp.configuration.vcFormat.indent.caseContentsWhenBlock.markdownDescription": "Recue os colchetes seguindo uma instrução de caso pela quantidade especificada na configuração `#editor.tabSize#`.", "c_cpp.configuration.vcFormat.indent.lambdaBracesWhenParameter.markdownDescription": "Recue colchetes de lambdas usados ​​como parâmetros de função relativos ao início da instrução pela quantidade especificada na configuração `#editor.tabSize#`.", "c_cpp.configuration.vcFormat.indent.gotoLabels.description": "A posição dos rótulos goto.", @@ -96,7 +96,7 @@ "c_cpp.configuration.vcFormat.newLine.closeBraceSameLine.emptyFunction.description": "Para corpos de função vazios, mover as chaves de fechamento para a mesma linha que as chaves de abertura.", "c_cpp.configuration.vcFormat.newLine.beforeCatch.markdownDescription": "Coloque `catch` e palavras-chave semelhantes em uma nova linha.", "c_cpp.configuration.vcFormat.newLine.beforeElse.markdownDescription": "Coloque `else` em uma nova linha.", - "c_cpp.configuration.vcFormat.newLine.beforeWhileInDoWhile.markdownDescription": "Coloque `while` em um loop` do`-`while` em uma nova linha.", + "c_cpp.configuration.vcFormat.newLine.beforeWhileInDoWhile.markdownDescription": "Coloque `while` em um loop `do`-`while` em uma nova linha.", "c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.description": "Espaçamento entre nomes de funções e parênteses de abertura de listas de argumentos.", "c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.insert.description": "Adicionar um espaço antes do parêntese de abertura de uma função.", "c_cpp.configuration.vcFormat.space.beforeFunctionOpenParenthesis.remove.description": "Os espaços antes dos parênteses de abertura de uma função são removidos.", @@ -145,20 +145,20 @@ "c_cpp.configuration.vcFormat.wrap.preserveBlocks.allOneLineScopes.markdownDescription": "Qualquer código onde a chave de abertura e fechamento é inserida em uma linha é mantido em uma linha, independentemente dos valores de qualquer uma das configurações `C_Cpp.vcFormat.newLine.*`.", "c_cpp.configuration.vcFormat.wrap.preserveBlocks.never.markdownDescription": "Os blocos de código são sempre formatados com base nos valores das configurações `C_Cpp.vcFormat.newLine. *`.", "c_cpp.configuration.clang_format_path.markdownDescription": "O caminho completo do executável `clang-format`. Se não for especificado, o `clang-format` estará disponível no caminho do ambiente usado. Se não for encontrado no caminho do ambiente, o `clang-format` empacotado com a extensão será usado.", - "c_cpp.configuration.clang_format_style.markdownDescription": "Estilo de codificação, atualmente suporta: `Visual Studio`,` LLVM`, `Google`,` Chromium`, `Mozilla`,` WebKit`, `Microsoft`,` GNU`. Use `file` para carregar o estilo de um arquivo` .clang-format` no diretório atual ou pai. Use `{key: value, ...}` para definir parâmetros específicos. Por exemplo, o estilo `Visual Studio` é semelhante a:` {BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifier: - 4, NamespaceIndentation: All, FixNamespaceComments: false} `.", - "c_cpp.configuration.clang_format_fallbackStyle.markdownDescription": "Nome do estilo predefinido usado como fallback no caso de `clang-format` ser invocado com o estilo` file`, mas o arquivo `.clang-format` não for encontrado. Os valores possíveis são `Visual Studio`,` LLVM`, `Google`,` Chromium`, `Mozilla`,` WebKit`, `Microsoft`,` GNU`, `none` ou use` {key: value, .. .} `para definir parâmetros específicos. Por exemplo, o estilo `Visual Studio` é semelhante a:` {BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifier: - 4, NamespaceIndentation: All, FixNamespaceComments: false} `.", + "c_cpp.configuration.clang_format_style.markdownDescription": "Estilo de codificação, atualmente suporta: `Visual Studio`, `LLVM`, `Google`, `Chromium`, `Mozilla`, `WebKit`, `Microsoft`, `GNU`. Use `file` para carregar o estilo de um arquivo `.clang-format` no diretório atual ou pai. Use `{key: value, ...}` para definir parâmetros específicos. Por exemplo, o estilo `Visual Studio` é semelhante a: `{BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifier: - 4, NamespaceIndentation: All, FixNamespaceComments: false}`.", + "c_cpp.configuration.clang_format_fallbackStyle.markdownDescription": "Nome do estilo predefinido usado como fallback no caso de `clang-format` ser invocado com o estilo `file`, mas o arquivo `.clang-format` não for encontrado. Os valores possíveis são `Visual Studio`, `LLVM`, `Google`, `Chromium`, `Mozilla`, `WebKit`, `Microsoft`, `GNU`, `none` ou use `{key: value, .. .}` para definir parâmetros específicos. Por exemplo, o estilo `Visual Studio` é semelhante a: `{BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifier: - 4, NamespaceIndentation: All, FixNamespaceComments: false}`.", "c_cpp.configuration.clang_format_sortIncludes.markdownDescription": "Se definido, substitui o comportamento de classificação de inclusão determinado pelo parâmetro `SortIncludes`.", "c_cpp.configuration.intelliSenseEngine.description": "Controla o provedor IntelliSense.", "c_cpp.configuration.intelliSenseEngine.default.description": "Fornece resultados baseados no contextopor meio de um processo IntelliSense separado.", "c_cpp.configuration.intelliSenseEngine.tagParser.description": "Fornece resultados \"difusos\" que não são sensíveis ao contexto.", "c_cpp.configuration.intelliSenseEngine.disabled.description": "Desabilita os recursos do serviço de linguagem C/C++.", "c_cpp.configuration.intelliSenseEngineFallback.markdownDescription": "Controla se o mecanismo IntelliSense mudará automaticamente para o Analisador de tags para unidades de tradução contendo erros `#include`.", - "c_cpp.configuration.autocomplete.markdownDescription": "Controla o provedor de preenchimento automático. Se `Disabled` e você quiser o preenchimento baseado em palavras, você também precisará definir `\"[cpp]\": {\"editor.wordBasedSuggestions\": true}` (e da mesma forma para os idiomas` c` e `cuda-cpp`).", + "c_cpp.configuration.autocomplete.markdownDescription": "Controla o provedor de preenchimento automático. Se `Disabled` e você quiser o preenchimento baseado em palavras, você também precisará definir `\"[cpp]\": {\"editor.wordBasedSuggestions\": true}` (e da mesma forma para os idiomas `c` e `cuda-cpp`).", "c_cpp.configuration.autocomplete.default.description": "Usa o mecanismo IntelliSense ativo.", "c_cpp.configuration.autocomplete.disabled.description": "Usa o preenchimento baseado em palavras fornecido pelo Visual Studio Code.", "c_cpp.configuration.errorSquiggles.description": "Controla se os erros de compilação suspeitos detectados pelo mecanismo do IntelliSense serão relatados de volta ao editor. Ele também controla se os avisos de análise de código são relatados se as inclusões não puderem ser encontradas. Essa configuração é ignorada pelo mecanismo do Analisador de Marca.", "c_cpp.configuration.dimInactiveRegions.description": "Controla se os blocos de pré-processador inativos são coloridos de forma diferente do código ativo. Esta configuração não terá efeito se o IntelliSense estiver desabilitado ou se você estiver usando o tema de Alto Contraste Padrão.", - "c_cpp.configuration.inactiveRegionOpacity.markdownDescription": "Controla a opacidade de blocos de pré-processador inativos. Escalas entre `0.1` e` 1.0`. Esta configuração só se aplica quando o escurecimento da região inativa está habilitado.", + "c_cpp.configuration.inactiveRegionOpacity.markdownDescription": "Controla a opacidade de blocos de pré-processador inativos. Escalas entre `0.1` e `1.0`. Esta configuração só se aplica quando o escurecimento da região inativa está habilitado.", "c_cpp.configuration.inactiveRegionForegroundColor.description": "Controla a cor da fonte dos blocos de pré-processador inativos. A entrada está no formato de um código de cor hexadecimal ou de uma Cor de Tema válida. Se não estiver definido, o esquema de cores de sintaxe do editor será usado como padrão. Esta configuração é aplicável somente quando o esmaecimento da região inativa está habilitado.", "c_cpp.configuration.inactiveRegionBackgroundColor.description": "Controla a cor da tela de fundo dos blocos de pré-processador inativos. A entrada está no formato de um código de cor hexadecimal ou de uma Cor de Tema válida. Se não estiver definido, transparente será usado como padrão. Esta configuração é aplicável somente quando o esmaecimento da região inativa está habilitado.", "c_cpp.configuration.loggingLevel.markdownDescription": "O detalhamento do registro no painel de saída. A ordem dos níveis do menos detalhado para o mais detalhado é: `None` < `Error` < `Warning` < `Information` < `Debug`.", @@ -175,40 +175,40 @@ "c_cpp.configuration.commentContinuationPatterns.items.anyof.object.continue.description": "O texto que será inserido na próxima linha quando Enter for pressionado dentro de um bloco de comentário de linha única ou de várias linhas.", "c_cpp.configuration.commentContinuationPatterns.description": "Define o comportamento do editor para quando a tecla Enter é pressionada dentro de um bloco de comentário de linha única ou de várias linhas.", "c_cpp.configuration.configurationWarnings.description": "Determina se as notificações pop-up serão mostradas quando uma extensão do provedor de configuração não puder fornecer uma configuração para um arquivo de origem.", - "c_cpp.configuration.intelliSenseCachePath.markdownDescription": "Define o caminho da pasta para cabeçalhos pré-compilados em cache usados ​​pelo IntelliSense. O caminho de cache padrão é `%LocalAppData%/Microsoft/vscode-cpptools` no Windows,`$XDG_CACHE_HOME/vscode-cpptools/` no Linux (ou`$HOME/.cache/vscode-cpptools/` se`XDG_CACHE_HOME` não é definido) e `$HOME/Library/Caches/vscode-cpptools/` no macOS. O caminho padrão será usado se nenhum caminho for especificado ou se um caminho especificado for inválido.", + "c_cpp.configuration.intelliSenseCachePath.markdownDescription": "Define o caminho da pasta para cabeçalhos pré-compilados em cache usados ​​pelo IntelliSense. O caminho de cache padrão é `%LocalAppData%/Microsoft/vscode-cpptools` no Windows,`$XDG_CACHE_HOME/vscode-cpptools/` no Linux (ou `$HOME/.cache/vscode-cpptools/` se `XDG_CACHE_HOME` não é definido) e `$HOME/Library/Caches/vscode-cpptools/` no macOS. O caminho padrão será usado se nenhum caminho for especificado ou se um caminho especificado for inválido.", "c_cpp.configuration.intelliSenseCacheSize.markdownDescription": "Tamanho máximo do espaço do disco rígido por espaço de trabalho em megabytes (MB) para cabeçalhos pré-compilados em cache; o uso real pode oscilar em torno desse valor. O tamanho padrão é `5120` MB. O cache de cabeçalho pré-compilado é desabilitado quando o tamanho é `0`.", - "c_cpp.configuration.intelliSenseMemoryLimit.markdownDescription": "Limite de uso de memória em megabytes (MB) de um processo IntelliSense. O padrão é `4096` e o máximo é` 16384`. A extensão será desligada e reiniciada um processo IntelliSense quando ele exceder o limite.", + "c_cpp.configuration.intelliSenseMemoryLimit.markdownDescription": "Limite de uso de memória em megabytes (MB) de um processo IntelliSense. O padrão é `4096` e o máximo é `16384`. A extensão será desligada e reiniciada um processo IntelliSense quando ele exceder o limite.", "c_cpp.configuration.intelliSenseUpdateDelay.description": "Controla o atraso em milissegundos até que o IntelliSense comece a ser atualizado após uma modificação.", "c_cpp.configuration.default.includePath.markdownDescription": "O valor a ser usado em uma configuração se `includePath` não for especificado em `c_cpp_properties.json`. Se `includePath` for especificado, adicione `${default}` ao array para inserir os valores desta configuração. Normalmente, isso não deve incluir inclusões de sistema; em vez disso, defina `#C_Cpp.default.compilerPath#`.", - "c_cpp.configuration.default.defines.markdownDescription": "O valor a ser usado em uma configuração se `define` não for especificado, ou os valores a serem inseridos se `${default} `estiver presente em` define`.", + "c_cpp.configuration.default.defines.markdownDescription": "O valor a ser usado em uma configuração se `defines` não for especificado, ou os valores a serem inseridos se `${default}` estiver presente em `defines`.", "c_cpp.configuration.default.macFrameworkPath.markdownDescription": "O valor a ser usado em uma configuração se `macFrameworkPath` não for especificado, ou os valores a serem inseridos se`${default}`estiver presente em` macFrameworkPath`.", "c_cpp.configuration.default.windowsSdkVersion.markdownDescription": "A versão do SDK do Windows inclui o caminho a ser usado no Windows, por exemplo, `10.0.17134.0`.", - "c_cpp.configuration.default.compileCommands.markdownDescription": "O valor a ser usado em uma configuração se `compileCommands` não for especificado ou definido como`${default}`.", + "c_cpp.configuration.default.compileCommands.markdownDescription": "O valor a ser usado em uma configuração se `compileCommands` não for especificado ou definido como `${default}`.", "c_cpp.configuration.default.forcedInclude.markdownDescription": "O valor a usar em uma configuração se `forcedInclude` não for especificado, ou os valores a inserir se `${default}` estiver presente em`forcedInclude`.", - "c_cpp.configuration.default.intelliSenseMode.markdownDescription": "O valor a ser usado em uma configuração se `intelliSenseMode` não for especificado ou definido como`${default}`.", - "c_cpp.configuration.default.compilerPath.markdownDescription": "O valor a ser usado em uma configuração se `compilerPath` não for especificado ou definido como`${default}`.", - "c_cpp.configuration.default.compilerArgs.markdownDescription": "O valor a ser usado na configuração se `compilerArgs` não for especificado ou definido como`${default}`.", - "c_cpp.configuration.default.cStandard.markdownDescription": "O valor a ser usado em uma configuração se `cStandard` não for especificado ou definido como`${default}`.", - "c_cpp.configuration.default.cppStandard.markdownDescription": "O valor a ser usado em uma configuração se `cppStandard` não for especificado ou definido como`${default}`.", - "c_cpp.configuration.default.configurationProvider.markdownDescription": "O valor a ser usado em uma configuração se `configurationProvider` não for especificado ou definido como`${default}`.", + "c_cpp.configuration.default.intelliSenseMode.markdownDescription": "O valor a ser usado em uma configuração se `intelliSenseMode` não for especificado ou definido como `${default}`.", + "c_cpp.configuration.default.compilerPath.markdownDescription": "O valor a ser usado em uma configuração se `compilerPath` não for especificado ou definido como `${default}`.", + "c_cpp.configuration.default.compilerArgs.markdownDescription": "O valor a ser usado na configuração se `compilerArgs` não for especificado ou definido como `${default}`.", + "c_cpp.configuration.default.cStandard.markdownDescription": "O valor a ser usado em uma configuração se `cStandard` não for especificado ou definido como `${default}`.", + "c_cpp.configuration.default.cppStandard.markdownDescription": "O valor a ser usado em uma configuração se `cppStandard` não for especificado ou definido como `${default}`.", + "c_cpp.configuration.default.configurationProvider.markdownDescription": "O valor a ser usado em uma configuração se `configurationProvider` não for especificado ou definido como `${default}`.", "c_cpp.configuration.default.mergeConfigurations.markdownDescription": "Defina como `true` para mesclar os caminhos de inclusão, definições e inclusões forçadas com aqueles de um provedor de configuração.", - "c_cpp.configuration.default.browse.path.markdownDescription": "O valor a ser usado em uma configuração se `browse.path` não for especificado, ou os valores a serem inseridos se `${default}`estiver presente em`browse.path`.", + "c_cpp.configuration.default.browse.path.markdownDescription": "O valor a ser usado em uma configuração se `browse.path` não for especificado, ou os valores a serem inseridos se `${default}` estiver presente em `browse.path`.", "c_cpp.configuration.default.browse.databaseFilename.markdownDescription": "O valor a ser usado em uma configuração se `browse.databaseFilename` não for especificado ou definido como `${default}`.", - "c_cpp.configuration.default.browse.limitSymbolsToIncludedHeaders.markdownDescription": "O valor a ser usado em uma configuração se `browse.limitSymbolsToIncludedHeaders` não for especificado ou definido como`${default}`.", - "c_cpp.configuration.default.systemIncludePath.markdownDescription": "O valor a ser usado para o sistema inclui o caminho. Se definido, ele substitui o sistema inclui o caminho adquirido através das configurações `compilerPath` e` compileCommands`.", + "c_cpp.configuration.default.browse.limitSymbolsToIncludedHeaders.markdownDescription": "O valor a ser usado em uma configuração se `browse.limitSymbolsToIncludedHeaders` não for especificado ou definido como `${default}`.", + "c_cpp.configuration.default.systemIncludePath.markdownDescription": "O valor a ser usado para o sistema inclui o caminho. Se definido, ele substitui o sistema inclui o caminho adquirido através das configurações `compilerPath` e `compileCommands`.", "c_cpp.configuration.default.enableConfigurationSquiggles.markdownDescription": "Controla se a extensão reportará erros detectados em `c_cpp_properties.json`.", - "c_cpp.configuration.default.customConfigurationVariables.markdownDescription": "O valor a ser usado em uma configuração se `customConfigurationVariables` não estiver definido, ou os valores a serem inseridos se`${default}`estiver presente como uma chave em`customConfigurationVariables`.", + "c_cpp.configuration.default.customConfigurationVariables.markdownDescription": "O valor a ser usado em uma configuração se `customConfigurationVariables` não estiver definido, ou os valores a serem inseridos se `${default}` estiver presente como uma chave em `customConfigurationVariables`.", "c_cpp.configuration.updateChannel.markdownDescription": "Defina como `Insiders` para baixar e instalar automaticamente as compilações mais recentes dos Insiders da extensão, que incluem os próximos recursos e correções de bugs.", "c_cpp.configuration.experimentalFeatures.description": "Controla se os recursos \"experimentais\" podem ser usados.", "c_cpp.configuration.suggestSnippets.markdownDescription": "Se `true`, os snippets são fornecidos pelo servidor de linguagem.", "c_cpp.configuration.enhancedColorization.markdownDescription": "Se habilitado, o código é colorido com base no IntelliSense. Esta configuração se aplica apenas se `#C_Cpp.intelliSenseEngine#` estiver definido como `Default`.", "c_cpp.configuration.codeFolding.description": "Se habilitado, os intervalos de dobramento de código serão fornecidos pelo servidor de idiomas.", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "Habilitar os serviços de integração para o [gerenciador de dependências vcpkg](https://aka.ms/vcpkg/).", - "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "Adicione caminhos de inclusão de `nan` e` node-addon-api` quando forem dependências.", + "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "Adicione caminhos de inclusão de `nan` e `node-addon-api` quando forem dependências.", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Se `true`, 'Rename Symbol' exigirá um identificador C/C++ válido.", - "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "Se `true`, autocomplete adicionará automaticamente` (`após chamadas de função, neste caso`) `também pode ser adicionado, dependendo do valor da configuração `#editor.autoClosingBrackets#`.", + "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "Se `true`, autocomplete adicionará automaticamente `(` após chamadas de função, neste caso `)` também pode ser adicionado, dependendo do valor da configuração `#editor.autoClosingBrackets#`.", "c_cpp.configuration.filesExclude.markdownDescription": "Configure os padrões glob para excluir pastas (e arquivos se `#C_Cpp.exclusionPolicy#` for alterado). Eles são específicos para a extensão C/C++ e são adicionais a `#files.exclude#`, mas ao contrário de `#files.exclude#` eles também se aplicam a caminhos fora da pasta do espaço de trabalho atual e não são removidos da visualização do Explorer. Leia mais sobre padrões glob [aqui](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", - "c_cpp.configuration.filesExcludeBoolean.markdownDescription": "O padrão glob para corresponder aos caminhos de arquivo. Defina como `true` ou` false` para habilitar ou desabilitar o padrão.", + "c_cpp.configuration.filesExcludeBoolean.markdownDescription": "O padrão glob para corresponder aos caminhos de arquivo. Defina como `true` ou `false` para habilitar ou desabilitar o padrão.", "c_cpp.configuration.filesExcludeWhen.markdownDescription": "Verificação adicional nos irmãos de um arquivo correspondente. Use `$(basename)` como variável para o nome do arquivo correspondente.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.markdownDescription": "Se for `true`, a substituição do comando debugger shell usará backtick obsoleto (`).", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: Outros resultados de referências.", diff --git a/Extension/i18n/trk/package.i18n.json b/Extension/i18n/trk/package.i18n.json index d957bd0c00..a9749e6da8 100644 --- a/Extension/i18n/trk/package.i18n.json +++ b/Extension/i18n/trk/package.i18n.json @@ -146,7 +146,7 @@ "c_cpp.configuration.vcFormat.wrap.preserveBlocks.never.markdownDescription": "Kod blokları her zaman `C_Cpp.vcFormat.newLine.*` ayarlarının değerlerine göre biçimlendirilir.", "c_cpp.configuration.clang_format_path.markdownDescription": "`clang-format` yürütülebilir dosyasının tam yolu. Belirtilmezse ve ortam yolunda `clang-format` kullanılabiliyorsa bu kullanılır. Ortam yolunda bulunamazsa uzantı ile paketlenmiş bir `clang-format` kullanılır.", "c_cpp.configuration.clang_format_style.markdownDescription": "Kodlama stili şu anda şunları destekliyor: `Visual Studio`, `LLVM`, `Google`, `Chromium`, `Mozilla`, `WebKit`, `Microsoft`, `GNU`. Geçerli veya üst dizindeki `.clang-format` dosyasından stili yüklemek için `file` kullanın. Belirli parametreleri ayarlamak için `{anahtar: değer, ...}` kullanın. Örneğin, `Visual Studio` stili şuna benzer: `{ BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4, NamespaceIndentation: All, FixNamespaceComments: false }`.", - "c_cpp.configuration.clang_format_fallbackStyle.markdownDescription": "`clang-format`, `dosya` stiliyle çağrıldığında geri dönüş olarak kullanılan önceden tanımlı stilin adı, ancak `.clang-format` dosyası bulunamadı. Olası değerler: `Visual Studio`, `LLVM`, `Google`, `Chromium`, `Mozilla`, `WebKit`, `Microsoft`, `GNU`, `none` veya belirli parametreleri ayarlamak için `{anahtar: değer, ...}` kullanın. Örneğin, `Visual Studio` stili şuna benzer: `{ BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4, NamespaceIndentation: All, FixNamespaceComments: false }`.", + "c_cpp.configuration.clang_format_fallbackStyle.markdownDescription": "`clang-format`, `file` stiliyle çağrıldığında geri dönüş olarak kullanılan önceden tanımlı stilin adı, ancak `.clang-format` dosyası bulunamadı. Olası değerler: `Visual Studio`, `LLVM`, `Google`, `Chromium`, `Mozilla`, `WebKit`, `Microsoft`, `GNU`, `none` veya belirli parametreleri ayarlamak için `{anahtar: değer, ...}` kullanın. Örneğin, `Visual Studio` stili şuna benzer: `{ BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4, NamespaceIndentation: All, FixNamespaceComments: false }`.", "c_cpp.configuration.clang_format_sortIncludes.markdownDescription": "Ayarlanırsa, `SortIncludes` parametresi tarafından belirlenen ekleme sıralama davranışını geçersiz kılar.", "c_cpp.configuration.intelliSenseEngine.description": "IntelliSense sağlayıcısını denetler.", "c_cpp.configuration.intelliSenseEngine.default.description": "Ayrı bir IntelliSense işlemi aracılığıyla bağlama duyarlı sonuçlar sağlar.", @@ -207,7 +207,7 @@ "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "`nan` ve `node-addon-api` bağımlılık olduğunda bunlardan ekleme yolları ekleyin.", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "`true` ise, 'Sembolü Yeniden Adlandır' işlemi için geçerli bir C/C++ tanımlayıcısı gerekir.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "`true` ise otomatik tamamla özelliği, işlev çağrılarından sonra otomatik olarak `(` ekler. Bazı durumlarda `#editor.autoClosingBrackets#` ayarının değerine bağlı olarak `)` karakteri de eklenebilir.", - "c_cpp.configuration.filesExclude.markdownDescription": "Klasörleri (ve `#C_Cpp.exclusionPolicy#` değiştirilirse dosyaları) hariç tutmak için glob desenlerini yapılandırın. Bunlar, C/C++ uzantısına özgüdür ve `#files.exclude#`a ek olarak, ancak `#files.exclude#`dan farklı olarak, geçerli çalışma alanı klasörünün dışındaki yollara da uygulanırlar ve Explorer görünümünden kaldırılmazlar. Glob desenleri ile ilgili daha fazla bilgiyi [buradan](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options) okuyun.", + "c_cpp.configuration.filesExclude.markdownDescription": "Klasörleri (ve `#C_Cpp.exclusionPolicy#` değiştirilirse dosyaları) hariç tutmak için glob desenlerini yapılandırın. Bunlar, C/C++ uzantısına özgüdür ve `#files.exclude#` a ek olarak, ancak `#files.exclude#` dan farklı olarak, geçerli çalışma alanı klasörünün dışındaki yollara da uygulanırlar ve Explorer görünümünden kaldırılmazlar. Glob desenleri ile ilgili daha fazla bilgiyi [buradan](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options) okuyun.", "c_cpp.configuration.filesExcludeBoolean.markdownDescription": "Dosya yollarıyla eşleşecek glob deseni. Deseni etkinleştirmek veya devre dışı bırakmak için `true` ya da `false` olarak ayarlayın.", "c_cpp.configuration.filesExcludeWhen.markdownDescription": "Eşleşen bir dosyanın eşdüzey öğeleri üzerindeki ek denetim. Eşleşen dosya adı için değişken olarak `$(basename)` kullanın.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.markdownDescription": "`true` ise, hata ayıklayıcı kabuk komut değiştirme eski kesme işaretini (`) kullanır.", diff --git a/Extension/package.nls.json b/Extension/package.nls.json index e35bc5519d..7360d2ffb1 100644 --- a/Extension/package.nls.json +++ b/Extension/package.nls.json @@ -205,7 +205,7 @@ "c_cpp.configuration.filesExclude.markdownDescription": { "message": "Configure glob patterns for excluding folders (and files if `#C_Cpp.exclusionPolicy#` is changed). These are specific to the C/C++ extension and are in addition to `#files.exclude#`, but unlike `#files.exclude#` they also apply to paths outside the current workspace folder and are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", "comment": [ "Markdown text between `` and [) should not be translated and the capitalization, spacing, and punctuation (including the ``) should not be altered: https://en.wikipedia.org/wiki/Markdown" ] }, "c_cpp.configuration.filesExcludeBoolean.markdownDescription": { "message": "The glob pattern to match file paths against. Set to `true` or `false` to enable or disable the pattern.", "comment": [ "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." ] }, "c_cpp.configuration.filesExcludeWhen.markdownDescription": { "message": "Additional check on the siblings of a matching file. Use `$(basename)` as variable for the matching file name.", "comment": [ "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." ] }, - "c_cpp.configuration.debugger.useBacktickCommandSubstitution.markdownDescription": { "message": "If `true`, debugger shell command substitution will use obsolete backtick (`).", "comment": [ "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." ] }, + "c_cpp.configuration.debugger.useBacktickCommandSubstitution.markdownDescription": { "message": "If `true`, debugger shell command substitution will use obsolete backtick ``(`)``.", "comment": [ "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." ] }, "c_cpp.contributes.views.cppReferencesView.title": "C/C++: Other references results.", "c_cpp.contributes.viewsWelcome.contents": { "message": "To learn more about launch.json, see [Configuring C/C++ debugging](https://code.visualstudio.com/docs/cpp/launch-json-reference).", "comment": [ "Markdown text between () should not be altered: https://en.wikipedia.org/wiki/Markdown" ] }, "c_cpp.debuggers.pipeTransport.description": "When present, this tells the debugger to connect to a remote computer using another executable as a pipe that will relay standard input/output between VS Code and the MI-enabled debugger backend executable (such as gdb).", From e6003fe6839f4faff1effb803321ee7414cfd80d Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Tue, 14 Dec 2021 12:18:09 -0800 Subject: [PATCH 06/16] Fix 3 settings not getting variables resolved on settings update. (#8538) --- Extension/src/LanguageServer/client.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index eb43232e9c..fee1fb64a3 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -1535,16 +1535,20 @@ export class DefaultClient implements Client { const otherSettingsFolder: OtherSettings = new OtherSettings(this.RootUri); const otherSettingsWorkspace: OtherSettings = new OtherSettings(); + const clangTidyConfig: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration("C_Cpp.codeAnalysis.clangTidy", this.RootUri); // Unlike the LSP message, the event does not contain all settings as a payload, so we need to // build a new JSON object with everything we need on the native side. const settings: any = { C_Cpp: { ...cppSettingsScoped, + clang_format_path: util.resolveVariables(cppSettingsScoped.clang_format_path, this.AdditionalEnvironment), + intelliSenseCachePath: util.resolveCachePath(cppSettingsScoped.intelliSenseCachePath, this.AdditionalEnvironment), codeAnalysis: { ...vscode.workspace.getConfiguration("C_Cpp.codeAnalysis", this.RootUri), clangTidy: { - ...vscode.workspace.getConfiguration("C_Cpp.codeAnalysis.clangTidy", this.RootUri), + ...clangTidyConfig, + path: util.resolveVariables(clangTidyConfig.path, this.AdditionalEnvironment), fix: { ...vscode.workspace.getConfiguration("C_Cpp.codeAnalysis.clangTidy.fix", this.RootUri) }, From 6d99657dc0cbc9e7d82fa3aded8f687d50d377c0 Mon Sep 17 00:00:00 2001 From: Bob Brown Date: Mon, 27 Dec 2021 12:41:40 -0800 Subject: [PATCH 07/16] Don't block running a task if it doesn't use the active file (#8608) --- Extension/src/LanguageServer/cppBuildTaskProvider.ts | 10 +++++----- Extension/src/common.ts | 5 ++++- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Extension/src/LanguageServer/cppBuildTaskProvider.ts b/Extension/src/LanguageServer/cppBuildTaskProvider.ts index 56c03d483f..60785d4e34 100644 --- a/Extension/src/LanguageServer/cppBuildTaskProvider.ts +++ b/Extension/src/LanguageServer/cppBuildTaskProvider.ts @@ -202,11 +202,12 @@ export class CppBuildTaskProvider implements TaskProvider { } } + const taskUsesActiveFile: boolean = definition.args.some(arg => arg.indexOf('${file}') >= 0); // Need to check this before ${file} is resolved const scope: WorkspaceFolder | TaskScope = folder ? folder : TaskScope.Workspace; const task: CppBuildTask = new Task(definition, scope, definition.label, CppBuildTaskProvider.CppBuildSourceStr, new CustomExecution(async (resolvedDefinition: TaskDefinition): Promise => // When the task is executed, this callback will run. Here, we setup for running the task. - new CustomBuildTaskTerminal(resolvedcompilerPath, resolvedDefinition.args, resolvedDefinition.options) + new CustomBuildTaskTerminal(resolvedcompilerPath, resolvedDefinition.args, resolvedDefinition.options, taskUsesActiveFile) ), isCl ? '$msCompile' : '$gcc'); task.group = TaskGroup.Build; @@ -349,15 +350,14 @@ class CustomBuildTaskTerminal implements Pseudoterminal { public get onDidClose(): Event { return this.closeEmitter.event; } private endOfLine: string = "\r\n"; - constructor(private command: string, private args: string[], private options: cp.ExecOptions | cp.SpawnOptions | undefined) { + constructor(private command: string, private args: string[], private options: cp.ExecOptions | cp.SpawnOptions | undefined, private taskUsesActiveFile: boolean) { } async open(_initialDimensions: TerminalDimensions | undefined): Promise { - const editor: TextEditor | undefined = window.activeTextEditor; - if (editor && !util.fileIsCOrCppSource(editor.document.fileName)) { + if (this.taskUsesActiveFile && !util.fileIsCOrCppSource(window.activeTextEditor?.document.fileName)) { this.writeEmitter.fire(localize("cannot.build.non.cpp", 'Cannot build and debug because the active file is not a C or C++ source file.') + this.endOfLine); this.closeEmitter.fire(-1); - return Promise.resolve(); + return; } telemetry.logLanguageServerEvent("cppBuildTaskStarted"); // At this point we can start using the terminal. diff --git a/Extension/src/common.ts b/Extension/src/common.ts index 091d54d997..bfc0421195 100644 --- a/Extension/src/common.ts +++ b/Extension/src/common.ts @@ -95,7 +95,10 @@ export async function getRawJson(path: string | undefined): Promise { return rawElement; } -export function fileIsCOrCppSource(file: string): boolean { +export function fileIsCOrCppSource(file?: string): boolean { + if (file === undefined) { + return false; + } const fileExtLower: string = path.extname(file).toLowerCase(); return [".cu", ".c", ".cpp", ".cc", ".cxx", ".c++", ".cp", ".tcc", ".mm", ".ino", ".ipp", ".inl"].some(ext => fileExtLower === ext); } From 1bd76ebd2d7de01f81f4306031a8afa8a9b4d63b Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Mon, 27 Dec 2021 14:13:11 -0800 Subject: [PATCH 08/16] Fix "Command '' not found" error. (#8609) * Fix "Command '' not found" error. * Remove unneeded initialization. --- Extension/src/LanguageServer/ui.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Extension/src/LanguageServer/ui.ts b/Extension/src/LanguageServer/ui.ts index 7a7cb37a5e..d64686d5ca 100644 --- a/Extension/src/LanguageServer/ui.ts +++ b/Extension/src/LanguageServer/ui.ts @@ -68,22 +68,18 @@ export class UI { this.referencesStatusBarItem = vscode.window.createStatusBarItem("c.cpp.references.statusbar", vscode.StatusBarAlignment.Right, 901); this.referencesStatusBarItem.name = localize("c.cpp.references.statusbar", "C/C++ References Status"); - this.referencesStatusBarItem.text = ""; this.referencesStatusBarItem.tooltip = ""; this.referencesStatusBarItem.command = "C_Cpp.ShowReferencesProgress"; this.ShowReferencesIcon = false; this.intelliSenseStatusBarItem = vscode.window.createStatusBarItem("c.cpp.intellisense.statusbar", vscode.StatusBarAlignment.Right, 903); this.intelliSenseStatusBarItem.name = localize("c.cpp.intellisense.statusbar", "C/C++ IntelliSense Status"); - this.intelliSenseStatusBarItem.text = ""; this.intelliSenseStatusBarItem.tooltip = this.updatingIntelliSenseTooltip; this.ShowFlameIcon = false; this.browseEngineStatusBarItem = vscode.window.createStatusBarItem("c.cpp.tagparser.statusbar", vscode.StatusBarAlignment.Right, 902); this.browseEngineStatusBarItem.name = localize("c.cpp.tagparser.statusbar", "C/C++ Tag Parser Status"); - this.browseEngineStatusBarItem.text = ""; this.browseEngineStatusBarItem.tooltip = localize("discovering.files.tooltip", "Discovering files"); - this.browseEngineStatusBarItem.command = ""; this.ShowDBIcon = false; this.codeAnalysisProgram = "clang-tidy"; @@ -117,7 +113,7 @@ export class UI { if (val) { this.browseEngineStatusBarItem.command = "C_Cpp.ShowParsingCommands"; } else { - this.browseEngineStatusBarItem.command = ""; + this.browseEngineStatusBarItem.command = undefined; } } From 62f052a36c3d1c56f7458039bd2acad4982103e2 Mon Sep 17 00:00:00 2001 From: Yash Singh Date: Wed, 5 Jan 2022 08:22:14 -0800 Subject: [PATCH 09/16] Add repository info to extension pack (#8598) --- ExtensionPack/package.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ExtensionPack/package.json b/ExtensionPack/package.json index 9b47eda8aa..b6aea4286d 100644 --- a/ExtensionPack/package.json +++ b/ExtensionPack/package.json @@ -16,6 +16,11 @@ "categories": [ "Extension Packs" ], + "repository": { + "type": "git", + "url": "https://github.com/microsoft/vscode-cpptools.git", + "directory": "ExtensionPack" + }, "keywords": [ "C", "C++", From 49fcfad692835b3fe660a0faad5cfc0930ff74b7 Mon Sep 17 00:00:00 2001 From: Andrew Wang Date: Wed, 5 Jan 2022 13:29:54 -0800 Subject: [PATCH 10/16] Add cgmanifest for debugger components (#8637) This PR adds in a cgmanifest.json file to comply with Component Governance Compliance. This adds two registrations to llvm-project and lldb-mi as components as they are packaged and published with the macOS version of the VS Code C/C++ Extension. --- Extension/cgmanifest.json | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 Extension/cgmanifest.json diff --git a/Extension/cgmanifest.json b/Extension/cgmanifest.json new file mode 100644 index 0000000000..abb16f393f --- /dev/null +++ b/Extension/cgmanifest.json @@ -0,0 +1,24 @@ +{ + "Registrations": [ + { + "Component": { + "Type": "git", + "Git": { + "RepositoryUrl": "https://github.com/llvm/llvm-project", + "CommitHash": "0d44201451f03ba907cdb268ddddfc3fa38a0ebd" + }, + "DevelopmentDependency": true + } + }, + { + "Component": { + "Type": "git", + "Git": { + "RepositoryUrl": "https://github.com/lldb-tools/lldb-mi", + "CommitHash": "2388bd74133bc21eac59b2e2bf97f2a30770a315" + } + } + } + ], + "Version": 1 +} \ No newline at end of file From a333ee19e3bdf024caa1746d2e0d74a05ad0c3c2 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Wed, 5 Jan 2022 19:32:51 -0800 Subject: [PATCH 11/16] Add NOLINTBEGIN/END. (#8591) --- Extension/gulpfile.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Extension/gulpfile.js b/Extension/gulpfile.js index 8f35726215..c603360a02 100644 --- a/Extension/gulpfile.js +++ b/Extension/gulpfile.js @@ -679,7 +679,7 @@ ${typeScriptSwitchContent} // ****** This file is generated from nativeStrings.json. Do not edit this file directly. ****** #pragma once - +// NOLINTBEGIN(modernize-raw-string-literal) enum class localized_string_id : unsigned int { blank = 0, @@ -688,6 +688,7 @@ ${nativeEnumContent}}; inline static const char *localizable_strings[] = { "", ${nativeStringTableContent}}; +// NOLINTEND(modernize-raw-string-literal) `; console.log("Writing file: localized_string_ids.h -- If changed, copy to VS repo: src/vc/designtime/vscode/Common/generated/"); From 14592c4b37ee6f41d348647fb3cc0ed186e3aa35 Mon Sep 17 00:00:00 2001 From: Andrew Wang Date: Thu, 6 Jan 2022 13:54:47 -0800 Subject: [PATCH 12/16] .vscodeignore cgmanifest.json (#8641) --- Extension/.vscodeignore | 1 + 1 file changed, 1 insertion(+) diff --git a/Extension/.vscodeignore b/Extension/.vscodeignore index 05943344e3..98c39069e4 100644 --- a/Extension/.vscodeignore +++ b/Extension/.vscodeignore @@ -20,6 +20,7 @@ ui/*.ts # ignore Azure-Pipelines files jobs/** +cgmanifest.json # ignore development files tsconfig.json From 8d097048e8caf6f9dc44f01c40e4debabbe2580e Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson <49173979+Colengms@users.noreply.github.com> Date: Mon, 10 Jan 2022 18:37:51 -0800 Subject: [PATCH 13/16] Remove support for 'online' binary downloads (#8505) --- .github/workflows/ci_linux.yml | 18 +- .github/workflows/ci_mac.yml | 18 +- .github/workflows/ci_windows.yml | 14 +- Extension/gulpfile.js | 114 ---- Extension/package.json | 431 ++------------ Extension/package.nls.json | 1 + Extension/src/Debugger/attachToProcess.ts | 88 ++- .../Debugger/debugAdapterDescriptorFactory.ts | 24 +- Extension/src/LanguageServer/client.ts | 1 - Extension/src/LanguageServer/extension.ts | 481 +--------------- .../LanguageServer/timeTelemetryCollector.ts | 2 +- Extension/src/commands.ts | 104 ---- Extension/src/common.ts | 143 +---- Extension/src/githubAPI.ts | 335 ----------- Extension/src/installationInformation.ts | 38 -- Extension/src/main.ts | 489 +++------------- Extension/src/packageManager.ts | 530 ------------------ Extension/src/packageVersion.ts | 98 ---- Extension/src/telemetry.ts | 11 +- Extension/test/unitTests/updowngrade.test.ts | 227 -------- 20 files changed, 241 insertions(+), 2926 deletions(-) delete mode 100644 Extension/src/commands.ts delete mode 100644 Extension/src/githubAPI.ts delete mode 100644 Extension/src/installationInformation.ts delete mode 100644 Extension/src/packageManager.ts delete mode 100644 Extension/src/packageVersion.ts delete mode 100644 Extension/test/unitTests/updowngrade.test.ts diff --git a/.github/workflows/ci_linux.yml b/.github/workflows/ci_linux.yml index d307e13a1a..d69442e9ed 100644 --- a/.github/workflows/ci_linux.yml +++ b/.github/workflows/ci_linux.yml @@ -22,18 +22,10 @@ jobs: 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 @@ -48,8 +40,8 @@ jobs: run: yarn run unitTests working-directory: Extension - - name: Run languageServer integration tests - uses: GabrielBB/xvfb-action@v1.4 - with: - run: yarn run integrationTests - working-directory: Extension +# - name: Run languageServer integration tests +# uses: GabrielBB/xvfb-action@v1.4 +# with: +# run: yarn run integrationTests +# working-directory: Extension diff --git a/.github/workflows/ci_mac.yml b/.github/workflows/ci_mac.yml index a80f659a8a..31c61684d2 100644 --- a/.github/workflows/ci_mac.yml +++ b/.github/workflows/ci_mac.yml @@ -22,18 +22,10 @@ jobs: run: yarn install --network-timeout 100000 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 @@ -48,8 +40,8 @@ jobs: run: yarn run unitTests working-directory: Extension - - name: Run languageServer integration tests - uses: GabrielBB/xvfb-action@v1.4 - with: - run: yarn run integrationTests - working-directory: Extension +# - name: Run languageServer integration tests +# uses: GabrielBB/xvfb-action@v1.4 +# with: +# run: yarn run integrationTests +# working-directory: Extension diff --git a/.github/workflows/ci_windows.yml b/.github/workflows/ci_windows.yml index 61da517bd1..ec0697408a 100644 --- a/.github/workflows/ci_windows.yml +++ b/.github/workflows/ci_windows.yml @@ -22,18 +22,10 @@ jobs: 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 @@ -46,6 +38,6 @@ jobs: run: yarn run unitTests working-directory: Extension - - name: Run languageServer integration tests - run: yarn run integrationTests - working-directory: Extension +# - name: Run languageServer integration tests +# run: yarn run integrationTests +# working-directory: Extension diff --git a/Extension/gulpfile.js b/Extension/gulpfile.js index c603360a02..1ec9783d73 100644 --- a/Extension/gulpfile.js +++ b/Extension/gulpfile.js @@ -71,17 +71,6 @@ gulp.task('lint', function () { .pipe(eslint.failAfterError()); }); -gulp.task('pr-check', (done) => { - const packageJson = JSON.parse(fs.readFileSync('./package.json').toString()); - if (packageJson.activationEvents.length !== 1 && packageJson.activationEvents[0] !== '*') { - console.log('Please make sure to not check in package.json that has been rewritten by the extension activation. If you intended to have changes in package.json, please only check-in your changes. If you did not, please run `git checkout -- package.json`.'); - done(); - process.exit(1); - } - - done(); -}); - // **************************** // Command: translations-export @@ -301,109 +290,6 @@ gulp.task("translations-import", (done) => { })); }); -// **************************** -// Command: generate-package-hashes -// Generates a hash for each dependency package -// **************************** - -async function DownloadFile(urlString) { - const buffers = []; - return new Promise((resolve, reject) => { - const req = https.request(urlString, (response) => { - if (response.statusCode === 301 || response.statusCode === 302) { - // Redirect - download from new location - let redirectUrl; - if (typeof response.headers.location === "string") { - redirectUrl = response.headers.location; - } else { - if (!response.headers.location) { - console.log(`Invalid download location received`); - return reject(); - } - redirectUrl = response.headers.location[0]; - } - console.log(`Using redirectUrl: '${redirectUrl}'`); - return resolve(DownloadFile(redirectUrl)); - } else if (response.statusCode !== 200) { - if (response.statusCode === undefined || response.statusCode === null) { - console.log("unknown error code."); - return reject(); - } - console.log(`failed with error code: '${response.statusCode}'`); - return reject(); - } - - response.on('data', (data) => { - buffers.push(data); - }); - - response.on('end', () => { - if (buffers.length > 0) { - return resolve(Buffer.concat(buffers)); - } else { - return reject(); - } - }); - - response.on('error', err => { - console.log(`problem with request: '${err.message}'`); - return reject(); - }); - }); - - req.on('error', err => { - console.log(`problem with request: '${err.message}'`); - return reject(); - }); - - // Execute the request - req.end(); - }); - -} - -async function generatePackageHashes(packageJson) { - const downloadAndGetHash = async (url) => { - console.log(url); - try { - const buf = await DownloadFile(url); - if (buf) { - const hash = crypto.createHash('sha256'); - hash.update(buf); - const value = hash.digest('hex').toUpperCase(); - return value; - } - return undefined; - } catch (err) { - return undefined; - } - }; - - for (let dependency of packageJson.runtimeDependencies) { - console.log(`-------- Downloading package: '${dependency.description}' --------`); - const hash = await downloadAndGetHash(dependency.url); - if (hash) { - dependency.integrity = hash; - console.log(`integrity: '${hash}'`); - } else { - console.log(`No hash generated for package '${dependency.description}`); - } - console.log(`\n`); - } - - let content = JSON.stringify(packageJson, null, 2); - return content; -} - -gulp.task('generate-package-hashes', async (done) => { - const packageJsonPath = './package.json'; - const packageJson = JSON.parse(fs.readFileSync(packageJsonPath).toString()); - const content = await generatePackageHashes(packageJson); - fs.writeFileSync(packageJsonPath, content); - done(); -}); - - // **************************** // Command: translations-generate // The following is used to import an i18n directory structure and generate files used at runtime. diff --git a/Extension/package.json b/Extension/package.json index 6325529ba0..8e8ea33f00 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -11,7 +11,7 @@ }, "license": "SEE LICENSE IN LICENSE.txt", "engines": { - "vscode": "^1.60.0" + "vscode": "^1.61.0" }, "bugs": { "url": "https://github.com/Microsoft/vscode-cpptools/issues", @@ -45,7 +45,41 @@ "virtualWorkspaces": false }, "activationEvents": [ - "*" + "onLanguage:c", + "onLanguage:cpp", + "onLanguage:cuda-cpp", + "onCommand:extension.pickNativeProcess", + "onCommand:extension.pickRemoteNativeProcess", + "onCommand:C_Cpp.BuildAndDebugActiveFile", + "onCommand:C_Cpp.RestartIntelliSenseForFile", + "onCommand:C_Cpp.ConfigurationEditJSON", + "onCommand:C_Cpp.ConfigurationEditUI", + "onCommand:C_Cpp.ConfigurationSelect", + "onCommand:C_Cpp.ConfigurationProviderSelect", + "onCommand:C_Cpp.SwitchHeaderSource", + "onCommand:C_Cpp.EnableErrorSquiggles", + "onCommand:C_Cpp.DisableErrorSquiggles", + "onCommand:C_Cpp.ToggleIncludeFallback", + "onCommand:C_Cpp.ToggleDimInactiveRegions", + "onCommand:C_Cpp.ResetDatabase", + "onCommand:C_Cpp.TakeSurvey", + "onCommand:C_Cpp.LogDiagnostics", + "onCommand:C_Cpp.RescanWorkspace", + "onCommand:C_Cpp.VcpkgClipboardInstallSuggested", + "onCommand:C_Cpp.VcpkgOnlineHelpSuggested", + "onCommand:C_Cpp.GenerateEditorConfig", + "onCommand:C_Cpp.GoToNextDirectiveInGroup", + "onCommand:C_Cpp.GoToPrevDirectiveInGroup", + "onCommand:C_Cpp.CheckForCompiler", + "onCommand:C_Cpp.RunCodeAnalysisOnActiveFile", + "onCommand:C_Cpp.RunCodeAnalysisOnOpenFiles", + "onCommand:C_Cpp.RunCodeAnalysisOnAllFiles", + "onCommand:C_Cpp.ClearCodeAnalysisSquiggles", + "onDebugInitialConfigurations", + "onDebugResolve:cppdbg", + "onDebugResolve:cppvsdbg", + "workspaceContains:/.vscode/c_cpp_properties.json", + "onFileSystem:cpptools-schema" ], "main": "./dist/main", "contributes": { @@ -2446,7 +2480,8 @@ ], "default": "Default", "markdownDescription": "%c_cpp.configuration.updateChannel.markdownDescription%", - "scope": "application" + "scope": "application", + "deprecationMessage": "%c_cpp.configuration.updateChannel.deprecationMessage%" }, "C_Cpp.experimentalFeatures": { "type": "string", @@ -4302,8 +4337,6 @@ "translations-import": "node ./tools/prepublish.js && gulp translations-import", "prepublishjs": "node ./tools/prepublish.js", "pretest": "tsc -p test.tsconfig.json", - "generatePackageHashes": "gulp generate-package-hashes", - "pr-check": "gulp pr-check", "lint": "gulp lint", "unitTests": "tsc -p test.tsconfig.json && node ./out/test/unitTests/runTest.js", "integrationTests": "tsc -p test.tsconfig.json && node ./out/test/integrationTests/languageServer/runTest.js", @@ -4385,391 +4418,5 @@ "path-parse": "^1.0.7", "axios": "^0.21.4", "set-value": "^4.0.1" - }, - "runtimeDependencies": [ - { - "description": "C/C++ language components (Linux / x86_64)", - "url": "https://go.microsoft.com/fwlink/?linkid=2175018", - "platforms": [ - "linux" - ], - "architectures": [ - "x64" - ], - "binaries": [ - "./bin/cpptools", - "./bin/cpptools-srv" - ], - "integrity": "2C657DD48E5C327242C912954315098F81329190C72CE4D4FCB228264BE3AA01" - }, - { - "description": "C/C++ language components (Linux / armhf)", - "url": "https://go.microsoft.com/fwlink/?linkid=2174710", - "platforms": [ - "linux" - ], - "architectures": [ - "arm" - ], - "binaries": [ - "./bin/cpptools", - "./bin/cpptools-srv" - ], - "integrity": "22E6BDD91BF0E8592D1101034AE0459E9B103947F246478932650E34C1FAE8C1" - }, - { - "description": "C/C++ language components (Linux / aarch64)", - "url": "https://go.microsoft.com/fwlink/?linkid=2174708", - "platforms": [ - "linux" - ], - "architectures": [ - "arm64" - ], - "binaries": [ - "./bin/cpptools", - "./bin/cpptools-srv" - ], - "integrity": "D43ECEC2DCCA9E62B3C3A03C404AC383E570717C4343A3D0C56BADA0991336CD" - }, - { - "description": "C/C++ language components (macOS / x86_64)", - "url": "https://go.microsoft.com/fwlink/?linkid=2175017", - "platforms": [ - "darwin" - ], - "architectures": [ - "x64" - ], - "binaries": [ - "./bin/cpptools", - "./bin/cpptools-srv" - ], - "integrity": "3409C9D435F97EBD2F1176124873A675C81A079842F41E6E75EC1A78F454535A" - }, - { - "description": "C/C++ language components (macOS / ARM64)", - "url": "https://go.microsoft.com/fwlink/?linkid=2174709", - "platforms": [ - "darwin" - ], - "architectures": [ - "arm64" - ], - "binaries": [ - "./bin/cpptools", - "./bin/cpptools-srv" - ], - "integrity": "3557666DB85407E8CF12BB2C807C83F3ABD55DF811075A91544CC98BC092B9E2" - }, - { - "description": "C/C++ language components (Windows)", - "url": "https://go.microsoft.com/fwlink/?linkid=2175016", - "platforms": [ - "win32" - ], - "architectures": [ - "x64", - "x86" - ], - "binaries": [ - "./bin/cpptools.exe", - "./bin/cpptools-srv.exe" - ], - "integrity": "40D2953E807B48AB05EDB865F48928B2E09C0C0A84834E4022D6BA6333159F3D" - }, - { - "description": "C/C++ language components (Windows ARM64)", - "url": "https://go.microsoft.com/fwlink/?linkid=2174707", - "platforms": [ - "win32" - ], - "architectures": [ - "arm64" - ], - "binaries": [ - "./bin/cpptools.exe", - "./bin/cpptools-srv.exe" - ], - "integrity": "040AC8D9BFD5648C283A567520A0B76871593C0594C5F9266CFB5F321BBE0DA8" - }, - { - "description": "Clang tools (Linux / x86_64)", - "url": "https://go.microsoft.com/fwlink/?LinkID=2167549", - "platforms": [ - "linux" - ], - "architectures": [ - "x64" - ], - "binaries": [ - "./LLVM/bin/clang-format", - "./LLVM/bin/clang-tidy" - ], - "integrity": "0B5F60E1D18B14FFF97EA436A080AC03D7A1B591A835E0F2B39C01C058375E36" - }, - { - "description": "Clang tools (Linux / armhf)", - "url": "https://go.microsoft.com/fwlink/?LinkID=2167551", - "platforms": [ - "linux" - ], - "architectures": [ - "arm" - ], - "binaries": [ - "./LLVM/bin/clang-format", - "./LLVM/bin/clang-tidy" - ], - "integrity": "80855487EE8E26E16F36A8E45A46366B6EA71AE7CFFB64022612019B014F0ED8" - }, - { - "description": "Clang tools (Linux / aarch64)", - "url": "https://go.microsoft.com/fwlink/?LinkID=2167656", - "platforms": [ - "linux" - ], - "architectures": [ - "arm64" - ], - "binaries": [ - "./LLVM/bin/clang-format", - "./LLVM/bin/clang-tidy" - ], - "integrity": "2B5839C2E26DAE6DE9FF555FD096C517C5AEB003297F6DEFEE5290AB73CD0CE6" - }, - { - "description": "Clang tools (macOS / x86_64)", - "url": "https://go.microsoft.com/fwlink/?LinkID=2167655", - "platforms": [ - "darwin" - ], - "architectures": [ - "x64" - ], - "binaries": [ - "./LLVM/bin/clang-format", - "./LLVM/bin/clang-tidy" - ], - "integrity": "DD9A702A8104D385357D5A192F47E0D8EC516FC6239C8E210C429881F32A21DF" - }, - { - "description": "Clang tools (macOS / ARM64)", - "url": "https://go.microsoft.com/fwlink/?LinkID=2167654", - "platforms": [ - "darwin" - ], - "architectures": [ - "arm64" - ], - "binaries": [ - "./LLVM/bin/clang-format", - "./LLVM/bin/clang-tidy" - ], - "integrity": "D5C827306C7AA94B3C2397E592199F1C68ADD4DB4BECF552B3C02CB280AC875B" - }, - { - "description": "Clang tools (Windows x86)", - "url": "https://go.microsoft.com/fwlink/?LinkID=2167552", - "platforms": [ - "win32" - ], - "architectures": [ - "x86" - ], - "binaries": [ - "./LLVM/bin/clang-format.exe", - "./LLVM/bin/clang-tidy.exe" - ], - "integrity": "66BAAC412988FE1E40CE6F94BDE64BB7A2FB7C4E2493EBDBE6B4F994604A3FBD" - }, - { - "description": "Clang tools (Windows x64)", - "url": "https://go.microsoft.com/fwlink/?LinkID=2167550", - "platforms": [ - "win32" - ], - "architectures": [ - "x64" - ], - "binaries": [ - "./LLVM/bin/clang-format.exe", - "./LLVM/bin/clang-tidy.exe" - ], - "integrity": "702AF7F679CB943D3D80C2E68FC7B5708ACAA227E84417F835AE9C6A7468808E" - }, - { - "description": "Clang tools (Windows arm64)", - "url": "https://go.microsoft.com/fwlink/?LinkID=2167548", - "platforms": [ - "win32" - ], - "architectures": [ - "arm64" - ], - "binaries": [ - "./LLVM/bin/clang-format.exe", - "./LLVM/bin/clang-tidy.exe" - ], - "integrity": "76032192FE82E8C51A4721E7C9660B3B5755BF75DAF47A71F844F561732A92F5" - }, - { - "description": "OpenDebugAD7 (Windows x86/x64)", - "url": "https://download.visualstudio.microsoft.com/download/pr/19b0fca0-b008-4b39-9163-6b7a59e50961/b6f4a97889ec460d5a7cb8e880c802ba/win-x86.zip", - "platforms": [ - "win32" - ], - "architectures": [ - "x86", - "x64" - ], - "binaries": [ - "./debugAdapters/bin/OpenDebugAD7.exe" - ], - "integrity": "6E3D9651FF1ACCFB90A5CEF0F4B5C3FEFB4B8D0D68EC1A9E662428C0558BB062" - }, - { - "description": "OpenDebugAD7 (Windows ARM64)", - "url": "https://download.visualstudio.microsoft.com/download/pr/19b0fca0-b008-4b39-9163-6b7a59e50961/10847664407c73081a2b1e77368d1b2e/win10-arm64.zip", - "platforms": [ - "win32" - ], - "architectures": [ - "arm64" - ], - "binaries": [ - "./debugAdapters/bin/OpenDebugAD7.exe" - ], - "integrity": "A583716260318ACA8DDD27E8CAC68A1D1D6F9435871720ABF55740BA7A58096A" - }, - { - "description": "OpenDebugAD7 (Linux x64)", - "url": "https://download.visualstudio.microsoft.com/download/pr/19b0fca0-b008-4b39-9163-6b7a59e50961/99f1a2287dcf76cc2ad85b800bba9c01/linux-x64.zip", - "platforms": [ - "linux" - ], - "architectures": [ - "x64" - ], - "binaries": [ - "./debugAdapters/bin/OpenDebugAD7" - ], - "integrity": "5746E5C1372ACC1CB86D599447FBD4E1F8AA6994590AE5FCC9B961BDD09183E9" - }, - { - "description": "OpenDebugAD7 (Linux ARM)", - "url": "https://download.visualstudio.microsoft.com/download/pr/19b0fca0-b008-4b39-9163-6b7a59e50961/ed287e8059e08c574952f5231ffbc1ba/linux-arm.zip", - "platforms": [ - "linux" - ], - "architectures": [ - "arm" - ], - "binaries": [ - "./debugAdapters/bin/OpenDebugAD7" - ], - "integrity": "7D6F99793D2824EE996A37357663BDAA6BE929092DD3CEB16C5A532820B0E51D" - }, - { - "description": "OpenDebugAD7 (Linux ARM64)", - "url": "https://download.visualstudio.microsoft.com/download/pr/19b0fca0-b008-4b39-9163-6b7a59e50961/b9dc0e0f12f33d0b88be942cb1ff5ebe/linux-arm64.zip", - "platforms": [ - "linux" - ], - "architectures": [ - "arm64" - ], - "binaries": [ - "./debugAdapters/bin/OpenDebugAD7" - ], - "integrity": "94BA61786551685D19130F0AE740F6A4EA4D2862B3364E08A53117773CFC1032" - }, - { - "description": "OpenDebugAD7 (Alpine Linux x64)", - "url": "https://download.visualstudio.microsoft.com/download/pr/19b0fca0-b008-4b39-9163-6b7a59e50961/f74cb83d6e43dfc2c30a9a0ec46d46b4/linux-musl-x64.zip", - "platforms": [ - "alpine-linux" - ], - "architectures": [ - "x64" - ], - "binaries": [ - "./debugAdapters/bin/OpenDebugAD7" - ], - "integrity": "5B0400B1F28E059CC74AEA02174661659C0FF89F4835E9947C9F853212A72984" - }, - { - "description": "OpenDebugAD7 (macOS x64)", - "url": "https://download.visualstudio.microsoft.com/download/pr/19b0fca0-b008-4b39-9163-6b7a59e50961/7ed17c1525fb70665716366891d2296a/osx-x64.zip", - "platforms": [ - "darwin" - ], - "architectures": [ - "x64", - "arm64" - ], - "binaries": [ - "./debugAdapters/bin/OpenDebugAD7" - ], - "integrity": "48C36077BD4BE44E2B62246CDD72F90FAAAE26E3D3199CDC980047F41E31B718" - }, - { - "description": "LLDB-MI (macOS Mojave and higher)", - "url": "https://go.microsoft.com/fwlink/?linkid=2154927", - "platforms": [ - "darwin" - ], - "versionRegex": "10\\.(1[0-3]|[0-9])(\\..*)*$", - "matchVersion": false, - "binaries": [ - "./debugAdapters/lldb-mi/bin/lldb-mi" - ], - "integrity": "FA76E76C7D8E5D5CD0CC8E68C6FB70A354750D596DF3CED36ABF78AAD5C562C0" - }, - { - "description": "LLDB 3.8.0 (macOS High Sierra and lower)", - "url": "https://go.microsoft.com/fwlink/?LinkID=817244", - "platforms": [ - "darwin" - ], - "versionRegex": "10\\.(1[0-3]|[0-9])(\\..*)*$", - "matchVersion": true, - "binaries": [ - "./debugAdapters/lldb/bin/debugserver", - "./debugAdapters/lldb/bin/lldb-mi", - "./debugAdapters/lldb/bin/lldb-argdumper", - "./debugAdapters/lldb/bin/lldb-launcher" - ], - "integrity": "D4ACCD43F562E42CE30879AC15ADF5FB6AA50656795DCE8F3AD32FB108BB3B7E" - }, - { - "description": "Visual Studio Windows Debugger", - "url": "https://go.microsoft.com/fwlink/?linkid=2169833", - "platforms": [ - "win32" - ], - "architectures": [ - "x64", - "x86" - ], - "binaries": [ - "./debugAdapters/vsdbg/bin/vsdbg.exe" - ], - "integrity": "0C36EB31D90EC6FE5BFBD02D62222A7FE8E5BD7D238D9DD086BAAEA66C74FF16" - }, - { - "description": "Visual Studio Windows ARM64 Debugger", - "url": "https://go.microsoft.com/fwlink/?linkid=2169834", - "platforms": [ - "win32" - ], - "architectures": [ - "arm64" - ], - "binaries": [ - "./debugAdapters/vsdbg/bin/vsdbg.exe" - ], - "integrity": "7DBD8F522420703AA85435A779CAC29B8226A8B92236BEF27AA41E84E4973458" - } - ] + } } \ No newline at end of file diff --git a/Extension/package.nls.json b/Extension/package.nls.json index 7360d2ffb1..b0d1e2c9ef 100644 --- a/Extension/package.nls.json +++ b/Extension/package.nls.json @@ -194,6 +194,7 @@ "c_cpp.configuration.default.enableConfigurationSquiggles.markdownDescription": { "message": "Controls whether the extension will report errors detected in `c_cpp_properties.json`.", "comment": [ "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." ] }, "c_cpp.configuration.default.customConfigurationVariables.markdownDescription": { "message": "The value to use in a configuration if `customConfigurationVariables` is not set, or the values to insert if `${default}` is present as a key in `customConfigurationVariables`.", "comment": [ "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." ] }, "c_cpp.configuration.updateChannel.markdownDescription": { "message": "Set to `Insiders` to automatically download and install the latest Insiders builds of the extension, which include upcoming features and bug fixes.", "comment": [ "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." ] }, + "c_cpp.configuration.updateChannel.deprecationMessage": "This setting is deprecated. Pre-release extensions are now available via the Marketplace.", "c_cpp.configuration.experimentalFeatures.description": "Controls whether \"experimental\" features are usable.", "c_cpp.configuration.suggestSnippets.markdownDescription": { "message": "If `true`, snippets are provided by the language server.", "comment": [ "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." ] }, "c_cpp.configuration.enhancedColorization.markdownDescription": { "message": "If enabled, code is colorized based on IntelliSense. This setting only applies if `#C_Cpp.intelliSenseEngine#` is set to `Default`.", "comment": [ "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." ] }, diff --git a/Extension/src/Debugger/attachToProcess.ts b/Extension/src/Debugger/attachToProcess.ts index 0d827c049e..a588869f39 100644 --- a/Extension/src/Debugger/attachToProcess.ts +++ b/Extension/src/Debugger/attachToProcess.ts @@ -26,11 +26,7 @@ export class AttachPicker { // We should not await on this function. public async ShowAttachEntries(): Promise { - if (!await util.isExtensionReady()) { - util.displayExtensionNotReadyPrompt(); - } else { - return showQuickPick(() => this.attachItemsProvider.getAttachItems()); - } + return showQuickPick(() => this.attachItemsProvider.getAttachItems()); } } @@ -42,64 +38,60 @@ export class RemoteAttachPicker { private _channel: vscode.OutputChannel; public async ShowAttachEntries(config: any): Promise { - if (!await util.isExtensionReady()) { - util.displayExtensionNotReadyPrompt(); - } else { - this._channel.clear(); + this._channel.clear(); - const pipeTransport: any = config ? config.pipeTransport : undefined; + const pipeTransport: any = config ? config.pipeTransport : undefined; - if (!pipeTransport) { - throw new Error(localize("no.pipetransport", "Chosen debug configuration does not contain {0}", "pipeTransport")); - } + if (!pipeTransport) { + throw new Error(localize("no.pipetransport", "Chosen debug configuration does not contain {0}", "pipeTransport")); + } - let pipeProgram: string | undefined; + let pipeProgram: string | undefined; - if (os.platform() === 'win32' && - pipeTransport.pipeProgram && - !await util.checkFileExists(pipeTransport.pipeProgram)) { - const pipeProgramStr: string = pipeTransport.pipeProgram.toLowerCase().trim(); - const expectedArch: debugUtils.ArchType = debugUtils.ArchType[process.arch as keyof typeof debugUtils.ArchType]; + if (os.platform() === 'win32' && + pipeTransport.pipeProgram && + !await util.checkFileExists(pipeTransport.pipeProgram)) { + const pipeProgramStr: string = pipeTransport.pipeProgram.toLowerCase().trim(); + const expectedArch: debugUtils.ArchType = debugUtils.ArchType[process.arch as keyof typeof debugUtils.ArchType]; - // Check for pipeProgram - if (!await util.checkFileExists(config.pipeTransport.pipeProgram)) { - pipeProgram = debugUtils.ArchitectureReplacer.checkAndReplaceWSLPipeProgram(pipeProgramStr, expectedArch); - } + // Check for pipeProgram + if (!await util.checkFileExists(config.pipeTransport.pipeProgram)) { + pipeProgram = debugUtils.ArchitectureReplacer.checkAndReplaceWSLPipeProgram(pipeProgramStr, expectedArch); + } - // If pipeProgram does not get replaced and there is a pipeCwd, concatenate with pipeProgramStr and attempt to replace. - if (!pipeProgram && config.pipeTransport.pipeCwd) { - const pipeCwdStr: string = config.pipeTransport.pipeCwd.toLowerCase().trim(); - const newPipeProgramStr: string = path.join(pipeCwdStr, pipeProgramStr); + // If pipeProgram does not get replaced and there is a pipeCwd, concatenate with pipeProgramStr and attempt to replace. + if (!pipeProgram && config.pipeTransport.pipeCwd) { + const pipeCwdStr: string = config.pipeTransport.pipeCwd.toLowerCase().trim(); + const newPipeProgramStr: string = path.join(pipeCwdStr, pipeProgramStr); - if (!await util.checkFileExists(newPipeProgramStr)) { - pipeProgram = debugUtils.ArchitectureReplacer.checkAndReplaceWSLPipeProgram(newPipeProgramStr, expectedArch); - } + if (!await util.checkFileExists(newPipeProgramStr)) { + pipeProgram = debugUtils.ArchitectureReplacer.checkAndReplaceWSLPipeProgram(newPipeProgramStr, expectedArch); } } + } - if (!pipeProgram) { - pipeProgram = pipeTransport.pipeProgram; - } + if (!pipeProgram) { + pipeProgram = pipeTransport.pipeProgram; + } - const pipeArgs: string[] = pipeTransport.pipeArgs; + const pipeArgs: string[] = pipeTransport.pipeArgs; - const argList: string = RemoteAttachPicker.createArgumentList(pipeArgs); + const argList: string = RemoteAttachPicker.createArgumentList(pipeArgs); - const pipeCmd: string = `"${pipeProgram}" ${argList}`; + const pipeCmd: string = `"${pipeProgram}" ${argList}`; - const processes: AttachItem[]= await this.getRemoteOSAndProcesses(pipeCmd); - const attachPickOptions: vscode.QuickPickOptions = { - matchOnDetail: true, - matchOnDescription: true, - placeHolder: localize("select.process.attach", "Select the process to attach to") - }; + const processes: AttachItem[]= await this.getRemoteOSAndProcesses(pipeCmd); + const attachPickOptions: vscode.QuickPickOptions = { + matchOnDetail: true, + matchOnDescription: true, + placeHolder: localize("select.process.attach", "Select the process to attach to") + }; - const item: AttachItem | undefined = await vscode.window.showQuickPick(processes, attachPickOptions); - if (item) { - return item.id; - } else { - throw new Error(localize("process.not.selected", "Process not selected.")); - } + const item: AttachItem | undefined = await vscode.window.showQuickPick(processes, attachPickOptions); + if (item) { + return item.id; + } else { + throw new Error(localize("process.not.selected", "Process not selected.")); } } diff --git a/Extension/src/Debugger/debugAdapterDescriptorFactory.ts b/Extension/src/Debugger/debugAdapterDescriptorFactory.ts index e67df8d789..539d3d349f 100644 --- a/Extension/src/Debugger/debugAdapterDescriptorFactory.ts +++ b/Extension/src/Debugger/debugAdapterDescriptorFactory.ts @@ -4,7 +4,6 @@ * ------------------------------------------------------------------------------------------ */ import * as vscode from "vscode"; -import * as util from '../common'; import * as path from 'path'; import * as os from 'os'; import * as nls from 'vscode-nls'; @@ -34,16 +33,11 @@ export class CppdbgDebugAdapterDescriptorFactory extends AbstractDebugAdapterDes } async createDebugAdapterDescriptor(session: vscode.DebugSession, executable?: vscode.DebugAdapterExecutable): Promise { - if (await util.isExtensionReady()) { + const adapter: string = "./debugAdapters/bin/OpenDebugAD7" + (os.platform() === 'win32' ? ".exe" : ""); - const adapter: string = "./debugAdapters/bin/OpenDebugAD7" + (os.platform() === 'win32' ? ".exe" : ""); + const command: string = path.join(this.context.extensionPath, adapter); - const command: string = path.join(this.context.extensionPath, adapter); - - return new vscode.DebugAdapterExecutable(command, []); - } else { - throw new Error(util.extensionNotReadyString); - } + return new vscode.DebugAdapterExecutable(command, []); } } @@ -59,14 +53,10 @@ export class CppvsdbgDebugAdapterDescriptorFactory extends AbstractDebugAdapterD vscode.window.showErrorMessage(localize("debugger.not.available", "Debugger type '{0}' is not avaliable for non-Windows machines.", "cppvsdbg")); return null; } else { - if (await util.isExtensionReady()) { - return new vscode.DebugAdapterExecutable( - path.join(this.context.extensionPath, './debugAdapters/vsdbg/bin/vsdbg.exe'), - ['--interpreter=vscode', '--extConfigDir=%USERPROFILE%\\.cppvsdbg\\extensions'] - ); - } else { - throw new Error(util.extensionNotReadyString); - } + return new vscode.DebugAdapterExecutable( + path.join(this.context.extensionPath, './debugAdapters/vsdbg/bin/vsdbg.exe'), + ['--interpreter=vscode', '--extConfigDir=%USERPROFILE%\\.cppvsdbg\\extensions'] + ); } } } diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index fee1fb64a3..c6d7782d28 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -1481,7 +1481,6 @@ export class DefaultClient implements Client { experimentalFeatures: workspaceSettings.experimentalFeatures, edgeMessagesDirectory: path.join(util.getExtensionFilePath("bin"), "messages", util.getLocaleId()), localizedStrings: localizedStrings, - supportCuda: util.supportCuda, packageVersion: util.packageJson.version }, middleware: createProtocolFilter(allClients), diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index 59b6e98143..604b6dde6e 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -15,22 +15,16 @@ import { UI, getUI } from './ui'; import { Client, openFileVersions } from './client'; import { ClientCollection } from './clientCollection'; import { CppSettings, OtherSettings } from './settings'; -import { PersistentWorkspaceState, PersistentState } from './persistentState'; +import { PersistentState } from './persistentState'; import { getLanguageConfig } from './languageConfig'; import { getCustomConfigProviders } from './customProviders'; -import { PlatformInformation } from '../platform'; import { Range } from 'vscode-languageclient'; -import { ChildProcess, spawn } from 'child_process'; -import { getTargetBuildInfo, BuildInfo } from '../githubAPI'; -import { PackageVersion } from '../packageVersion'; -import { getTemporaryCommandRegistrarInstance } from '../commands'; import * as rd from 'readline'; import * as yauzl from 'yauzl'; -import { Readable, Writable } from 'stream'; +import { Readable } from 'stream'; import * as nls from 'vscode-nls'; import { CppBuildTaskProvider } from './cppBuildTaskProvider'; -import * as which from 'which'; -import { IExperimentationService } from 'tas-client'; +import { HandleInsidersPrompt } from '../main'; nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })(); const localize: nls.LocalizeFunc = nls.loadMessageBundle(); @@ -43,14 +37,6 @@ let ui: UI; const disposables: vscode.Disposable[] = []; let languageConfigurations: vscode.Disposable[] = []; let intervalTimer: NodeJS.Timer; -let insiderUpdateEnabled: boolean = false; -let insiderUpdateTimer: NodeJS.Timer; -const insiderUpdateTimerInterval: number = 1000 * 60 * 60; -let realActivationOccurred: boolean = false; -let tempCommands: vscode.Disposable[] = []; -let activatedPreviously: PersistentWorkspaceState; -let buildInfoCache: BuildInfo | undefined; -const cppInstallVsixStr: string = 'C/C++: Install vsix -- '; let taskProvider: vscode.Disposable; let codeActionProvider: vscode.Disposable; export const intelliSenseDisabledError: string = "Do not activate the extension when IntelliSense is disabled."; @@ -148,45 +134,40 @@ function isMissingIncludeDiagnostic(diagnostic: vscode.Diagnostic): boolean { return diagnostic.code === missingIncludeCode && diagnostic.source === 'C/C++'; } -/** - * activate: set up the extension for language services - */ -export async function activate(activationEventOccurred: boolean): Promise { - if (realActivationOccurred) { - return; // Occurs if multiple delayed commands occur before the real commands are registered. +function sendActivationTelemetry(): void { + const activateEvent: { [key: string]: string } = {}; + // Don't log telemetry for machineId if it's a special value used by the dev host: someValue.machineid + if (vscode.env.machineId !== "someValue.machineId") { + const machineIdPersistentState: PersistentState = new PersistentState("CPP.machineId", undefined); + if (!machineIdPersistentState.Value) { + activateEvent["newMachineId"] = vscode.env.machineId; + } else if (machineIdPersistentState.Value !== vscode.env.machineId) { + activateEvent["newMachineId"] = vscode.env.machineId; + activateEvent["oldMachineId"] = machineIdPersistentState.Value; + } + machineIdPersistentState.Value = vscode.env.machineId; } - - // Activate immediately if an activation event occurred in the previous workspace session. - // If onActivationEvent doesn't occur, it won't auto-activate next time. - activatedPreviously = new PersistentWorkspaceState("activatedPreviously", false); - if (activatedPreviously.Value) { - activatedPreviously.Value = false; - realActivation(); + if (vscode.env.uiKind === vscode.UIKind.Web) { + activateEvent["WebUI"] = "1"; } + telemetry.logLanguageServerEvent("Activate", activateEvent); +} - if (tempCommands.length === 0) { // Only needs to be added once. - tempCommands.push(vscode.workspace.onDidOpenTextDocument(onDidOpenTextDocument)); - } +/** + * activate: set up the extension for language services + */ +export async function activate(): Promise { - // handle "workspaceContains:/.vscode/c_cpp_properties.json" activation event. - let cppPropertiesExists: boolean = false; if (vscode.workspace.workspaceFolders && vscode.workspace.workspaceFolders.length > 0) { for (let i: number = 0; i < vscode.workspace.workspaceFolders.length; ++i) { const config: string = path.join(vscode.workspace.workspaceFolders[i].uri.fsPath, ".vscode/c_cpp_properties.json"); if (await util.checkFileExists(config)) { - cppPropertiesExists = true; const doc: vscode.TextDocument = await vscode.workspace.openTextDocument(config); vscode.languages.setTextDocumentLanguage(doc, "jsonc"); } } } - // Check if an activation event has already occurred. - if (activationEventOccurred) { - onActivationEvent(); - return; - } - taskProvider = vscode.tasks.registerTaskProvider(CppBuildTaskProvider.CppBuildScriptType, cppBuildTaskProvider); vscode.tasks.onDidStartTask(event => { @@ -247,67 +228,6 @@ export async function activate(activationEventOccurred: boolean): Promise } }); - if (cppPropertiesExists) { - onActivationEvent(); - return; - } - - // handle "onLanguage:c", "onLanguage:cpp" and "onLanguage:cuda-cpp" activation events. - if (vscode.workspace.textDocuments !== undefined && vscode.workspace.textDocuments.length > 0) { - for (let i: number = 0; i < vscode.workspace.textDocuments.length; ++i) { - const document: vscode.TextDocument = vscode.workspace.textDocuments[i]; - if (document.uri.scheme === "file") { - if (document.languageId === "c" || document.languageId === "cpp" || document.languageId === "cuda-cpp") { - onActivationEvent(); - return; - } - } - } - } -} - -function onDidOpenTextDocument(document: vscode.TextDocument): void { - if (document.languageId === "c" || document.languageId === "cpp" || document.languageId === "cuda-cpp") { - onActivationEvent(); - } -} - -function onActivationEvent(): void { - if (tempCommands.length === 0) { - return; - } - - // Cancel all the temp commands that just look for activations. - tempCommands.forEach((command) => { - command.dispose(); - }); - tempCommands = []; - if (!realActivationOccurred) { - realActivation(); - } - activatedPreviously.Value = true; -} - -function sendActivationTelemetry(): void { - const activateEvent: { [key: string]: string } = {}; - // Don't log telemetry for machineId if it's a special value used by the dev host: someValue.machineid - if (vscode.env.machineId !== "someValue.machineId") { - const machineIdPersistentState: PersistentState = new PersistentState("CPP.machineId", undefined); - if (!machineIdPersistentState.Value) { - activateEvent["newMachineId"] = vscode.env.machineId; - } else if (machineIdPersistentState.Value !== vscode.env.machineId) { - activateEvent["newMachineId"] = vscode.env.machineId; - activateEvent["oldMachineId"] = machineIdPersistentState.Value; - } - machineIdPersistentState.Value = vscode.env.machineId; - } - if (vscode.env.uiKind === vscode.UIKind.Web) { - activateEvent["WebUI"] = "1"; - } - telemetry.logLanguageServerEvent("Activate", activateEvent); -} - -function realActivation(): void { if (new CppSettings((vscode.workspace.workspaceFolders && vscode.workspace.workspaceFolders.length > 0) ? vscode.workspace.workspaceFolders[0]?.uri : undefined).intelliSenseEngine === "Disabled") { throw new Error(intelliSenseDisabledError); } else { @@ -324,7 +244,6 @@ function realActivation(): void { } } - realActivationOccurred = true; console.log("starting language server"); clients = new ClientCollection(); ui = getUI(); @@ -351,36 +270,8 @@ function realActivation(): void { reportMacCrashes(); - const settings: CppSettings = new CppSettings(); - vcpkgDbPromise = initVcpkgDatabase(); - PlatformInformation.GetPlatformInformation().then(async info => { - // Skip Insiders processing for 32-bit Linux. - if (info.platform !== "linux" || info.architecture === "x64" || info.architecture === "arm" || info.architecture === "arm64") { - // Skip Insiders processing for unsupported VS Code versions. - const experimentationService: IExperimentationService | undefined = await telemetry.getExperimentationService(); - // If we can't get to the experimentation service, don't suggest Insiders. - if (experimentationService !== undefined) { - const allowInsiders: boolean | undefined = await experimentationService.getTreatmentVariableAsync("vscode", "allowInsiders"); - // If we can't get the minimum supported VS Code version for Insiders, don't suggest Insiders. - if (allowInsiders) { - insiderUpdateEnabled = true; - if (settings.updateChannel === 'Default') { - const userVersion: PackageVersion = new PackageVersion(util.packageJson.version); - if (userVersion.suffix === "insiders") { - checkAndApplyUpdate(settings.updateChannel, false); - } else { - suggestInsidersChannel(); - } - } else if (settings.updateChannel === 'Insiders') { - insiderUpdateTimer = global.setInterval(checkAndApplyUpdateOnTimer, insiderUpdateTimerInterval); - checkAndApplyUpdate(settings.updateChannel, false); - } - } - } - } - }); clients.ActiveClient.notifyWhenLanguageClientReady(() => { intervalTimer = global.setInterval(onInterval, 2500); }); @@ -407,17 +298,9 @@ function onDidChangeSettings(event: vscode.ConfigurationChangeEvent): void { } }); - if (insiderUpdateEnabled) { - const newUpdateChannel: string = changedActiveClientSettings['updateChannel']; - if (newUpdateChannel) { - if (newUpdateChannel === 'Default') { - clearInterval(insiderUpdateTimer); - } else if (newUpdateChannel === 'Insiders') { - insiderUpdateTimer = global.setInterval(checkAndApplyUpdateOnTimer, insiderUpdateTimerInterval); - } - - checkAndApplyUpdate(newUpdateChannel, true); - } + const newUpdateChannel: string = changedActiveClientSettings['updateChannel']; + if (newUpdateChannel) { + HandleInsidersPrompt(); } } @@ -514,273 +397,6 @@ function onInterval(): void { clients.ActiveClient.onInterval(); } -/** - * Install a VSIX package. This helper function will exist until VSCode offers a command to do so. - * @param updateChannel The user's updateChannel setting. - */ -async function installVsix(vsixLocation: string): Promise { - const userVersion: PackageVersion = new PackageVersion(vscode.version); - - // 1.33.0 introduces workbench.extensions.installExtension. 1.32.3 was immediately prior. - const lastVersionWithoutInstallExtensionCommand: PackageVersion = new PackageVersion('1.32.3'); - if (userVersion.isVsCodeVersionGreaterThan(lastVersionWithoutInstallExtensionCommand)) { - return vscode.commands.executeCommand('workbench.extensions.installExtension', vscode.Uri.file(vsixLocation)); - } - - // Get the path to the VSCode command -- replace logic later when VSCode allows calling of - // workbench.extensions.action.installVSIX from TypeScript w/o instead popping up a file dialog - return PlatformInformation.GetPlatformInformation().then((platformInfo) => { - const getVsCodeScriptPath = (platformInfo: any): string => { - if (platformInfo.platform === 'win32') { - const vsCodeBinName: string = path.basename(process.execPath); - let cmdFile: string; // Windows VS Code Insiders/Exploration breaks VS Code naming conventions - if (vsCodeBinName === 'Code - Insiders.exe') { - cmdFile = 'code-insiders.cmd'; - } else if (vsCodeBinName === 'Code - Exploration.exe') { - cmdFile = 'code-exploration.cmd'; - } else { - cmdFile = 'code.cmd'; - } - const vsCodeExeDir: string = path.dirname(process.execPath); - return path.join(vsCodeExeDir, 'bin', cmdFile); - } else if (platformInfo.platform === 'darwin') { - return path.join(process.execPath, '..', '..', '..', '..', '..', - 'Resources', 'app', 'bin', 'code'); - } else { - const vsCodeBinName: string = path.basename(process.execPath); - return which.sync(vsCodeBinName); - } - }; - let vsCodeScriptPath: string; - try { - vsCodeScriptPath = getVsCodeScriptPath(platformInfo); - } catch (err) { - return Promise.reject(new Error('Failed to find VS Code script')); - } - - // 1.28.0 changes the CLI for making installations. 1.27.2 was immediately prior. - const oldVersion: PackageVersion = new PackageVersion('1.27.2'); - if (userVersion.isVsCodeVersionGreaterThan(oldVersion)) { - return new Promise((resolve, reject) => { - let process: ChildProcess; - try { - process = spawn(vsCodeScriptPath, ['--install-extension', vsixLocation, '--force']); - - // Timeout the process if no response is sent back. Ensures this Promise resolves/rejects - const timer: NodeJS.Timer = global.setTimeout(() => { - process.kill(); - reject(new Error('Failed to receive response from VS Code script process for installation within 30s.')); - }, 30000); - - process.on('exit', (code: number) => { - clearInterval(timer); - if (code !== 0) { - reject(new Error(`VS Code script exited with error code ${code}`)); - } else { - resolve(); - } - }); - if (process.pid === undefined) { - throw new Error(); - } - } catch (error) { - reject(new Error('Failed to launch VS Code script process for installation')); - return; - } - }); - } - - return new Promise((resolve, reject) => { - let process: ChildProcess; - try { - process = spawn(vsCodeScriptPath, ['--install-extension', vsixLocation]); - if (process.pid === undefined) { - throw new Error(); - } - } catch (error) { - reject(new Error('Failed to launch VS Code script process for installation')); - return; - } - - // Timeout the process if no response is sent back. Ensures this Promise resolves/rejects - const timer: NodeJS.Timer = global.setTimeout(() => { - process.kill(); - reject(new Error('Failed to receive response from VS Code script process for installation within 30s.')); - }, 30000); - - // If downgrading, the VS Code CLI will prompt whether the user is sure they would like to downgrade. - // Respond to this by writing 0 to stdin (the option to override and install the VSIX package) - let sentOverride: boolean = false; - const stdout: Readable | null = process.stdout; - if (!stdout) { - reject(new Error("Failed to communicate with VS Code script process for installation")); - return; - } - stdout.on('data', () => { - if (sentOverride) { - return; - } - const stdin: Writable | null = process.stdin; - if (!stdin) { - reject(new Error("Failed to communicate with VS Code script process for installation")); - return; - } - stdin.write('0\n'); - sentOverride = true; - clearInterval(timer); - resolve(); - }); - }); - }); -} - -async function suggestInsidersChannel(): Promise { - if (util.isCodespaces()) { - // Do not prompt users of Codespaces to join Insiders. - return; - } - - const suggestInsiders: PersistentState = new PersistentState("CPP.suggestInsiders", true); - - if (!suggestInsiders.Value) { - return; - } - - const suggestInsidersCount: PersistentState = new PersistentState("CPP.suggestInsidersCount", 0); - - if (suggestInsidersCount.Value < 10) { - suggestInsidersCount.Value = suggestInsidersCount.Value + 1; - return; - } - - let buildInfo: BuildInfo | undefined; - try { - buildInfo = await getTargetBuildInfo("Insiders", false); - } catch (errJS) { - const error: Error = errJS as Error; - console.log(`${cppInstallVsixStr}${error.message}`); - if (error.message.indexOf('/') !== -1 || error.message.indexOf('\\') !== -1) { - error.message = "Potential PII hidden"; - } - telemetry.logLanguageServerEvent('suggestInsiders', { 'error': error.message, 'success': 'false' }); - } - if (!buildInfo) { - return; // No need to update. - } - const message: string = localize('insiders.available', "Insiders version {0} is available. Would you like to switch to the Insiders channel and install this update?", buildInfo.name); - const yes: string = localize("yes.button", "Yes"); - const askLater: string = localize("ask.me.later.button", "Ask Me Later"); - const dontShowAgain: string = localize("dont.show.again.button", "Don't Show Again"); - vscode.window.showInformationMessage(message, yes, askLater, dontShowAgain).then((selection) => { - switch (selection) { - case yes: - // Cache buildInfo. - buildInfoCache = buildInfo; - // It will call onDidChangeSettings. - vscode.workspace.getConfiguration("C_Cpp").update("updateChannel", "Insiders", vscode.ConfigurationTarget.Global); - break; - case dontShowAgain: - suggestInsiders.Value = false; - break; - case askLater: - break; - default: - break; - } - }); - -} - -async function applyUpdate(buildInfo: BuildInfo): Promise { - let tempVSIX: any; - try { - tempVSIX = await util.createTempFileWithPostfix('.vsix'); - - // Try to download VSIX - const config: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration(); - const originalProxySupport: string | undefined = config.inspect('http.proxySupport')?.globalValue; - while (true) { // Might need to try again with a different http.proxySupport setting. - try { - await util.downloadFileToDestination(buildInfo.downloadUrl, tempVSIX.name); - } catch { - // Try again with the proxySupport to "off". - if (originalProxySupport !== config.inspect('http.proxySupport')?.globalValue) { - config.update('http.proxySupport', originalProxySupport, true); // Reset the http.proxySupport. - throw new Error('Failed to download VSIX package with proxySupport off'); // Changing the proxySupport didn't help. - } - if (config.get('http.proxySupport') !== "off" && originalProxySupport !== "off") { - config.update('http.proxySupport', "off", true); - continue; - } - throw new Error('Failed to download VSIX package'); - } - if (originalProxySupport !== config.inspect('http.proxySupport')?.globalValue) { - config.update('http.proxySupport', originalProxySupport, true); // Reset the http.proxySupport. - telemetry.logLanguageServerEvent('installVsix', { 'error': "Success with proxySupport off", 'success': 'true' }); - } - break; - } - - // Install VSIX - try { - await installVsix(tempVSIX.name); - } catch (error) { - throw new Error('Failed to install VSIX package'); - } - - // Installation successful - clearInterval(insiderUpdateTimer); - const message: string = localize("extension.updated", - "The C/C++ Extension has been updated to version {0}. Please reload the window for the changes to take effect.", - buildInfo.name); - util.promptReloadWindow(message); - telemetry.logLanguageServerEvent('installVsix', { 'success': 'true' }); - - } catch (errJS) { - const error: Error = errJS as Error; - console.error(`${cppInstallVsixStr}${error.message}`); - if (error.message.indexOf('/') !== -1 || error.message.indexOf('\\') !== -1) { - error.message = "Potential PII hidden"; - } - telemetry.logLanguageServerEvent('installVsix', { 'error': error.message, 'success': 'false' }); - } - - // Delete temp VSIX file - if (tempVSIX) { - tempVSIX.removeCallback(); - } -} - -async function checkAndApplyUpdateOnTimer(): Promise { - return checkAndApplyUpdate('Insiders', false); -} - -/** - * Query package.json and the GitHub API to determine whether the user should update, if so then install the update. - * The update can be an upgrade or downgrade depending on the the updateChannel setting. - * @param updateChannel The user's updateChannel setting. - * @param isFromSettingsChange True if the invocation is the result of a settings change. - */ -async function checkAndApplyUpdate(updateChannel: string, isFromSettingsChange: boolean): Promise { - // If we have buildInfo cache, we should use it. - let buildInfo: BuildInfo | undefined = buildInfoCache; - // clear buildInfo cache. - buildInfoCache = undefined; - - if (!buildInfo) { - try { - buildInfo = await getTargetBuildInfo(updateChannel, isFromSettingsChange); - } catch (errJS) { - const error: Error = errJS as Error; - telemetry.logLanguageServerEvent('installVsix', { 'error': error.message, 'success': 'false' }); - } - } - if (!buildInfo) { - return; // No need to update. - } - await applyUpdate(buildInfo); -} - /** * registered commands */ @@ -792,7 +408,6 @@ export function registerCommands(): void { } commandsRegistered = true; - getTemporaryCommandRegistrarInstance().clearTempCommands(); disposables.push(vscode.commands.registerCommand('C_Cpp.SwitchHeaderSource', onSwitchHeaderSource)); disposables.push(vscode.commands.registerCommand('C_Cpp.ResetDatabase', onResetDatabase)); disposables.push(vscode.commands.registerCommand('C_Cpp.ConfigurationSelect', onSelectConfiguration)); @@ -833,12 +448,9 @@ export function registerCommands(): void { disposables.push(vscode.commands.registerCommand('cpptools.activeConfigCustomVariable', onGetActiveConfigCustomVariable)); disposables.push(vscode.commands.registerCommand('cpptools.setActiveConfigName', onSetActiveConfigName)); disposables.push(vscode.commands.registerCommand('C_Cpp.RestartIntelliSenseForFile', onRestartIntelliSenseForFile)); - - getTemporaryCommandRegistrarInstance().executeDelayedCommands(); } function onRestartIntelliSenseForFile(): void { - onActivationEvent(); const activeEditor: vscode.TextEditor | undefined = vscode.window.activeTextEditor; if (!activeEditor || !activeEditor.document || activeEditor.document.uri.scheme !== "file" || (activeEditor.document.languageId !== "c" && activeEditor.document.languageId !== "cpp" && activeEditor.document.languageId !== "cuda-cpp")) { @@ -848,7 +460,6 @@ function onRestartIntelliSenseForFile(): void { } async function onSwitchHeaderSource(): Promise { - onActivationEvent(); const activeEditor: vscode.TextEditor | undefined = vscode.window.activeTextEditor; if (!activeEditor || !activeEditor.document) { return; @@ -912,12 +523,10 @@ async function selectClient(): Promise { } function onResetDatabase(): void { - onActivationEvent(); clients.ActiveClient.resetDatabase(); } function onSelectConfiguration(): void { - onActivationEvent(); if (!isFolderOpen()) { vscode.window.showInformationMessage(localize("configuration.select.first", 'Open a folder first to select a configuration')); } else { @@ -928,7 +537,6 @@ function onSelectConfiguration(): void { } function onSelectConfigurationProvider(): void { - onActivationEvent(); if (!isFolderOpen()) { vscode.window.showInformationMessage(localize("configuration.provider.select.first", 'Open a folder first to select a configuration provider')); } else { @@ -937,7 +545,6 @@ function onSelectConfigurationProvider(): void { } function onEditConfigurationJSON(viewColumn: vscode.ViewColumn = vscode.ViewColumn.Active): void { - onActivationEvent(); telemetry.logLanguageServerEvent("SettingsCommand", { "palette": "json" }, undefined); if (!isFolderOpen()) { vscode.window.showInformationMessage(localize('edit.configurations.open.first', 'Open a folder first to edit configurations')); @@ -947,7 +554,6 @@ function onEditConfigurationJSON(viewColumn: vscode.ViewColumn = vscode.ViewColu } function onEditConfigurationUI(viewColumn: vscode.ViewColumn = vscode.ViewColumn.Active): void { - onActivationEvent(); telemetry.logLanguageServerEvent("SettingsCommand", { "palette": "ui" }, undefined); if (!isFolderOpen()) { vscode.window.showInformationMessage(localize('edit.configurations.open.first', 'Open a folder first to edit configurations')); @@ -957,7 +563,6 @@ function onEditConfigurationUI(viewColumn: vscode.ViewColumn = vscode.ViewColumn } function onEditConfiguration(viewColumn: vscode.ViewColumn = vscode.ViewColumn.Active): void { - onActivationEvent(); if (!isFolderOpen()) { vscode.window.showInformationMessage(localize('edit.configurations.open.first', 'Open a folder first to edit configurations')); } else { @@ -966,7 +571,6 @@ function onEditConfiguration(viewColumn: vscode.ViewColumn = vscode.ViewColumn.A } function onGenerateEditorConfig(): void { - onActivationEvent(); if (!isFolderOpen()) { const settings: CppSettings = new CppSettings(); settings.generateEditorConfig(); @@ -979,25 +583,21 @@ function onGenerateEditorConfig(): void { } function onGoToNextDirectiveInGroup(): void { - onActivationEvent(); const client: Client = getActiveClient(); client.handleGoToDirectiveInGroup(true); } function onGoToPrevDirectiveInGroup(): void { - onActivationEvent(); const client: Client = getActiveClient(); client.handleGoToDirectiveInGroup(false); } function onCheckForCompiler(): void { - onActivationEvent(); const client: Client = getActiveClient(); client.handleCheckForCompiler(); } async function onRunCodeAnalysisOnActiveFile(): Promise { - onActivationEvent(); if (activeDocument !== "") { await vscode.commands.executeCommand("workbench.action.files.saveAll"); getActiveClient().handleRunCodeAnalysisOnActiveFile(); @@ -1005,7 +605,6 @@ async function onRunCodeAnalysisOnActiveFile(): Promise { } async function onRunCodeAnalysisOnOpenFiles(): Promise { - onActivationEvent(); if (openFileVersions.size > 0) { await vscode.commands.executeCommand("workbench.action.files.saveAll"); getActiveClient().handleRunCodeAnalysisOnOpenFiles(); @@ -1013,13 +612,11 @@ async function onRunCodeAnalysisOnOpenFiles(): Promise { } async function onRunCodeAnalysisOnAllFiles(): Promise { - onActivationEvent(); await vscode.commands.executeCommand("workbench.action.files.saveAll"); getActiveClient().handleRunCodeAnalysisOnAllFiles(); } async function onClearCodeAnalysisSquiggles(): Promise { - onActivationEvent(); getActiveClient().handleClearCodeAnalysisSquiggles(); } @@ -1034,70 +631,58 @@ function onAddToIncludePath(path: string): void { } function onEnableSquiggles(): void { - onActivationEvent(); // This only applies to the active client. const settings: CppSettings = new CppSettings(clients.ActiveClient.RootUri); settings.update("errorSquiggles", "Enabled"); } function onDisableSquiggles(): void { - onActivationEvent(); // This only applies to the active client. const settings: CppSettings = new CppSettings(clients.ActiveClient.RootUri); settings.update("errorSquiggles", "Disabled"); } function onToggleIncludeFallback(): void { - onActivationEvent(); // This only applies to the active client. const settings: CppSettings = new CppSettings(clients.ActiveClient.RootUri); settings.toggleSetting("intelliSenseEngineFallback", "Enabled", "Disabled"); } function onToggleDimInactiveRegions(): void { - onActivationEvent(); // This only applies to the active client. const settings: CppSettings = new CppSettings(clients.ActiveClient.RootUri); settings.update("dimInactiveRegions", !settings.dimInactiveRegions); } function onPauseParsing(): void { - onActivationEvent(); clients.ActiveClient.pauseParsing(); } function onResumeParsing(): void { - onActivationEvent(); clients.ActiveClient.resumeParsing(); } function onPauseCodeAnalysis(): void { - onActivationEvent(); clients.ActiveClient.PauseCodeAnalysis(); } function onResumeCodeAnalysis(): void { - onActivationEvent(); clients.ActiveClient.ResumeCodeAnalysis(); } function onCancelCodeAnalysis(): void { - onActivationEvent(); clients.ActiveClient.CancelCodeAnalysis(); } function onShowParsingCommands(): void { - onActivationEvent(); clients.ActiveClient.handleShowParsingCommands(); } function onShowCodeAnalysisCommands(): void { - onActivationEvent(); clients.ActiveClient.handleShowCodeAnalysisCommands(); } function onShowReferencesProgress(): void { - onActivationEvent(); clients.ActiveClient.handleReferencesIcon(); } @@ -1108,7 +693,6 @@ function onToggleRefGroupView(): void { } function onTakeSurvey(): void { - onActivationEvent(); telemetry.logLanguageServerEvent("onTakeSurvey"); const uri: vscode.Uri = vscode.Uri.parse(`https://www.research.net/r/VBVV6C6?o=${os.platform()}&m=${vscode.env.machineId}`); vscode.commands.executeCommand('vscode.open', uri); @@ -1121,7 +705,6 @@ function onVcpkgOnlineHelpSuggested(dummy?: any): void { } async function onVcpkgClipboardInstallSuggested(ports?: string[]): Promise { - onActivationEvent(); let source: string; if (ports && ports.length) { source = 'CodeAction'; @@ -1189,12 +772,10 @@ function onGetActiveConfigCustomVariable(variableName: string): Thenable } function onLogDiagnostics(): void { - onActivationEvent(); clients.ActiveClient.logDiagnostics(); } function onRescanWorkspace(): void { - onActivationEvent(); clients.ActiveClient.rescanFolder(); } @@ -1346,14 +927,10 @@ function handleMacCrashFileRead(err: NodeJS.ErrnoException | undefined | null, d } export function deactivate(): Thenable { - if (!realActivationOccurred) { - return Promise.resolve(); - } clients.timeTelemetryCollector.clear(); console.log("deactivating extension"); telemetry.logLanguageServerEvent("LanguageServerShutdown"); clearInterval(intervalTimer); - clearInterval(insiderUpdateTimer); disposables.forEach(d => d.dispose()); languageConfigurations.forEach(d => d.dispose()); ui.dispose(); @@ -1371,15 +948,9 @@ export function isFolderOpen(): boolean { } export function getClients(): ClientCollection { - if (!realActivationOccurred) { - realActivation(); - } return clients; } export function getActiveClient(): Client { - if (!realActivationOccurred) { - realActivation(); - } return clients.ActiveClient; } diff --git a/Extension/src/LanguageServer/timeTelemetryCollector.ts b/Extension/src/LanguageServer/timeTelemetryCollector.ts index 970fe8291a..17ede8149e 100644 --- a/Extension/src/LanguageServer/timeTelemetryCollector.ts +++ b/Extension/src/LanguageServer/timeTelemetryCollector.ts @@ -7,7 +7,7 @@ import * as util from '../common'; import * as vscode from 'vscode'; interface TimeStampSequence { - firstFile?: number; // when the extension is activated by realActivation. Defined only for "cold" start cases. + firstFile?: number; // when the extension is activated. Defined only for "cold" start cases. didOpen: number; // when the file appears in the editor. Defined for "warm" start cases. setup: number; // when the Intellisense_client constructor is completed updateRange: number; // when publishDiagnostics & provideSemanticTokens is completed diff --git a/Extension/src/commands.ts b/Extension/src/commands.ts deleted file mode 100644 index bfce15c5f9..0000000000 --- a/Extension/src/commands.ts +++ /dev/null @@ -1,104 +0,0 @@ -/* -------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All Rights Reserved. - * See 'LICENSE' in the project root for license information. - * ------------------------------------------------------------------------------------------ */ -'use strict'; - -import * as vscode from 'vscode'; -import * as LanguageServer from './LanguageServer/extension'; -import * as util from './common'; -import * as nls from 'vscode-nls'; - -nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })(); -const localize: nls.LocalizeFunc = nls.loadMessageBundle(); - -class TemporaryCommandRegistrar { - // Used to save/re-execute commands used before the extension has activated (e.g. delayed by dependency downloading). - private delayedCommandsToExecute: Set; - private tempCommands: vscode.Disposable[]; // Need to save this to unregister/dispose the temporary commands. - private isLanguageServerDisabled: boolean = false; - private isActivationReady: boolean = false; - - private commandsToRegister: string[] = [ - "C_Cpp.ConfigurationEditJSON", - "C_Cpp.ConfigurationEditUI", - "C_Cpp.ConfigurationSelect", - "C_Cpp.ConfigurationProviderSelect", - "C_Cpp.SwitchHeaderSource", - "C_Cpp.EnableErrorSquiggles", - "C_Cpp.DisableErrorSquiggles", - "C_Cpp.ToggleIncludeFallback", - "C_Cpp.ToggleDimInactiveRegions", - "C_Cpp.ResetDatabase", - "C_Cpp.TakeSurvey", - "C_Cpp.LogDiagnostics", - "C_Cpp.RescanWorkspace", - "C_Cpp.GenerateEditorConfig", - "C_Cpp.VcpkgClipboardInstallSuggested", - "C_Cpp.VcpkgOnlineHelpSuggested", - "C_Cpp.CheckForCompiler", - "C_Cpp.RunCodeAnalysisOnActiveFile", - "C_Cpp.RunCodeAnalysisOnOpenFiles", - "C_Cpp.RunCodeAnalysisOnAllFiles", - "C_Cpp.ClearCodeAnalysisSquiggles" - ]; - - constructor() { - this.tempCommands = []; - this.delayedCommandsToExecute = new Set(); - - // Add temp commands that invoke the real commands after download/install is complete (preventing an error message) - if (util.extensionContext) { - this.commandsToRegister.forEach(command => { - this.registerTempCommand(command); - }); - } - } - - public registerTempCommand(command: string): void { - this.tempCommands.push(vscode.commands.registerCommand(command, () => { - if (this.isLanguageServerDisabled) { - vscode.window.showInformationMessage(localize("command.disabled", 'This command is disabled because "{0}" is set to "{1}".', "C_Cpp.intelliSenseEngine", "Disabled")); - return; - } - this.delayedCommandsToExecute.add(command); - if (this.isActivationReady) { - LanguageServer.activate(true); - } - })); - } - - public disableLanguageServer(): void { - this.isLanguageServerDisabled = true; - } - - public activateLanguageServer(): void { - // Main activation code. - LanguageServer.activate(this.delayedCommandsToExecute.size > 0); - this.isActivationReady = true; - } - - public clearTempCommands(): void { - this.tempCommands.forEach((command) => { - command.dispose(); - }); - this.tempCommands = []; - } - - public executeDelayedCommands(): void { - this.delayedCommandsToExecute.forEach((command) => { - vscode.commands.executeCommand(command); - }); - this.delayedCommandsToExecute.clear(); - } -} - -let tempCommandRegistrar: TemporaryCommandRegistrar; - -export function initializeTemporaryCommandRegistrar(): void { - tempCommandRegistrar = new TemporaryCommandRegistrar(); -} - -export function getTemporaryCommandRegistrarInstance(): TemporaryCommandRegistrar { - return tempCommandRegistrar; -} diff --git a/Extension/src/common.ts b/Extension/src/common.ts index bfc0421195..bfd79d74e7 100644 --- a/Extension/src/common.ts +++ b/Extension/src/common.ts @@ -20,13 +20,12 @@ import { ClientRequest, OutgoingHttpHeaders } from 'http'; import { lookupString } from './nativeStrings'; import * as nls from 'vscode-nls'; import { Readable } from 'stream'; -import { PackageManager, IPackage } from './packageManager'; import * as jsonc from 'comment-json'; +import { TargetPopulation } from 'vscode-tas-client'; nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })(); const localize: nls.LocalizeFunc = nls.loadMessageBundle(); export const failedToParseJson: string = localize("failed.to.parse.json", "Failed to parse json file, possibly due to comments or trailing commas."); -export let supportCuda: boolean = false; export type Mutable = { // eslint-disable-next-line @typescript-eslint/array-type @@ -177,13 +176,6 @@ export function isHeader(uri: vscode.Uri): boolean { return !ext || ext.startsWith(".h") || ext.startsWith(".H"); } -// Extension is ready if install.lock exists and debugAdapters folder exist. -export async function isExtensionReady(): Promise { - const doesInstallLockFileExist: boolean = await checkInstallLockFile(); - - return doesInstallLockFileExist; -} - let isExtensionNotReadyPromptDisplayed: boolean = false; export const extensionNotReadyString: string = localize("extension.not.ready", 'The C/C++ extension is still installing. See the output window for more information.'); @@ -428,32 +420,6 @@ export function getHttpsProxyAgent(): HttpsProxyAgent | undefined { return new HttpsProxyAgent(proxyOptions); } -export interface InstallLockContents { - platform: string; - architecture: string; -}; - -export function touchInstallLockFile(info: PlatformInformation): Promise { - const installLockObject: InstallLockContents = { - platform: info.platform, - architecture: info.architecture - }; - const content: string = JSON.stringify(installLockObject); - return writeFileText(getInstallLockPath(), content); -} - -export function touchExtensionFolder(): Promise { - return new Promise((resolve, reject) => { - fs.utimes(path.resolve(extensionPath, ".."), new Date(Date.now()), new Date(Date.now()), (err) => { - if (err) { - reject(err); - } - - resolve(); - }); - }); -} - /** Test whether a file exists */ export function checkFileExists(filePath: string): Promise { return new Promise((resolve, reject) => { @@ -532,84 +498,6 @@ export function readDir(dirPath: string): Promise { }); } -/** Test whether the lock file exists.*/ -export function checkInstallLockFile(): Promise { - return checkFileExists(getInstallLockPath()); -} - -/** Check if the core binaries exists in extension's installation folder */ -export async function checkInstallBinariesExist(): Promise { - if (!checkInstallLockFile()) { - return false; - } - let installBinariesExist: boolean = true; - const info: PlatformInformation = await PlatformInformation.GetPlatformInformation(); - const packageManager: PackageManager = new PackageManager(info); - const packages: Promise = packageManager.GetPackages(); - for (const pkg of await packages) { - if (pkg.binaries) { - await Promise.all(pkg.binaries.map(async (file: string) => { - if (!await checkFileExists(file)) { - installBinariesExist = false; - const fileBase: string = path.basename(file); - console.log(`Extension file ${fileBase} is missing.`); - Telemetry.logLanguageServerEvent("missingBinary", { "source": `${fileBase}` }); - } - })); - } - } - return installBinariesExist; -} - -/** Check if the core Json files exists in extension's installation folder */ -export async function checkInstallJsonsExist(): Promise { - let installJsonsExist: boolean = true; - const jsonFiles: string[] = [ - "bin/common.json", - "bin/linux.clang.arm.json", - "bin/linux.clang.arm64.json", - "bin/linux.clang.x64.json", - "bin/linux.clang.x86.json", - "bin/linux.gcc.arm.json", - "bin/linux.gcc.arm64.json", - "bin/linux.gcc.x64.json", - "bin/linux.gcc.x86.json", - "bin/macos.clang.arm.json", - "bin/macos.clang.arm64.json", - "bin/macos.clang.x64.json", - "bin/macos.clang.x86.json", - "bin/macos.gcc.arm.json", - "bin/macos.gcc.arm64.json", - "bin/macos.gcc.x64.json", - "bin/macos.gcc.x86.json", - "bin/windows.clang.arm.json", - "bin/windows.clang.arm64.json", - "bin/windows.clang.x64.json", - "bin/windows.clang.x86.json", - "bin/windows.gcc.arm.json", - "bin/windows.gcc.arm64.json", - "bin/windows.gcc.x64.json", - "bin/windows.gcc.x86.json", - "bin/windows.msvc.arm.json", - "bin/windows.msvc.arm64.json", - "bin/windows.msvc.x64.json", - "bin/windows.msvc.x86.json", - "debugAdapters/bin/cppdbg.ad7Engine.json" - ]; - await Promise.all(jsonFiles.map(async (file) => { - if (!await checkFileExists(path.join(extensionPath, file))) { - installJsonsExist = false; - console.log(`Extension file ${file} is missing.`); - Telemetry.logLanguageServerEvent("missingJson", { "source": `${file}` }); - } - })); - return installJsonsExist; -} - -export async function removeInstallLockFile(): Promise { - await unlinkAsync(path.join(extensionPath, "install.lock")); -} - /** Reads the content of a text file */ export function readFileText(filePath: string, encoding: string = "utf8"): Promise { return new Promise((resolve, reject) => { @@ -664,11 +552,6 @@ export function deleteFile(filePath: string): Promise { }); } -// Get the path of the lock file. This is used to indicate that the platform-specific dependencies have been downloaded. -export function getInstallLockPath(): string { - return getExtensionFilePath("install.lock"); -} - export function getReadmeMessage(): string { const readmePath: string = getExtensionFilePath("README.md"); const readmeMessage: string = localize("refer.read.me", "Please refer to {0} for troubleshooting information. Issues can be created at {1}", readmePath, "https://github.com/Microsoft/vscode-cpptools/issues"); @@ -1303,11 +1186,6 @@ export function isCodespaces(): boolean { return !!process.env["CODESPACES"]; } -export async function checkCuda(): Promise { - const langs: string[] = await vscode.languages.getLanguages(); - supportCuda = langs.findIndex((s) => s === "cuda-cpp") !== -1; -} - // Sequentially Resolve Promises. export function sequentialResolve(items: T[], promiseBuilder: (item: T) => Promise): Promise { return items.reduce(async (previousPromise, nextItem) => { @@ -1359,3 +1237,22 @@ export function findPowerShell(): string | undefined { } } } + +export function getCppToolsTargetPopulation(): TargetPopulation { + // If insiders.flag is present, consider this an insiders build. + // If release.flag is present, consider this a release build. + // Otherwise, consider this an internal build. + if (checkFileExistsSync(getExtensionFilePath("insiders.flag"))) { + return TargetPopulation.Insiders; + } else if (checkFileExistsSync(getExtensionFilePath("release.flag"))) { + return TargetPopulation.Public; + } + return TargetPopulation.Internal; +} + +export function isVsCodeInsiders(): Boolean { + return extensionPath.includes(".vscode-insiders") || + extensionPath.includes(".vscode-server-insiders") || + extensionPath.includes(".vscode-exploration") || + extensionPath.includes(".vscode-server-exploration"); +} diff --git a/Extension/src/githubAPI.ts b/Extension/src/githubAPI.ts deleted file mode 100644 index ca915e6b42..0000000000 --- a/Extension/src/githubAPI.ts +++ /dev/null @@ -1,335 +0,0 @@ -/* -------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All Rights Reserved. - * See 'LICENSE' in the project root for license information. - * ------------------------------------------------------------------------------------------ */ -'use strict'; - -import { PackageVersion } from './packageVersion'; -import * as util from './common'; -import { PlatformInformation } from './platform'; -import { OutgoingHttpHeaders } from 'http'; -import * as vscode from 'vscode'; -import * as telemetry from './telemetry'; - -const testingInsidersVsixInstall: boolean = false; // Change this to true to enable testing of the Insiders vsix installation. -export const releaseDownloadUrl: string = "https://github.com/microsoft/vscode-cpptools/releases"; -/** - * The object representation of a Build Asset. Each Asset corresponds to information about a release file on GitHub. - */ -export interface Asset { - name: string; - browser_download_url: string; -} - -/** - * The object representation of a release in the GitHub API's release JSON. - * Named Build so as to reduce confusion between a "Release" release and "Insiders" release. - */ -export interface Build { - name: string; - assets: Asset[]; -} - -/** -* Search each Asset by name to retrieve the download URL for a VSIX package -* @param vsixName The name of the VSIX to search for -* @return The download URL of the VSIX -*/ -function getVsixDownloadUrl(build: Build, vsixName: string): string { - const asset: Asset | undefined = build.assets.find(asset => asset.name === vsixName); - const downloadUrl: string | null = (asset) ? asset.browser_download_url : null; - if (!downloadUrl) { - throw new Error(`Failed to find VSIX: ${vsixName} in build: ${build.name}`); - } - return downloadUrl; -} - -/** - * Determine whether an object is of type Asset. - * @param input Incoming object. - * @return Whether input is of type Asset. - */ -function isAsset(input: any): input is Asset { - return input && input.name && typeof(input.name) === "string" && - input.browser_download_url && typeof(input.browser_download_url) === "string"; -} - -/** - * Determine whether an object is of type Build. - * @param input Incoming object. - * @return Whether input is of type Build. - */ -function isBuild(input: any): input is Build { - return input && input.name && typeof (input.name) === "string" && isArrayOfAssets(input.assets); -} - -/** - * Determine whether an object is of type Build, and it has 3 or more assets (i.e valid build). - * Note that earlier releases of the extension do not have 3 or greater Assets - * (Mac, Win, Linux). Only call this on more recent Builds. - * @param input Incoming object. - * @return Whether input is a valid build. - */ -function isValidBuild(input: any): input is Build { - return isBuild(input) && input.assets.length >= 3; -} - -/** - * Determine whether an object is of type Asset[]. - * @param input Incoming object. - * @return Whether input is of type Asset[]. - */ -function isArrayOfAssets(input: any): input is Asset[] { - return input instanceof Array && input.every(isAsset); -} - -/** - * Return the most recent released builds. - * @param input Incoming object. - * @return An array of type Build[]. - */ -function getArrayOfBuilds(input: any): Build[] { - const builds: Build[] = []; - if (!input || !(input instanceof Array) || input.length === 0) { - return builds; - } - // Only return the the most recent release and insider builds. - for (let i: number = 0; i < input.length; i++) { - if (isBuild(input[i])) { - builds.push(input[i]); - // the latest "valid" released build - if (input[i].name.indexOf('-') === -1 && isValidBuild(input[i])) { - break; - } - } - } - return builds; -} - -/** - * Match the user's platform information to the VSIX name relevant to them. - * @param info Information about the user's operating system. - * @return VSIX filename for the extension's releases matched to the user's platform. - */ -export function vsixNameForPlatform(info: PlatformInformation): string { - const vsixName: string | undefined = function(platformInfo): string | undefined { - switch (platformInfo.platform) { - case 'win32': - switch (platformInfo.architecture) { - case 'x64': return 'cpptools-win32.vsix'; // TODO: Change to cpptools-win64? - case 'x86': return 'cpptools-win32.vsix'; - case 'arm64': return 'cpptools-win-arm64.vsix'; - default: throw new Error(`Unexpected Windows architecture: ${platformInfo.architecture}`); - } - case 'darwin': - switch (platformInfo.architecture) { - case 'x64': return 'cpptools-osx.vsix'; - case 'arm64': return 'cpptools-osx-arm64.vsix'; - default: throw new Error(`Unexpected macOS architecture: ${platformInfo.architecture}`); - } - default: { - switch (platformInfo.architecture) { - case 'x64': return 'cpptools-linux.vsix'; - case 'arm': return 'cpptools-linux-armhf.vsix'; - case 'arm64': return 'cpptools-linux-aarch64.vsix'; - default: throw new Error(`Unexpected Linux architecture: ${platformInfo.architecture}`); - } - } - } - }(info); - if (!vsixName) { - throw new Error(`Failed to match VSIX name for: ${info.platform}: ${info.architecture}`); - } - return vsixName; -} - -/** - * Interface for return value of getTargetBuildInfo containing the download URL and version of a Build. - */ -export interface BuildInfo { - downloadUrl: string; - name: string; -} - -/** - * Use the GitHub API to retrieve the download URL of the extension version the user should update to, if any. - * @param updateChannel The user's updateChannel setting. - * @param isFromSettingsChange True if the invocation is the result of a settings change. - * @return Download URL for the extension VSIX package that the user should install. If the user - * does not need to update, resolves to undefined. - */ -export async function getTargetBuildInfo(updateChannel: string, isFromSettingsChange: boolean): Promise { - const builds: Build[] | undefined = await getReleaseJson(); - if (!builds || builds.length === 0) { - return undefined; - } - - const userVersion: PackageVersion = new PackageVersion(util.packageJson.version); - const targetBuild: Build | undefined = getTargetBuild(builds, userVersion, updateChannel, isFromSettingsChange); - if (targetBuild === undefined) { - // no action - telemetry.logLanguageServerEvent("UpgradeCheck", { "action": "none" }); - } else if (userVersion.isExtensionVersionGreaterThan(new PackageVersion(targetBuild.name))) { - // downgrade - telemetry.logLanguageServerEvent("UpgradeCheck", { "action": "downgrade", "newVersion": targetBuild.name }); - } else { - // upgrade - telemetry.logLanguageServerEvent("UpgradeCheck", { "action": "upgrade", "newVersion": targetBuild.name }); - } - - if (!targetBuild) { - return undefined; - } - const platformInfo: PlatformInformation = await PlatformInformation.GetPlatformInformation(); - const vsixName: string = vsixNameForPlatform(platformInfo); - const downloadUrl: string = getVsixDownloadUrl(targetBuild, vsixName); - if (!downloadUrl) { - return undefined; - } - return { downloadUrl: downloadUrl, name: targetBuild.name }; - -} - -/** - * Determines whether there exists a Build in the given Build[] that should be installed. - * @param builds The GitHub release list parsed as an array of Builds. - * @param userVersion The verion of the extension that the user is running. - * @param updateChannel The user's updateChannel setting. - * @param isFromSettingsChange True if the invocation is the result of a settings change. - * @return The Build if the user should update to it, otherwise undefined. - */ -export function getTargetBuild(builds: Build[], userVersion: PackageVersion, updateChannel: string, isFromSettingsChange: boolean): Build | undefined { - if (!isFromSettingsChange && !vscode.workspace.getConfiguration("extensions", null).get("autoUpdate")) { - return undefined; - } - const latestVersionOnline: PackageVersion = new PackageVersion(builds[0].name); - // Allows testing pre-releases without accidentally downgrading to the latest version - if ((!testingInsidersVsixInstall && userVersion.suffix && userVersion.suffix !== 'insiders') || - userVersion.isExtensionVersionGreaterThan(latestVersionOnline)) { - return undefined; - } - - // Get predicates to determine the build to install, if any - let needsUpdate: (installed: PackageVersion, target: PackageVersion) => boolean; - let useBuild: (build: Build) => boolean; - if (updateChannel === 'Insiders') { - needsUpdate = (installed: PackageVersion, target: PackageVersion) => testingInsidersVsixInstall || (!target.isEqual(installed)); - // Check if the assets are available - useBuild = isValidBuild; - } else if (updateChannel === 'Default') { - // If the updateChannel switches from 'Insiders' to 'Default', a downgrade to the latest non-insiders release is needed. - needsUpdate = function(installed: PackageVersion, target: PackageVersion): boolean { - return installed.isExtensionVersionGreaterThan(target); }; - // Look for the latest non-insiders released build - useBuild = (build: Build): boolean => build.name.indexOf('-') === -1 && isValidBuild(build); - } else { - throw new Error('Incorrect updateChannel setting provided'); - } - - // Get the build to install - const targetBuild: Build | undefined = builds.find(useBuild); - if (!targetBuild) { - throw new Error('Failed to determine installation candidate'); - } - - // Check current version against target's version to determine if the installation should happen - const targetVersion: PackageVersion = new PackageVersion(targetBuild.name); - if (needsUpdate(userVersion, targetVersion)) { - return targetBuild; - } else { - return undefined; - } -} - -interface Rate { - remaining: number; -} - -interface RateLimit { - rate: Rate; -} - -function isRate(input: any): input is Rate { - return input && util.isNumber(input.remaining); -} - -function isRateLimit(input: any): input is RateLimit { - return input && isRate(input.rate); -} - -async function getRateLimit(): Promise { - const header: OutgoingHttpHeaders = { 'User-Agent': 'vscode-cpptools' }; - try { - const data: string = await util.downloadFileToStr('https://api.github.com/rate_limit', header); - if (!data) { - return undefined; - } - let rateLimit: any; - try { - rateLimit = JSON.parse(data); - } catch (error) { - throw new Error('Failed to parse rate limit JSON'); - } - - if (isRateLimit(rateLimit)) { - return rateLimit; - } else { - throw new Error('Rate limit JSON is not of type RateLimit'); - } - - } catch (errJS) { - const err: NodeJS.ErrnoException = errJS as NodeJS.ErrnoException; - if (err && err.code && err.code !== "ENOENT") { - // Only throw if the user is connected to the Internet. - throw new Error('Failed to download rate limit JSON'); - } - } -} - -async function rateLimitExceeded(): Promise { - const rateLimit: RateLimit | undefined = await getRateLimit(); - return rateLimit !== undefined && rateLimit.rate.remaining <= 0; -} - -/** - * Download and parse the release list JSON from the GitHub API into a Build[]. - * @return Information about the released builds of the C/C++ extension. - */ -async function getReleaseJson(): Promise { - if (await rateLimitExceeded()) { - throw new Error('Failed to stay within GitHub API rate limit'); - } - - // Download release JSON - const releaseUrl: string = 'https://api.github.com/repos/Microsoft/vscode-cpptools/releases'; - const header: OutgoingHttpHeaders = { 'User-Agent': 'vscode-cpptools' }; - - try { - const data: string = await util.downloadFileToStr(releaseUrl, header); - if (!data) { - return undefined; - } - - // Parse the file - let releaseJson: any; - try { - releaseJson = JSON.parse(data); - } catch (error) { - throw new Error('Failed to parse release JSON'); - } - - // Find the latest released builds. - const builds: Build[] = getArrayOfBuilds(releaseJson); - if (!builds || builds.length === 0) { - throw new Error('Release JSON is not of type Build[]'); - } else { - return builds; - } - } catch (errJS) { - const err: NodeJS.ErrnoException = errJS as NodeJS.ErrnoException; - if (err && err.code && err.code !== "ENOENT") { - // Only throw if the user is connected to the Internet. - throw new Error('Failed to download release JSON'); - } - } -} diff --git a/Extension/src/installationInformation.ts b/Extension/src/installationInformation.ts deleted file mode 100644 index 42ab61a5ec..0000000000 --- a/Extension/src/installationInformation.ts +++ /dev/null @@ -1,38 +0,0 @@ -/* -------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All Rights Reserved. - * See 'LICENSE' in the project root for license information. - * ------------------------------------------------------------------------------------------ */ - -export enum InstallationType { - Online, - Offline -} - -export class InstallationInformation { - stage?: string; - type?: InstallationType; - hasError: boolean; - telemetryProperties: { [key: string]: string }; - - constructor() { - this.hasError = false; - this.telemetryProperties = {}; - } -} - -let installBlob: InstallationInformation; - -export function getInstallationInformation(): InstallationInformation { - if (!installBlob) { - installBlob = new InstallationInformation(); - } - return installBlob; -} - -export function setInstallationStage(stage: string): void { - getInstallationInformation().stage = stage; -} - -export function setInstallationType(type: InstallationType): void { - getInstallationInformation().type = type; -} diff --git a/Extension/src/main.ts b/Extension/src/main.ts index 87566a8797..26135f946d 100644 --- a/Extension/src/main.ts +++ b/Extension/src/main.ts @@ -5,7 +5,6 @@ 'use strict'; import * as DebuggerExtension from './Debugger/extension'; -import * as fs from 'fs'; import * as LanguageServer from './LanguageServer/extension'; import * as os from 'os'; import * as path from 'path'; @@ -13,17 +12,13 @@ import * as Telemetry from './telemetry'; import * as util from './common'; import * as vscode from 'vscode'; import * as nls from 'vscode-nls'; -import { PersistentState } from './LanguageServer/persistentState'; import { CppToolsApi, CppToolsExtension } from 'vscode-cpptools'; -import { getTemporaryCommandRegistrarInstance, initializeTemporaryCommandRegistrar } from './commands'; -import { PlatformInformation, GetOSName } from './platform'; -import { PackageManager, PackageManagerError, IPackage, VersionsMatch, ArchitecturesMatch, PlatformsMatch } from './packageManager'; -import { getInstallationInformation, InstallationInformation, setInstallationStage, setInstallationType, InstallationType } from './installationInformation'; -import { Logger, getOutputChannelLogger, showOutputChannel } from './logger'; -import { CppTools1, NullCppTools } from './cppTools1'; +import { PlatformInformation } from './platform'; +import { CppTools1 } from './cppTools1'; import { CppSettings } from './LanguageServer/settings'; -import { vsixNameForPlatform, releaseDownloadUrl } from './githubAPI'; +import { PersistentState } from './LanguageServer/persistentState'; +import { TargetPopulation } from 'vscode-tas-client'; nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })(); const localize: nls.LocalizeFunc = nls.loadMessageBundle(); @@ -34,22 +29,7 @@ let reloadMessageShown: boolean = false; const disposables: vscode.Disposable[] = []; export async function activate(context: vscode.ExtensionContext): Promise { - await util.checkCuda(); - - let errMsg: string = ""; - const arch: string = PlatformInformation.GetArchitecture(); - if (arch !== 'x64' && (process.platform !== 'win32' || (arch !== 'x86' && arch !== 'arm64')) && ((process.platform === 'win32' || process.platform === 'darwin') || (arch !== 'arm' && arch !== 'arm64')) && (process.platform !== 'darwin' || arch !== 'arm64')) { - errMsg = localize("architecture.not.supported", "Architecture {0} is not supported. ", String(arch)); - } else if (process.platform === 'linux' && await util.checkDirectoryExists('/etc/alpine-release')) { - errMsg = localize("apline.containers.not.supported", "Alpine containers are not supported."); - } - if (errMsg) { - vscode.window.showErrorMessage(errMsg); - return new NullCppTools(); - } - util.setExtensionContext(context); - initializeTemporaryCommandRegistrar(); Telemetry.activate(); util.setProgress(0); @@ -73,62 +53,36 @@ export async function activate(context: vscode.ExtensionContext): PromiseJSON.parse(fileContents); - } catch (error) { - // If the contents of install.lock are corrupted, treat as if it's empty. - } - } + // Always attempt to make the binaries executable, not just when installedVersion changes. + // The user may have uninstalled and reinstalled the same version. + await makeBinariesExecutable(); - // Check the main binaries files to declare if the extension has been installed successfully. - if (process.platform !== installedPlatformAndArchitecture.platform - || (arch !== installedPlatformAndArchitecture.architecture - && !(process.platform === "win32" - // On x64 Windows, allow x86 binaries. - && ((arch === "x64" && installedPlatformAndArchitecture.architecture === "x86") - // On arm64 Windows, allow x86 or x64 binaries. - || (arch === "arm64" && ((installedPlatformAndArchitecture.architecture === "x86") || (installedPlatformAndArchitecture.architecture === "x64"))))) - // On arm64 macOS, allow x64 binaries. - && !(process.platform === "darwin" && arch === "arm64" && installedPlatformAndArchitecture.architecture === "x64"))) { - // Check if the correct offline/insiders vsix is installed on the correct platform. - const platformInfo: PlatformInformation = await PlatformInformation.GetPlatformInformation(); - const vsixName: string = vsixNameForPlatform(platformInfo); - const downloadLink: string = localize("download.button", "Go to Download Page"); - errMsg = localize("native.binaries.not.supported", "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", GetOSName(installedPlatformAndArchitecture.platform), installedPlatformAndArchitecture.architecture, vsixName); - vscode.window.showErrorMessage(errMsg, downloadLink).then(async (selection) => { - if (selection === downloadLink) { - vscode.env.openExternal(vscode.Uri.parse(releaseDownloadUrl)); - } - }); - } else if (!(await util.checkInstallBinariesExist())) { - errMsg = localize("extension.installation.failed", "The C/C++ extension failed to install successfully. You will need to repair or reinstall the extension for C/C++ language features to function properly."); - const reload: string = localize("remove.extension", "Attempt to Repair"); - vscode.window.showErrorMessage(errMsg, reload).then(async (value?: string) => { - if (value === reload) { - await util.removeInstallLockFile(); - vscode.commands.executeCommand("workbench.action.reloadWindow"); + // Notify users if debugging may not be supported on their OS. + util.checkDistro(info); + + const settings: CppSettings = new CppSettings((vscode.workspace.workspaceFolders && vscode.workspace.workspaceFolders.length > 0) ? vscode.workspace.workspaceFolders[0]?.uri : undefined); + if (settings.intelliSenseEngine === "Disabled") { + languageServiceDisabled = true; + disposables.push(vscode.workspace.onDidChangeConfiguration(() => { + if (!reloadMessageShown && settings.intelliSenseEngine !== "Disabled") { + reloadMessageShown = true; + util.promptForReloadWindowDueToSettingsChange(); } - }); - } else if (!(await util.checkInstallJsonsExist())) { - // Check the Json files to declare if the extension has been installed successfully. - errMsg = localize("json.files.missing", "The C/C++ extension failed to install successfully. You will need to reinstall the extension for C/C++ language features to function properly."); - const downloadLink: string = localize("download.button", "Go to Download Page"); - vscode.window.showErrorMessage(errMsg, downloadLink).then(async (selection) => { - if (selection === downloadLink) { - vscode.env.openExternal(vscode.Uri.parse(releaseDownloadUrl)); + })); + } else { + disposables.push(vscode.workspace.onDidChangeConfiguration(() => { + if (!reloadMessageShown && settings.intelliSenseEngine === "Disabled") { + reloadMessageShown = true; + util.promptForReloadWindowDueToSettingsChange(); } - }); + })); } + LanguageServer.activate(); + + HandleInsidersPrompt(); return cppTools; } @@ -144,335 +98,78 @@ export function deactivate(): Thenable { return LanguageServer.deactivate(); } -async function processRuntimeDependencies(): Promise { - const installLockExists: boolean = await util.checkInstallLockFile(); - - setInstallationStage('getPlatformInfo'); - const info: PlatformInformation = await PlatformInformation.GetPlatformInformation(); - - let forceOnlineInstall: boolean = false; - if (info.platform === "darwin" && info.version) { - const darwinVersion: PersistentState = new PersistentState("Cpp.darwinVersion", info.version); - - // macOS version has changed - if (darwinVersion.Value !== info.version) { - const highSierraOrLowerRegex: RegExp = new RegExp('10\\.(1[0-3]|[0-9])(\\..*)*$'); - const lldbMiFolderPath: string = util.getExtensionFilePath('./debugAdapters/lldb-mi'); - - // For macOS and if a user has upgraded their OS, check to see if we are on Mojave or later - // and that the debugAdapters/lldb-mi folder exists. This will force a online install to get the correct binaries. - if (!highSierraOrLowerRegex.test(info.version) && - !await util.checkDirectoryExists(lldbMiFolderPath)) { - - forceOnlineInstall = true; - - setInstallationStage('cleanUpUnusedBinaries'); - await cleanUpUnusedBinaries(info); - } - } - } - - const doOfflineInstall: boolean = installLockExists && !forceOnlineInstall; - - if (doOfflineInstall) { - // Offline Scenario: Lock file exists but package.json has not had its activationEvents rewritten. - if (util.packageJson.activationEvents && util.packageJson.activationEvents.length === 1) { - try { - await offlineInstallation(info); - } catch (error) { - getOutputChannelLogger().showErrorMessage(localize('initialization.failed', 'The installation of the C/C++ extension failed. Please see the output window for more information.')); - showOutputChannel(); - - // Send the failure telemetry since postInstall will not be called. - sendTelemetry(info); - } - } else { - // The extension has been installed and activated before. - await finalizeExtensionActivation(); - } - } else { - // No lock file, need to download and install dependencies. - try { - await onlineInstallation(info); - } catch (errJS) { - const error: Error = errJS as Error; - handleError(error); - - // Send the failure telemetry since postInstall will not be called. - sendTelemetry(info); - } - } -} - -async function offlineInstallation(info: PlatformInformation): Promise { - setInstallationType(InstallationType.Offline); - - setInstallationStage('cleanUpUnusedBinaries'); - await cleanUpUnusedBinaries(info); - - setInstallationStage('makeOfflineBinariesExecutable'); - await makeOfflineBinariesExecutable(info); - - setInstallationStage('rewriteManifest'); - await rewriteManifest(); - - setInstallationStage('postInstall'); - await postInstall(info); -} - -async function onlineInstallation(info: PlatformInformation): Promise { - setInstallationType(InstallationType.Online); - - await downloadAndInstallPackages(info); - - setInstallationStage('rewriteManifest'); - await rewriteManifest(); - - setInstallationStage('touchInstallLockFile'); - await touchInstallLockFile(info); - - setInstallationStage('postInstall'); - await postInstall(info); -} - -async function downloadAndInstallPackages(info: PlatformInformation): Promise { - const outputChannelLogger: Logger = getOutputChannelLogger(); - outputChannelLogger.appendLine(localize("updating.dependencies", "Updating C/C++ dependencies...")); - - const packageManager: PackageManager = new PackageManager(info, outputChannelLogger); - - return vscode.window.withProgress({ - location: vscode.ProgressLocation.Notification, - cancellable: false - }, async (progress, token) => { - - progress.report({ message: "C/C++ Extension" , increment: 0}); - outputChannelLogger.appendLine(''); - setInstallationStage('downloadPackages'); - await packageManager.DownloadPackages(progress); - - outputChannelLogger.appendLine(''); - setInstallationStage('installPackages'); - await packageManager.InstallPackages(progress); - }); -} - -function packageMatchesPlatform(pkg: IPackage, info: PlatformInformation): boolean { - return PlatformsMatch(pkg, info) && - (pkg.architectures === undefined || ArchitecturesMatch(pkg, info)) && - VersionsMatch(pkg, info); -} - -function invalidPackageVersion(pkg: IPackage, info: PlatformInformation): boolean { - return PlatformsMatch(pkg, info) && - (pkg.architectures === undefined || ArchitecturesMatch(pkg, info)) && - !VersionsMatch(pkg, info); -} - -async function makeOfflineBinariesExecutable(info: PlatformInformation): Promise { - const promises: Thenable[] = []; - const packages: IPackage[] = util.packageJson["runtimeDependencies"]; - packages.forEach(p => { - if (p.binaries && p.binaries.length > 0 && - packageMatchesPlatform(p, info)) { - p.binaries.forEach(binary => promises.push(util.allowExecution(util.getExtensionFilePath(binary)))); - } - }); - await Promise.all(promises); -} - -async function cleanUpUnusedBinaries(info: PlatformInformation): Promise { +async function makeBinariesExecutable(): Promise { const promises: Thenable[] = []; - const packages: IPackage[] = util.packageJson["runtimeDependencies"]; - const logger: Logger = getOutputChannelLogger(); - - packages.forEach(p => { - if (p.binaries && p.binaries.length > 0 && - invalidPackageVersion(p, info)) { - p.binaries.forEach(binary => { - const path: string = util.getExtensionFilePath(binary); - if (fs.existsSync(path)) { - logger.appendLine(`deleting: ${path}`); - promises.push(util.deleteFile(path)); - } - }); - } - }); - await Promise.all(promises); -} - -function touchInstallLockFile(info: PlatformInformation): Promise { - return util.touchInstallLockFile(info); -} - -function handleError(error: Error): void { - const installationInformation: InstallationInformation = getInstallationInformation(); - installationInformation.hasError = true; - installationInformation.telemetryProperties['stage'] = installationInformation.stage ?? ""; - let errorMessage: string; - - if (error instanceof PackageManagerError) { - const packageError: PackageManagerError = error; - - installationInformation.telemetryProperties['error.methodName'] = packageError.methodName; - installationInformation.telemetryProperties['error.message'] = packageError.message; - - if (packageError.innerError) { - errorMessage = packageError.innerError.toString(); - installationInformation.telemetryProperties['error.innerError'] = util.removePotentialPII(errorMessage); - } else { - errorMessage = packageError.localizedMessageText; - } - - if (packageError.pkg) { - installationInformation.telemetryProperties['error.packageName'] = packageError.pkg.description; - installationInformation.telemetryProperties['error.packageUrl'] = packageError.pkg.url; - } - - if (packageError.errorCode) { - installationInformation.telemetryProperties['error.errorCode'] = util.removePotentialPII(packageError.errorCode); + if (process.platform !== 'win32') { + const commonBinaries: string[] = [ + "./bin/cpptools", + "./bin/cpptools-srv", + "./LLVM/bin/clang-format", + "./LLVM/bin/clang-tidy", + "./debugAdapters/bin/OpenDebugAD7" + ]; + commonBinaries.forEach(binary => promises.push(util.allowExecution(util.getExtensionFilePath(binary)))); + if (process.platform === "darwin") { + const macBinaries: string[] = [ + "./debugAdapters/lldb-mi/bin/lldb-mi", + "./debugAdapters/lldb/bin/debugserver", + "./debugAdapters/lldb/bin/lldb-mi", + "./debugAdapters/lldb/bin/lldb-argdumper", + "./debugAdapters/lldb/bin/lldb-launcher" + ]; + macBinaries.forEach(binary => promises.push(util.allowExecution(util.getExtensionFilePath(binary)))); } - } else { - errorMessage = error.toString(); - installationInformation.telemetryProperties['error.toString'] = util.removePotentialPII(errorMessage); - } - - const outputChannelLogger: Logger = getOutputChannelLogger(); - if (installationInformation.stage === 'downloadPackages') { - outputChannelLogger.appendLine(""); } - // Show the actual message and not the sanitized one - outputChannelLogger.appendLine(localize('failed.at.stage', "Failed at stage: {0}", installationInformation.stage)); - outputChannelLogger.appendLine(errorMessage); - outputChannelLogger.appendLine(""); - outputChannelLogger.appendLine(localize('failed.at.stage2', 'If you work in an offline environment or repeatedly see this error, try downloading a version of the extension with all the dependencies pre-included from {0}, then use the "Install from VSIX" command in VS Code to install it.', releaseDownloadUrl)); - showOutputChannel(); + await Promise.all(promises); } -function sendTelemetry(info: PlatformInformation): boolean { - const installBlob: InstallationInformation = getInstallationInformation(); - const success: boolean = !installBlob.hasError; - - installBlob.telemetryProperties['success'] = success.toString(); - installBlob.telemetryProperties['type'] = installBlob.type === InstallationType.Online ? "online" : "offline"; - +function sendTelemetry(info: PlatformInformation): void { + const telemetryProperties: { [key: string]: string } = {}; if (info.distribution) { - installBlob.telemetryProperties['linuxDistroName'] = info.distribution.name; - installBlob.telemetryProperties['linuxDistroVersion'] = info.distribution.version; - } - - if (success) { - util.setProgress(util.getProgressInstallSuccess()); + telemetryProperties['linuxDistroName'] = info.distribution.name; + telemetryProperties['linuxDistroVersion'] = info.distribution.version; } - - installBlob.telemetryProperties['osArchitecture'] = os.arch(); - installBlob.telemetryProperties['infoArchitecture'] = info.architecture; - - Telemetry.logDebuggerEvent("acquisition", installBlob.telemetryProperties); - - return success; -} - -async function postInstall(info: PlatformInformation): Promise { - const outputChannelLogger: Logger = getOutputChannelLogger(); - outputChannelLogger.appendLine(""); - outputChannelLogger.appendLine(localize('finished.installing.dependencies', "Finished installing dependencies")); - outputChannelLogger.appendLine(""); - - const installSuccess: boolean = sendTelemetry(info); - - // If there is a download failure, we shouldn't continue activating the extension in some broken state. - if (!installSuccess) { - throw new Error(localize("failed.installing.dependencies", "Failed installing dependencies")); - } else { - // Notify users if debugging may not be supported on their OS. - util.checkDistro(info); - - return finalizeExtensionActivation(); - } -} - -async function finalizeExtensionActivation(): Promise { - const settings: CppSettings = new CppSettings((vscode.workspace.workspaceFolders && vscode.workspace.workspaceFolders.length > 0) ? vscode.workspace.workspaceFolders[0]?.uri : undefined); - if (settings.intelliSenseEngine === "Disabled") { - languageServiceDisabled = true; - getTemporaryCommandRegistrarInstance().disableLanguageServer(); - disposables.push(vscode.workspace.onDidChangeConfiguration(() => { - if (!reloadMessageShown && settings.intelliSenseEngine !== "Disabled") { - reloadMessageShown = true; - util.promptForReloadWindowDueToSettingsChange(); + telemetryProperties['osArchitecture'] = os.arch(); + telemetryProperties['infoArchitecture'] = info.architecture; + Telemetry.logDebuggerEvent("acquisition", telemetryProperties); +} + +export function HandleInsidersPrompt(): void { + // Only display this prompt to users who have updateChannel configured for Insiders, + // and who are not already configured to receive pre-release extensions. + + // Skip the prompt if using an Insiders build of VS Code, as it will default to using pre-release extensions. + if (!util.isVsCodeInsiders()) { + const targetPopulation: TargetPopulation = util.getCppToolsTargetPopulation(); + // Skip the prompt if already using an insiders build of cpptools. + if (targetPopulation === TargetPopulation.Public) { + const settings: CppSettings = new CppSettings(); + const displayedInsidersPrompt: PersistentState = new PersistentState("CPP.displayedInsidersPrompt", false); + // Skip the prompt if updateChannel was not set to Insiders. + if (settings.updateChannel === "Insiders") { + if (!displayedInsidersPrompt.Value) { + displayedInsidersPrompt.Value = true; + const message: string = localize('updateChannel.changed', "The `C_Cpp.updateChannel` setting is deprecated. Do you want to enable install of pre-releases of the C/C++ extension via the Marketplace?"); + const yes: string = localize("yes.button", "Yes"); + const no: string = localize("no.button", "No"); + vscode.window.showInformationMessage(message, yes, no).then((selection) => { + switch (selection) { + case yes: + vscode.commands.executeCommand("workbench.extensions.installExtension", "ms-vscode.cpptools", { installPreReleaseVersion: true }); + break; + case no: + break; + default: + break; + } + }); + } + } else { + // Reset persistent value, so we prompt again if they switch to "Insiders" again. + if (displayedInsidersPrompt.Value) { + displayedInsidersPrompt.Value = false; + } } - })); - return; - } - disposables.push(vscode.workspace.onDidChangeConfiguration(() => { - if (!reloadMessageShown && settings.intelliSenseEngine === "Disabled") { - reloadMessageShown = true; - util.promptForReloadWindowDueToSettingsChange(); - } - })); - getTemporaryCommandRegistrarInstance().activateLanguageServer(); -} - -function rewriteManifest(): Promise { - // Replace activationEvents with the events that the extension should be activated for subsequent sessions. - const packageJson: any = util.getRawPackageJson(); - - packageJson.activationEvents = [ - "onLanguage:c", - "onLanguage:cpp", - "onLanguage:cuda-cpp", - "onCommand:extension.pickNativeProcess", - "onCommand:extension.pickRemoteNativeProcess", - "onCommand:C_Cpp.BuildAndDebugActiveFile", - "onCommand:C_Cpp.RestartIntelliSenseForFile", - "onCommand:C_Cpp.ConfigurationEditJSON", - "onCommand:C_Cpp.ConfigurationEditUI", - "onCommand:C_Cpp.ConfigurationSelect", - "onCommand:C_Cpp.ConfigurationProviderSelect", - "onCommand:C_Cpp.SwitchHeaderSource", - "onCommand:C_Cpp.EnableErrorSquiggles", - "onCommand:C_Cpp.DisableErrorSquiggles", - "onCommand:C_Cpp.ToggleIncludeFallback", - "onCommand:C_Cpp.ToggleDimInactiveRegions", - "onCommand:C_Cpp.ResetDatabase", - "onCommand:C_Cpp.TakeSurvey", - "onCommand:C_Cpp.LogDiagnostics", - "onCommand:C_Cpp.RescanWorkspace", - "onCommand:C_Cpp.VcpkgClipboardInstallSuggested", - "onCommand:C_Cpp.VcpkgOnlineHelpSuggested", - "onCommand:C_Cpp.GenerateEditorConfig", - "onCommand:C_Cpp.GoToNextDirectiveInGroup", - "onCommand:C_Cpp.GoToPrevDirectiveInGroup", - "onCommand:C_Cpp.CheckForCompiler", - "onCommand:C_Cpp.RunCodeAnalysisOnActiveFile", - "onCommand:C_Cpp.RunCodeAnalysisOnOpenFiles", - "onCommand:C_Cpp.RunCodeAnalysisOnAllFiles", - "onCommand:C_Cpp.ClearCodeAnalysisSquiggles", - "onDebugInitialConfigurations", - "onDebugResolve:cppdbg", - "onDebugResolve:cppvsdbg", - "workspaceContains:/.vscode/c_cpp_properties.json", - "onFileSystem:cpptools-schema" - ]; - - let doTouchExtension: boolean = false; - - const packageJsonPath: string = util.getExtensionFilePath("package.json"); - if (packageJsonPath.includes(".vscode-insiders") || - packageJsonPath.includes(".vscode-server-insiders") || - packageJsonPath.includes(".vscode-exploration") || - packageJsonPath.includes(".vscode-server-exploration")) { - if (packageJson.contributes.configuration.properties['C_Cpp.updateChannel'].default === 'Default') { - packageJson.contributes.configuration.properties['C_Cpp.updateChannel'].default = 'Insiders'; - doTouchExtension = true; } } - - return util.writeFileText(util.getPackageJsonPath(), util.stringifyPackageJson(packageJson)).then(() => { - if (doTouchExtension) { - // This is required to prevent VS Code from using the cached version with the old updateChannel setting. - util.touchExtensionFolder(); - } - }); } diff --git a/Extension/src/packageManager.ts b/Extension/src/packageManager.ts deleted file mode 100644 index 5daf135838..0000000000 --- a/Extension/src/packageManager.ts +++ /dev/null @@ -1,530 +0,0 @@ -/* -------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All Rights Reserved. - * See 'LICENSE' in the project root for license information. - * ------------------------------------------------------------------------------------------ */ - -import * as fs from 'fs'; -import * as net from 'net'; -import * as https from 'https'; -import * as path from 'path'; -import * as vscode from 'vscode'; -import * as url from 'url'; -import * as tmp from 'tmp'; -import * as yauzl from 'yauzl'; -import * as mkdirp from 'mkdirp'; - -import * as util from './common'; -import { PlatformInformation } from './platform'; -import * as Telemetry from './telemetry'; -import { IncomingMessage, ClientRequest } from 'http'; -import { Logger } from './logger'; -import * as nls from 'vscode-nls'; -import { Readable } from 'stream'; -import * as crypto from 'crypto'; - -nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })(); -const localize: nls.LocalizeFunc = nls.loadMessageBundle(); - -export function isValidPackage(buffer: Buffer, integrity: string): boolean { - if (integrity && integrity.length > 0) { - const hash: crypto.Hash = crypto.createHash('sha256'); - hash.update(buffer); - const value: string = hash.digest('hex').toUpperCase(); - return (value === integrity.toUpperCase()); - } - // No integrity has been specified - return false; -} - -export interface IPackage { - // Description of the package - description: string; - - // URL of the package - url: string; - - // Platforms for which the package should be downloaded - platforms: string[]; - - // Architectures for which the package is applicable - architectures: string[]; - - // OS Version regex to check if package is applicable - versionRegex: string; - - // A flag to indicate if 'versionRegex' should match or not match. - // Required if versionRegex is used. Default is false. - matchVersion: boolean; - - // Binaries in the package that should be executable when deployed - binaries: string[]; - - // Internal location to which the package was downloaded - tmpFile: tmp.FileResult; - - // sha256 hash of the package - integrity: string; -} - -export class PackageManagerError extends Error { - public localizedMessageText: string; - - constructor( - public message: string, - public localizedMessage: string, - public methodName: string, - public pkg: IPackage | null = null, - public innerError: Error | null = null, - public errorCode: string = '') { - super(message); - this.localizedMessageText = localizedMessage; - } -} - -export class PackageManagerWebResponseError extends PackageManagerError { - constructor( - public socket: net.Socket, - public message: string, - public localizedMessage: string, - public methodName: string, - public pkg: IPackage | null = null, - public innerError: Error | null = null, - public errorCode: string = '') { - super(message, localizedMessage, methodName, pkg, innerError, errorCode); - } -} - -export class PackageManager { - private allPackages?: IPackage[]; - - public constructor( - private platformInfo: PlatformInformation, - private outputChannel?: Logger) { - // Ensure our temp files get cleaned up in case of error - tmp.setGracefulCleanup(); - } - - public async DownloadPackages(progress: vscode.Progress<{ message?: string; increment?: number }>): Promise { - const packages: IPackage[] = await this.GetPackages(); - let count: number = 1; - return util.sequentialResolve(packages, async (pkg): Promise => { - progress.report({ message: localize("downloading.progress.description", "Downloading {0}", pkg.description), increment: this.GetIncrement(count, packages.length) }); - count += 1; - await this.DownloadPackage(pkg); - }); - } - - public async InstallPackages(progress: vscode.Progress<{ message?: string; increment?: number }>): Promise { - const packages: IPackage[] = await this.GetPackages(); - let count: number = 1; - return util.sequentialResolve(packages, async (pkg): Promise => { - progress.report({ message: localize("installing.progress.description", "Installing {0}", pkg.description), increment: this.GetIncrement(count, packages.length) }); - count += 1; - await this.InstallPackage(pkg); - }); - - } - - private GetIncrement(curStep: number, totalSteps: number): number { - // The first half of the progress bar is assigned to download progress, - // and the second half of the progress bar is assigned to install progress. - const maxIncrement: number = 100 / 2; - const increment: number = Math.floor(maxIncrement / totalSteps); - return (curStep !== totalSteps) ? increment : maxIncrement - (totalSteps - 1) * increment; - } - - public async GetPackages(): Promise { - const list: IPackage[] = await this.GetPackageList(); - return list.filter((value, index, array) => ArchitecturesMatch(value, this.platformInfo) && - PlatformsMatch(value, this.platformInfo) && - VersionsMatch(value, this.platformInfo) - ); - } - - private GetPackageList(): Promise { - return new Promise((resolve, reject) => { - if (!this.allPackages) { - if (util.packageJson.runtimeDependencies) { - this.allPackages = util.packageJson.runtimeDependencies; - - // Convert relative binary paths to absolute - for (const pkg of this.allPackages) { - if (pkg.binaries) { - pkg.binaries = pkg.binaries.map((value) => util.getExtensionFilePath(value)); - } - } - - resolve(this.allPackages); - } else { - reject(new PackageManagerError("Package manifest does not exist", localize("package.manager.missing", 'Package manifest does not exist'), 'GetPackageList')); - } - } else { - resolve(this.allPackages); - } - }); - } - - private async DownloadPackage(pkg: IPackage): Promise { - this.AppendChannel(localize("downloading.package", "Downloading package '{0}' ", pkg.description)); - - const tmpResult: tmp.FileResult = await this.CreateTempFile(pkg); - await this.DownloadPackageWithRetries(pkg, tmpResult); - } - - private async CreateTempFile(pkg: IPackage): Promise { - return new Promise((resolve, reject) => { - tmp.file({ prefix: "package-" }, (err, path, fd, cleanupCallback) => { - if (err) { - return reject(new PackageManagerError("Error from temp.file", localize("error.from", 'Error from {0}', "temp.file"), 'DownloadPackage', pkg, err)); - } - - return resolve({ name: path, fd: fd, removeCallback: cleanupCallback }); - }); - }); - } - - private async DownloadPackageWithRetries(pkg: IPackage, tmpResult: tmp.FileResult): Promise { - pkg.tmpFile = tmpResult; - - let success: boolean = false; - let lastError: Error | null = null; - let retryCount: number = 0; - const MAX_RETRIES: number = 10; - - // Retry the download at most MAX_RETRIES times with 2-32 seconds delay. - do { - try { - await this.DownloadFile(pkg.url, pkg, retryCount); - success = true; - } catch (errJS) { - const error: Error = errJS as Error; - retryCount += 1; - lastError = error; - if (retryCount >= MAX_RETRIES) { - this.AppendChannel(" " + localize("failed.download.url", "Failed to download {0}", pkg.url)); - throw error; - } else { - this.AppendChannel(" " + localize("failed.retrying", "Failed. Retrying...")); - continue; - } - } - } while (!success && retryCount < MAX_RETRIES); - - this.AppendLineChannel(" " + localize("done", "Done!")); - if (retryCount !== 0) { - // Log telemetry to see if retrying helps. - const telemetryProperties: { [key: string]: string } = {}; - telemetryProperties["success"] = success ? `OnRetry${retryCount}` : 'false'; - if (lastError instanceof PackageManagerError) { - const packageError: PackageManagerError = lastError; - telemetryProperties['error.methodName'] = packageError.methodName; - telemetryProperties['error.message'] = packageError.message; - if (packageError.pkg) { - telemetryProperties['error.packageName'] = packageError.pkg.description; - telemetryProperties['error.packageUrl'] = packageError.pkg.url; - } - if (packageError.errorCode) { - telemetryProperties['error.errorCode'] = packageError.errorCode; - } - } - Telemetry.logDebuggerEvent("acquisition", telemetryProperties); - } - } - - // reloadCpptoolsJson in main.ts uses ~25% of this function. - private DownloadFile(urlString: any, pkg: IPackage, delay: number): Promise { - const parsedUrl: url.Url = url.parse(urlString); - const proxyStrictSSL: any = vscode.workspace.getConfiguration().get("http.proxyStrictSSL", true); - - const options: https.RequestOptions = { - host: parsedUrl.host, - path: parsedUrl.path, - agent: util.getHttpsProxyAgent(), - rejectUnauthorized: proxyStrictSSL - }; - - const buffers: Buffer[] = []; - return new Promise((resolve, reject) => { - let secondsDelay: number = Math.min(Math.pow(2, delay), 15); - if (secondsDelay === 1) { - secondsDelay = 0; - } - if (secondsDelay > 4) { - this.AppendChannel(localize("waiting.seconds", "Waiting {0} seconds...", secondsDelay)); - } - setTimeout(() => { - if (!pkg.tmpFile || pkg.tmpFile.fd === 0) { - return reject(new PackageManagerError('Temporary Package file unavailable', localize("temp.package.unavailable", 'Temporary Package file unavailable'), 'DownloadFile', pkg)); - } - - const handleHttpResponse: (response: IncomingMessage) => void = (response: IncomingMessage) => { - if (response.statusCode === 301 || response.statusCode === 302) { - // Redirect - download from new location - let redirectUrl: string | string[]; - if (typeof response.headers.location === "string") { - redirectUrl = response.headers.location; - } else { - if (!response.headers.location) { - return reject(new PackageManagerError('Invalid download location received', localize("invalid.download.location.received", 'Invalid download location received'), 'DownloadFile', pkg)); - } - redirectUrl = response.headers.location[0]; - } - return resolve(this.DownloadFile(redirectUrl, pkg, 0)); - } else if (response.statusCode !== 200) { - if (response.statusCode === undefined || response.statusCode === null) { - return reject(new PackageManagerError('Invalid response code received', localize("invalid.response.code.received", 'Invalid response code received'), 'DownloadFile', pkg)); - } - // Download failed - print error message - const error: Error = new Error(localize("failed.web.error", "failed (error code '{0}')", response.statusCode)); - return reject(new PackageManagerWebResponseError(response.socket, 'HTTP/HTTPS Response Error', localize("web.response.error", 'HTTP/HTTPS Response Error'), 'DownloadFile', pkg, error, response.statusCode.toString())); - } else { - // Downloading - hook up events - let contentLength: any = response.headers['content-length']; - if (typeof response.headers['content-length'] === "string") { - contentLength = response.headers['content-length']; - } else { - if (response.headers['content-length'] === undefined || response.headers['content-length'] === null) { - return reject(new PackageManagerError('Invalid content length location received', localize("invalid.content.length.received", 'Invalid content length location received'), 'DownloadFile', pkg)); - } - contentLength = response.headers['content-length'][0]; - } - const packageSize: number = parseInt(contentLength, 10); - const downloadPercentage: number = 0; - let dots: number = 0; - const tmpFile: fs.WriteStream = fs.createWriteStream("", { fd: pkg.tmpFile.fd }); - - this.AppendChannel(`(${Math.ceil(packageSize / 1024)} KB) `); - - response.on('data', (data) => { - buffers.push(data); - // Update dots after package name in output console - const newDots: number = Math.ceil(downloadPercentage / 5); - if (newDots > dots) { - this.AppendChannel(".".repeat(newDots - dots)); - dots = newDots; - } - }); - - response.on('end', () => { - const packageBuffer: Buffer = Buffer.concat(buffers); - if (isValidPackage(packageBuffer, pkg.integrity)) { - resolve(); - } else { - reject(new PackageManagerError('Invalid content received. Hash is incorrect.', localize("invalid.content.received", 'Invalid content received. Hash is incorrect.'), 'DownloadFile', pkg)); - } - }); - - response.on('error', (errJS) => { - const error: Error = errJS as Error; - reject(new PackageManagerWebResponseError(response.socket, 'HTTP/HTTPS Response Error', localize("web.response.error", 'HTTP/HTTPS Response Error'), 'DownloadFile', pkg, error, error.name)); - }); - - // Begin piping data from the response to the package file - response.pipe(tmpFile, { end: false }); - } - }; - - const request: ClientRequest = https.request(options, handleHttpResponse); - - request.on('error', (error) => - reject(new PackageManagerError( - 'HTTP/HTTPS Request error' + (urlString.includes("fwlink") ? ": fwlink" : ""), - localize("web.request.error", 'HTTP/HTTPS Request error') + (urlString.includes("fwlink") ? ": fwlink" : ""), - 'DownloadFile', pkg, error, error.message))); - - // Execute the request - request.end(); - }, secondsDelay * 1000); - }); - } - - private InstallPackage(pkg: IPackage): Promise { - this.AppendLineChannel(localize("installing.package", "Installing package '{0}'", pkg.description)); - - return new Promise((resolve, reject) => { - if (!pkg.tmpFile || pkg.tmpFile.fd === 0) { - return reject(new PackageManagerError('Downloaded file unavailable', localize("downloaded.unavailable", 'Downloaded file unavailable'), 'InstallPackage', pkg)); - } - - yauzl.fromFd(pkg.tmpFile.fd, { lazyEntries: true, autoClose: true }, (err, zipfile) => { - if (err || !zipfile) { - return reject(new PackageManagerError('Zip file error', localize("zip.file.error", 'Zip file error'), 'InstallPackage', pkg, err)); - } - - // setup zip file events - - // Keep track of any error that occurs, but don't resolve or reject the promise until the file is closed. - let pendingError: Error | undefined; - zipfile.on('close', () => { - if (!pendingError) { - resolve(); - } else { - reject(pendingError); - } - }); - - zipfile.on('error', err => { - // Don't call reject() a second time. - // Errors can also arise from readStream and writeStream. - if (!pendingError) { - pendingError = new PackageManagerError('Zip file error', localize("zip.file.error", 'Zip file error'), 'InstallPackage', pkg, err, err.code); - zipfile.close(); - } - }); - - zipfile.on('entry', (entry: yauzl.Entry) => { - const absoluteEntryPath: string = util.getExtensionFilePath(entry.fileName); - - if (entry.fileName.endsWith("/")) { - // Directory - create it - mkdirp(absoluteEntryPath, { mode: 0o775 }, (err) => { - if (err) { - pendingError = new PackageManagerError('Error creating directory', localize("create.directory.error", 'Error creating directory'), 'InstallPackage', pkg, err, err.code); - zipfile.close(); - return; - } - - zipfile.readEntry(); - }); - } else { - util.checkFileExists(absoluteEntryPath).then((exists: boolean) => { - if (!exists) { - // File - extract it - zipfile.openReadStream(entry, (err, readStream: Readable | undefined) => { - if (err || !readStream) { - pendingError = new PackageManagerError('Error reading zip stream', localize("zip.stream.error", 'Error reading zip stream'), 'InstallPackage', pkg, err); - zipfile.close(); - return; - } - - mkdirp(path.dirname(absoluteEntryPath), { mode: 0o775 }, async (err) => { - if (err) { - pendingError = new PackageManagerError('Error creating directory', localize("create.directory.error", 'Error creating directory'), 'InstallPackage', pkg, err, err.code); - zipfile.close(); - return; - } - - // Create as a .tmp file to avoid partially unzipped files - // counting as completed files. - const absoluteEntryTempFile: string = absoluteEntryPath + ".tmp"; - if (await util.checkFileExists(absoluteEntryTempFile)) { - try { - await util.unlinkAsync(absoluteEntryTempFile); - } catch (errJS) { - const err: Error = errJS as Error; - pendingError = new PackageManagerError(`Error unlinking file ${absoluteEntryTempFile}`, localize("unlink.error", "Error unlinking file {0}", absoluteEntryTempFile), 'InstallPackage', pkg, err); - zipfile.close(); - return; - } - } - - // Make sure executable files have correct permissions when extracted - const fileMode: number = (this.platformInfo.platform !== "win32" && pkg.binaries && pkg.binaries.indexOf(absoluteEntryPath) !== -1) ? 0o755 : 0o664; - const writeStream: fs.WriteStream = fs.createWriteStream(absoluteEntryTempFile, { mode: fileMode }); - - writeStream.on('close', async () => { - // Remove .tmp extension from the file, if there was no error. - // Otherwise, delete it. - // Don't move on to the next entry, if we've already called reject(), in - // which case zipfile.close() will already have been called. - if (!pendingError) { - try { - await util.renameAsync(absoluteEntryTempFile, absoluteEntryPath); - } catch (errJS) { - const err: Error = errJS as Error; - pendingError = new PackageManagerError(`Error renaming file ${absoluteEntryTempFile}`, localize("rename.error", "Error renaming file {0}", absoluteEntryTempFile), 'InstallPackage', pkg, err); - zipfile.close(); - return; - } - // Wait until output is done writing before reading the next zip entry. - // Otherwise, it's possible to try to launch the .exe before it is done being created. - zipfile.readEntry(); - } else { - try { - await util.unlinkAsync(absoluteEntryTempFile); - } catch (err) { - // Ignore failure to delete temp file. We already have an error to return. - } - } - }); - - readStream.on('error', (err) => { - // Don't call reject() a second time. - if (!pendingError) { - pendingError = new PackageManagerError('Error in readStream', localize("read.stream.error", 'Error in read stream'), 'InstallPackage', pkg, err); - zipfile.close(); - } - }); - - writeStream.on('error', (err) => { - // Don't call reject() a second time. - if (!pendingError) { - pendingError = new PackageManagerError('Error in writeStream', localize("write.stream.error", 'Error in write stream'), 'InstallPackage', pkg, err); - zipfile.close(); - } - }); - - readStream.pipe(writeStream); - }); - }); - } else { - // Skip the message for text files, because there is a duplicate text file unzipped. - if (path.extname(absoluteEntryPath) !== ".txt") { - this.AppendLineChannel(localize("file.already.exists", "Warning: File '{0}' already exists and was not updated.", absoluteEntryPath)); - } - zipfile.readEntry(); - } - }); - } - }); - - zipfile.readEntry(); - }); - }).then(() => { - // Clean up temp file - pkg.tmpFile.removeCallback(); - }); - } - - private AppendChannel(text: string): void { - if (this.outputChannel) { - this.outputChannel.append(text); - } - } - - private AppendLineChannel(text: string): void { - if (this.outputChannel) { - this.outputChannel.appendLine(text); - } - } -} - -export function VersionsMatch(pkg: IPackage, info: PlatformInformation): boolean { - if (pkg.versionRegex) { - // If we have a versionRegex but did not get a platformVersion - if (!info.version) { - // If we are expecting to match the versionRegex, return false since there was no version found. - // - // If we are expecting to not match the versionRegex, return true since we are expecting to - // not match the version string, the only match would be if versionRegex was not set. - return !pkg.matchVersion; - } - const regex: RegExp = new RegExp(pkg.versionRegex); - - return (pkg.matchVersion ? - regex.test(info.version) : - !regex.test(info.version) - ); - } - - // No versionRegex provided. - return true; -} - -export function ArchitecturesMatch(value: IPackage, info: PlatformInformation): boolean { - return !value.architectures || (value.architectures.indexOf(info.architecture) !== -1); -} - -export function PlatformsMatch(value: IPackage, info: PlatformInformation): boolean { - return !value.platforms || value.platforms.indexOf(info.platform) !== -1; -} diff --git a/Extension/src/packageVersion.ts b/Extension/src/packageVersion.ts deleted file mode 100644 index e0e61d4ef7..0000000000 --- a/Extension/src/packageVersion.ts +++ /dev/null @@ -1,98 +0,0 @@ -/* -------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All Rights Reserved. - * See 'LICENSE' in the project root for license information. - * ------------------------------------------------------------------------------------------ */ -'use strict'; - -export class PackageVersion { - major: number; - minor: number; - patch: number; - suffix?: string; - suffixVersion: number; - - constructor(version: string) { - const tokens: string[] = version.split(new RegExp('[-\\.]', 'g')); // Match against dots and dashes - if (tokens.length < 3) { - throw new Error(`Failed to parse version string: ${version}`); - } - - this.major = parseInt(tokens[0]); - this.minor = parseInt(tokens[1]); - this.patch = parseInt(tokens[2]); - - if (tokens.length > 3) { - const firstDigitOffset: number = tokens[3].search(new RegExp(/(\d)/)); // Find first occurrence of 0-9 - if (firstDigitOffset !== -1) { - this.suffix = tokens[3].substring(0, firstDigitOffset); - this.suffixVersion = parseInt(tokens[3].substring(firstDigitOffset)); - } else { - this.suffix = tokens[3]; - this.suffixVersion = 1; - } - } else { - this.suffix = undefined; - this.suffixVersion = 0; - } - - if (this.major === undefined - || this.major === null - || this.minor === undefined - || this.minor === null - || this.patch === undefined - || this.patch === null) { - throw new Error(`Failed to parse version string: ${version}`); - } - } - - public isEqual(other: PackageVersion): boolean { - return this.major === other.major && this.minor === other.minor && this.patch === other.patch && - this.suffix === other.suffix && this.suffixVersion === other.suffixVersion; - } - - public isVsCodeVersionGreaterThan(other: PackageVersion): boolean { - return this.isGreaterThan(other, 'insider') || this.isGreaterThan(other, 'exploration'); - } - - public isExtensionVersionGreaterThan(other: PackageVersion): boolean { - return this.isGreaterThan(other, 'insiders'); - } - - public isMajorMinorPatchGreaterThan(other: PackageVersion): boolean { - return this.isGreaterThan(other, ""); - } - - private isGreaterThan(other: PackageVersion, suffixStr: string): boolean { - if (suffixStr && ((this.suffix && !this.suffix.startsWith(suffixStr)) || (other.suffix && !other.suffix.startsWith(suffixStr)))) { - return false; - } - - let diff: number = this.major - other.major; - if (diff) { - return diff > 0; - } else { - diff = this.minor - other.minor; - if (diff) { - return diff > 0; - } else { - diff = this.patch - other.patch; - if (diff) { - return diff > 0; - } else { - // When suffixStr is empty, only the major/minor/patch components of the version are being compared. - if (!suffixStr) { - return false; - } - if (this.suffix) { - if (!other.suffix) { - return false; - } - return (this.suffixVersion > other.suffixVersion); - } else { - return other.suffix ? true : false; - } - } - } - } - } -} diff --git a/Extension/src/telemetry.ts b/Extension/src/telemetry.ts index f883fabfdb..1fbf033a13 100644 --- a/Extension/src/telemetry.ts +++ b/Extension/src/telemetry.ts @@ -7,7 +7,6 @@ import TelemetryReporter from 'vscode-extension-telemetry'; import { getExperimentationServiceAsync, IExperimentationService, IExperimentationTelemetry, TargetPopulation } from 'vscode-tas-client'; import * as util from './common'; -import { PackageVersion } from './packageVersion'; interface IPackageInfo { name: string; @@ -63,15 +62,7 @@ export function activate(): void { if (util.extensionContext) { const packageInfo: IPackageInfo = getPackageInfo(); if (packageInfo) { - let targetPopulation: TargetPopulation; - const userVersion: PackageVersion = new PackageVersion(packageInfo.version); - if (!userVersion.suffix) { - targetPopulation = TargetPopulation.Public; - } else if (userVersion.suffix === "insiders") { - targetPopulation = TargetPopulation.Insiders; - } else { - targetPopulation = TargetPopulation.Internal; - } + const targetPopulation: TargetPopulation = util.getCppToolsTargetPopulation(); experimentationTelemetry = new ExperimentationTelemetry(new TelemetryReporter(packageInfo.name, packageInfo.version, appInsightsKey)); initializationPromise = getExperimentationServiceAsync(packageInfo.name, packageInfo.version, targetPopulation, experimentationTelemetry, util.extensionContext.globalState); } diff --git a/Extension/test/unitTests/updowngrade.test.ts b/Extension/test/unitTests/updowngrade.test.ts deleted file mode 100644 index c3480bfde5..0000000000 --- a/Extension/test/unitTests/updowngrade.test.ts +++ /dev/null @@ -1,227 +0,0 @@ -/* -------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All Rights Reserved. - * See 'LICENSE' in the project root for license information. - * ------------------------------------------------------------------------------------------ */ - -import * as assert from "assert"; -import { Build, Asset, getTargetBuild } from "../../src/githubAPI"; -import { PackageVersion } from '../../src/packageVersion'; - -suite("UpgradeDowngrade", () => { - - const asset_win32: Asset = {name: "cpptools-win32.vsix", browser_download_url: "https://github.com/microsoft/vscode-cpptools/releases/download/0.27.0/cpptools-win32.vsix"}; - const asset_linux: Asset = {name: "cpptools-linux.vsix", browser_download_url: "https://github.com/microsoft/vscode-cpptools/releases/download/0.27.0/cpptools-linux.vsix"}; - const asset_osx: Asset = {name: "cpptools-osx.vsix", browser_download_url: "https://github.com/microsoft/vscode-cpptools/releases/download/0.27.0/cpptools-osx.vsix"}; - const three_assets: Asset[] = [asset_win32, asset_linux, asset_osx]; - - const release1patch: string = "0.28.1"; - const release1: string = "0.28.0"; - const insider3: string = "0.28.0-insiders3"; - const insider2: string = "0.28.0-insiders2"; - const insider1: string = "0.28.0-insiders"; - const release0patch: string = "0.27.1"; - const release0: string = "0.27.0"; - - suite("DefaultChannel", () => { - const updateChannel: string = "Default"; - // When updateChannel switches from 'Insiders' to 'Default', the only possible action is to downgrade. - suite("Downgrade", () => { - test("Insiders to Release", () => { - const builds: Build[] = [{ - name: insider3, assets: []}, { - name: insider2, assets: three_assets}, { - name: insider1, assets: three_assets}, { - name: release0patch, assets: []}, { - name: release0, assets: three_assets}]; - - const userVersion: PackageVersion = new PackageVersion(insider2); - const targetBuild: Build | undefined = getTargetBuild(builds, userVersion, updateChannel, false); - assert.equal(targetBuild.name, release0); - }); - }); - suite("Internal Testing, no Downgrade", () => { - test("Insider to Release", () => { - const builds: Build[] = [{ - name: release0, assets: three_assets}]; - - const userVersion: PackageVersion = new PackageVersion(insider1); - const targetBuild: Build | undefined = getTargetBuild(builds, userVersion, updateChannel, false); - assert.equal(targetBuild, undefined); - }); - test("Insider to Insider", () => { - const builds: Build[] = [{ - name: insider2, assets: three_assets}, { - name: insider1, assets: three_assets}, { - name: release0, assets: three_assets}]; - - const userVersion: PackageVersion = new PackageVersion(insider3); - const targetBuild: Build | undefined = getTargetBuild(builds, userVersion, updateChannel, false); - assert.equal(targetBuild, undefined); - }); - test("Release to Insider (main)", () => { - const builds: Build[] = [{ - name: insider3, assets: three_assets}, { - name: insider2, assets: three_assets}, { - name: insider1, assets: three_assets}, { - name: release0, assets: three_assets}]; - // In internal testing, the name of the release has a "-main" at the end of it. - const userVersion: PackageVersion = new PackageVersion(release1 + "-main"); - const targetBuild: Build | undefined = getTargetBuild(builds, userVersion, updateChannel, false); - assert.equal(targetBuild, undefined); - }); - test("Release to Insider", () => { - const builds: Build[] = [{ - name: insider3, assets: three_assets}, { - name: insider2, assets: three_assets}, { - name: insider1, assets: three_assets}, { - name: release0, assets: three_assets}]; - const userVersion: PackageVersion = new PackageVersion(release1); - const targetBuild: Build | undefined = getTargetBuild(builds, userVersion, updateChannel, false); - assert.equal(targetBuild, undefined); - }); - }); - }); - - suite("InsidersChannel", () => { - const updateChannel: string = "Insiders"; - suite("Downgrade", () => { - suite("Internal Testing, no Downgrade", () => { - test("Insider to Release", () => { - const builds: Build[] = [{ - name: release0, assets: three_assets}]; - - const userVersion: PackageVersion = new PackageVersion(insider1); - const targetBuild: Build | undefined = getTargetBuild(builds, userVersion, updateChannel, false); - assert.equal(targetBuild, undefined); - }); - test("Insider to Insider", () => { - const builds: Build[] = [{ - name: insider2, assets: three_assets}, { - name: insider1, assets: three_assets}, { - name: release0, assets: three_assets}]; - - const userVersion: PackageVersion = new PackageVersion(insider3); - const targetBuild: Build | undefined = getTargetBuild(builds, userVersion, updateChannel, false); - assert.equal(targetBuild, undefined); - }); - test("Release to Insider (main)", () => { - const builds: Build[] = [{ - name: insider3, assets: three_assets}, { - name: insider2, assets: three_assets}, { - name: insider1, assets: three_assets}, { - name: release0, assets: three_assets}]; - // In internal testing, the name of the release has a "-main" at the end of it. - const userVersion: PackageVersion = new PackageVersion(release1 + "-main"); - const targetBuild: Build | undefined = getTargetBuild(builds, userVersion, updateChannel, false); - assert.equal(targetBuild, undefined); - }); - test("Release to Insider", () => { - const builds: Build[] = [{ - name: insider3, assets: three_assets}, { - name: insider2, assets: three_assets}, { - name: insider1, assets: three_assets}, { - name: release0, assets: three_assets}]; - const userVersion: PackageVersion = new PackageVersion(release1); - const targetBuild: Build | undefined = getTargetBuild(builds, userVersion, updateChannel, false); - assert.equal(targetBuild, undefined); - }); - }); - - suite("Insider Users, Downgrade", () => { - test("Insider to Release", () => { - const builds: Build[] = [{ - name: insider3, assets: []}, { - name: insider2, assets: []}, { - name: insider1, assets: []}, { - name: release0patch, assets: []}, { - name: release0, assets: three_assets}]; - - const userVersion: PackageVersion = new PackageVersion(insider3); - const targetBuild: Build | undefined = getTargetBuild(builds, userVersion, updateChannel, false); - assert.equal(targetBuild.name, release0); - }); - test("Insider to Insider", () => { - const builds: Build[] = [{ - name: insider3, assets: []}, { - name: insider2, assets: []}, { - name: insider1, assets: three_assets}, { - name: release0, assets: three_assets}]; - - const userVersion: PackageVersion = new PackageVersion(insider3); - const targetBuild: Build | undefined = getTargetBuild(builds, userVersion, updateChannel, false); - assert.equal(targetBuild.name, insider1); - }); - }); - }); - - suite("Upgrade", () => { - suite("Automatic Upgrade", () => { - test("Release to Release", () => { - const builds: Build[] = [{ - name: release1patch, assets: []}, { - name: release1, assets: three_assets}, { - name: insider3, assets: three_assets}, { - name: insider2, assets: three_assets}]; - - const userVersion: PackageVersion = new PackageVersion(release0); - const targetBuild: Build | undefined = getTargetBuild(builds, userVersion, updateChannel, false); - assert.equal(targetBuild.name, release1); - }); - test("Insider to Release", () => { - const builds: Build[] = [{ - name: release1, assets: three_assets}, { - name: insider3, assets: three_assets}, { - name: insider2, assets: three_assets}]; - - const userVersion: PackageVersion = new PackageVersion(insider2); - const targetBuild: Build | undefined = getTargetBuild(builds, userVersion, updateChannel, false); - assert.equal(targetBuild.name, release1); - }); - }); - - suite("Asset Checking Upgrade", () => { - test("Release to Insider, Upgrade", () => { - const builds: Build[] = [{ - name: insider2, assets: []}, { - name: insider1, assets: three_assets}, { - name: release0, assets: three_assets}]; - - const userVersion: PackageVersion = new PackageVersion(release0); - const targetBuild: Build | undefined = getTargetBuild(builds, userVersion, updateChannel, false); - assert.equal(targetBuild.name, insider1); - }); - test("Release to Insider, no Upgrade", () => { - const builds: Build[] = [{ - name: insider2, assets: []}, { - name: insider1, assets: []}, { - name: release0, assets: three_assets}]; - - const userVersion: PackageVersion = new PackageVersion(release0); - const targetBuild: Build | undefined = getTargetBuild(builds, userVersion, updateChannel, false); - assert.equal(targetBuild, undefined); - }); - test("Insider to Insider, Upgrade", () => { - const builds: Build[] = [{ - name: insider3, assets: []}, { - name: insider2, assets: three_assets}, { - name: insider1, assets: three_assets}, { - name: release0, assets: three_assets}]; - - const userVersion: PackageVersion = new PackageVersion(insider1); - const targetBuild: Build | undefined = getTargetBuild(builds, userVersion, updateChannel, false); - assert.equal(targetBuild.name, insider2); - }); - test("Insider to Insider, no Upgrade", () => { - const builds: Build[] = [{ - name: insider3, assets: []}, { - name: insider2, assets: three_assets}, { - name: release0, assets: three_assets}]; - - const userVersion: PackageVersion = new PackageVersion(insider2); - const targetBuild: Build | undefined = getTargetBuild(builds, userVersion, updateChannel, false); - assert.equal(targetBuild, undefined); - }); - }); - }); - }); -}); From b4c1b9dced8b6ee475b2cca87fa1d072f78e89d1 Mon Sep 17 00:00:00 2001 From: Elaheh Rashedi Date: Tue, 11 Jan 2022 08:48:48 -0800 Subject: [PATCH 14/16] add cl.exe error (#8630) --- Extension/src/LanguageServer/cppBuildTaskProvider.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Extension/src/LanguageServer/cppBuildTaskProvider.ts b/Extension/src/LanguageServer/cppBuildTaskProvider.ts index 60785d4e34..c1139898ee 100644 --- a/Extension/src/LanguageServer/cppBuildTaskProvider.ts +++ b/Extension/src/LanguageServer/cppBuildTaskProvider.ts @@ -447,13 +447,12 @@ class CustomBuildTaskTerminal implements Pseudoterminal { } private printBuildSummary(error: string, stdout: string, stderr: string): void { - if (error || (!stdout && stderr && stderr.includes("error"))) { + if (error || (!stdout && stderr && stderr.includes("error")) || + (stdout && stdout.includes("error C"))) { // cl.exe compiler errors telemetry.logLanguageServerEvent("cppBuildTaskError"); this.writeEmitter.fire(localize("build.finished.with.error", "Build finished with error(s).") + this.endOfLine); - } else if (!stdout && stderr) { // gcc/clang - telemetry.logLanguageServerEvent("cppBuildTaskWarnings"); - this.writeEmitter.fire(localize("build.finished.with.warnings", "Build finished with warning(s).") + this.endOfLine); - } else if (stdout && stdout.includes("warning C")) { // cl.exe, compiler warnings + } else if ((!stdout && stderr) || // gcc/clang + (stdout && stdout.includes("warning C"))) { // cl.exe compiler warnings telemetry.logLanguageServerEvent("cppBuildTaskWarnings"); this.writeEmitter.fire(localize("build.finished.with.warnings", "Build finished with warning(s).") + this.endOfLine); } else { From ff4cdc8d3149a191b8e832f86254bf30bb0572e5 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson <49173979+Colengms@users.noreply.github.com> Date: Tue, 11 Jan 2022 11:54:14 -0800 Subject: [PATCH 15/16] Fix to display updateChannel deprecation messages when using VS Code Insiders (#8655) --- Extension/src/main.ts | 59 ++++++++++++++++++++----------------------- 1 file changed, 28 insertions(+), 31 deletions(-) diff --git a/Extension/src/main.ts b/Extension/src/main.ts index 26135f946d..c269ed4eb2 100644 --- a/Extension/src/main.ts +++ b/Extension/src/main.ts @@ -138,37 +138,34 @@ export function HandleInsidersPrompt(): void { // Only display this prompt to users who have updateChannel configured for Insiders, // and who are not already configured to receive pre-release extensions. - // Skip the prompt if using an Insiders build of VS Code, as it will default to using pre-release extensions. - if (!util.isVsCodeInsiders()) { - const targetPopulation: TargetPopulation = util.getCppToolsTargetPopulation(); - // Skip the prompt if already using an insiders build of cpptools. - if (targetPopulation === TargetPopulation.Public) { - const settings: CppSettings = new CppSettings(); - const displayedInsidersPrompt: PersistentState = new PersistentState("CPP.displayedInsidersPrompt", false); - // Skip the prompt if updateChannel was not set to Insiders. - if (settings.updateChannel === "Insiders") { - if (!displayedInsidersPrompt.Value) { - displayedInsidersPrompt.Value = true; - const message: string = localize('updateChannel.changed', "The `C_Cpp.updateChannel` setting is deprecated. Do you want to enable install of pre-releases of the C/C++ extension via the Marketplace?"); - const yes: string = localize("yes.button", "Yes"); - const no: string = localize("no.button", "No"); - vscode.window.showInformationMessage(message, yes, no).then((selection) => { - switch (selection) { - case yes: - vscode.commands.executeCommand("workbench.extensions.installExtension", "ms-vscode.cpptools", { installPreReleaseVersion: true }); - break; - case no: - break; - default: - break; - } - }); - } - } else { - // Reset persistent value, so we prompt again if they switch to "Insiders" again. - if (displayedInsidersPrompt.Value) { - displayedInsidersPrompt.Value = false; - } + const targetPopulation: TargetPopulation = util.getCppToolsTargetPopulation(); + // Skip the prompt if already using an insiders build of cpptools. + if (targetPopulation === TargetPopulation.Public) { + const settings: CppSettings = new CppSettings(); + const displayedInsidersPrompt: PersistentState = new PersistentState("CPP.displayedInsidersPrompt", false); + // Skip the prompt if updateChannel was not set to Insiders. + if (settings.updateChannel === "Insiders") { + if (!displayedInsidersPrompt.Value) { + displayedInsidersPrompt.Value = true; + const message: string = localize('updateChannel.changed', "The `C_Cpp.updateChannel` setting is deprecated. Do you want to enable install of pre-releases of the C/C++ extension via the Marketplace?"); + const yes: string = localize("yes.button", "Yes"); + const no: string = localize("no.button", "No"); + vscode.window.showInformationMessage(message, yes, no).then((selection) => { + switch (selection) { + case yes: + vscode.commands.executeCommand("workbench.extensions.installExtension", "ms-vscode.cpptools", { installPreReleaseVersion: true }); + break; + case no: + break; + default: + break; + } + }); + } + } else { + // Reset persistent value, so we prompt again if they switch to "Insiders" again. + if (displayedInsidersPrompt.Value) { + displayedInsidersPrompt.Value = false; } } } From 2b44312fe435192b1052985a53c775dc488bf030 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson <49173979+Colengms@users.noreply.github.com> Date: Tue, 11 Jan 2022 17:52:45 -0800 Subject: [PATCH 16/16] Update changelog for 1.8.0 insiders3 (#8657) --- Extension/CHANGELOG.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index a4e145dada..b1352cffcf 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -1,5 +1,22 @@ # C/C++ for Visual Studio Code Change Log +## Version 1.8.0 (insiders3): January 12, 2022 +### New Features +* Add "All Exceptions" Breakpoint for cppdbg [#1800](https://github.com/microsoft/vscode-cpptools/issues/1800) +* Add support for Alpine Linux [#4827](https://github.com/microsoft/vscode-cpptools/issues/4827) +* Implement platform-specific VSIX's via the marketplace. [#8152](https://github.com/microsoft/vscode-cpptools/issues/8152) + +### Bug Fixes +* Fix [MSYS2 GDB 10.2] gdb: ERROR: Unable to start debugging. Unexpected GDB output from command "-exec-run". Error creating process [#7706](https://github.com/microsoft/vscode-cpptools/issues/7706) +* Remove redundant cl.exe from the build and debug active file configuration list. [#8168](https://github.com/microsoft/vscode-cpptools/issues/8168) +* Stop adding `-fms-extensions` by default for gcc-based compilers on Windows. [#8475](https://github.com/microsoft/vscode-cpptools/issues/8475), [#8487](https://github.com/microsoft/vscode-cpptools/issues/8487) +* Fix clang-tidy header warnings sometimes not disappearing after the issue is fixed. [#8502](https://github.com/microsoft/vscode-cpptools/issues/8502) +* Fix clang-tidy processing status indicator getting stuck after editing/saving a header that is currently being analyzed by clang-tidy. [#8504](https://github.com/microsoft/vscode-cpptools/issues/8504) +* Fix non-ASCII output with `cppbuild` tasks. [#8518](https://github.com/microsoft/vscode-cpptools/issues/8518) +* Fix 3 settings not getting environment variables resolved after a settings change. [#8531](https://github.com/microsoft/vscode-cpptools/issues/8531) +* Fixes to translations. [#8536](https://github.com/microsoft/vscode-cpptools/issues/8536) +* Fix /RTC compiler checks failures don't break into debugger [#8646](https://github.com/microsoft/vscode-cpptools/issues/8646) + ## Version 1.8.0-insiders2: December 7, 2021 ### Bug Fixes * Fix GCC system include processing on Windows. [#8112](https://github.com/microsoft/vscode-cpptools/issues/8112), [#8496](https://github.com/microsoft/vscode-cpptools/issues/8496)