diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index 726eafe607..7d32c30499 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -1,5 +1,18 @@ # C/C++ for Visual Studio Code Change Log +## Version 1.5.0-insiders2: June 21, 2021 +### New Feature +* Add "Inline macro" code action. [#4183](https://github.com/microsoft/vscode-cpptools/issues/4183) + +### Bug Fixes +* Fix code folding causing `} else if` lines to be hidden. [#5521](https://github.com/microsoft/vscode-cpptools/issues/5521) +* Fix Find All References on a global variable giving incorrect references to local variables. [#7702](https://github.com/microsoft/vscode-cpptools/issues/7702) +* Fix `vcFormat` not working near the end of the file with UTF-8 characters > 1 byte. [#7704](https://github.com/microsoft/vscode-cpptools/issues/7704) +* Fix configuration squiggle on a recursively resolved `forcedInclude`. [PR #7722](https://github.com/microsoft/vscode-cpptools/pull/7722) +* Fix `Build and Debug Active File` for certain file extensions (.cu, .cp, etc.). + * jogo- (@jogo-) [PR #7726](https://github.com/microsoft/vscode-cpptools/pull/7726) +* Fix an infinite loop when importing a module with a template. + ## Version 1.5.0-insiders: June 14, 2021 ### Enhancements * Add "Symbol Options" for CppVsdbg to configure symbol settings [PR #7680](https://github.com/microsoft/vscode-cpptools/pull/7680) diff --git a/Extension/cpptools.json b/Extension/cpptools.json deleted file mode 100644 index 881916b175..0000000000 --- a/Extension/cpptools.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "intelliSenseEngine_default_percentage": 100, - "defaultIntelliSenseEngine": 100, - "recursiveIncludes": 100, - "gotoDefIntelliSense": 100, - "enhancedColorization": 100, - "minimumVSCodeVersion": "1.53.0" -} \ No newline at end of file diff --git a/Extension/i18n/chs/package.i18n.json b/Extension/i18n/chs/package.i18n.json index be166cd5f1..96d1044ba4 100644 --- a/Extension/i18n/chs/package.i18n.json +++ b/Extension/i18n/chs/package.i18n.json @@ -167,7 +167,7 @@ "c_cpp.configuration.suggestSnippets.description": "如果为 true,则由语言服务器提供片段。", "c_cpp.configuration.enhancedColorization.description": "如果启用,则根据 IntelliSense 对代码设定颜色。此设置仅在 intelliSenseEngine 设置为“默认”时适用。", "c_cpp.configuration.codeFolding.description": "如果启用,则由语言服务器提供代码折叠范围。", - "c_cpp.configuration.vcpkg.enabled.markdownDescription": "为 [vcpkg 依赖关系管理器] 启用集成服务(https://aka.ms/vcpkg/)。", + "c_cpp.configuration.vcpkg.enabled.markdownDescription": "为 [vcpkg 依赖关系管理器](https://aka.ms/vcpkg/)启用集成服务。", "c_cpp.configuration.addNodeAddonIncludePaths.description": "当它们是依赖项时,从 nan 和 node-addon-api 添加 include 路径。", "c_cpp.configuration.renameRequiresIdentifier.description": "如果为 true,则“重命名符号”将需要有效的 C/C++ 标识符。", "c_cpp.configuration.autocompleteAddParentheses.description": "如果为 true,则自动完成功能将在函数调用后自动添加 \"(\",这种情况下还可以添加 \")\",具体取决于 \"editor.autoClosingBrackets\" 设置的值。", @@ -254,5 +254,18 @@ "c_cpp.taskDefinitions.detail.description": "任务类型的其他详细信息", "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.description": "相同源树的当前路径和编译时路径。EditorPath 下的文件会映射到 CompileTimePath 路径以进行断点匹配,并在显示 stacktrace 位置时,从 CompileTimePath 映射到 EditorPath。", "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.editorPath.description": "编辑器将使用的源树的路径。", - "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "如果此条目仅用于堆栈帧位置映射,则为 False。如果在指定断点位置时也需要使用此条目,则为 True。" + "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "如果此条目仅用于堆栈帧位置映射,则为 False。如果在指定断点位置时也需要使用此条目,则为 True。", + "c_cpp.debuggers.symbolOptions.description": "用于控制如何找到和加载符号(.pdb 文件)的选项。", + "c_cpp.debuggers.VSSymbolOptions.description": "提供用于找到符号并将其加载到调试适配器的配置。", + "c_cpp.debuggers.VSSymbolOptions.searchPaths.description": "在其中搜索 .pdb 文件的符号服务器 URL (例如 http​://MyExampleSymbolServer)或目录(例如 /build/symbols)的数组。除了默认位置,还将搜索这些目录 - 在模块以及 pdb 最初放置到的路径的旁边。", + "c_cpp.debuggers.VSSymbolOptions.searchMicrosoftSymbolServer.description": "如果为 \"true\",则 Microsoft 符号服务器(https​://msdl.microsoft.com​/download/symbols)会添加到符号搜索路径。如果未指定,此选项会默认为 \"false\"。", + "c_cpp.debuggers.VSSymbolOptions.cachePath.description": "从符号服务器下载的符号应缓存到的目录。如果未指定,则在 Windows 上,调试程序将默认为 %TEMP%\\SymbolCache。", + "c_cpp.debuggers.VSSymbolOptions.moduleFilter.description": "提供选项来控制调试程序将尝试为哪些模块(.dll 文件)加载符号(.pdb 文件)。", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.description": "提供用于将符号加载到调试适配器的配置。", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.description": "控制模块筛选器在两种基本操作模式的下一种模式下操作。", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.loadAllButExcluded.enumDescriptions": "为所有模块加载符号,除非模块在 \"excludedModules\" 数组中。", + "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\"。" } \ No newline at end of file diff --git a/Extension/i18n/chs/src/LanguageServer/client.i18n.json b/Extension/i18n/chs/src/LanguageServer/client.i18n.json index e6571778fb..73e93a2e32 100644 --- a/Extension/i18n/chs/src/LanguageServer/client.i18n.json +++ b/Extension/i18n/chs/src/LanguageServer/client.i18n.json @@ -17,7 +17,7 @@ "c.cpp.diagnostics": "C/C++ 诊断", "dismiss.button": "消除", "diable.warnings.button": "禁用警告", - "unable.to.provide.configuraiton": "{0} 无法为“{1}”提供 IntelliSense 配置信息。将改为使用“{2}”配置中的设置。", + "unable.to.provide.configuration": "{0} 无法为“{1}”提供 IntelliSense 配置信息。将改为使用“{2}”配置中的设置。", "config.not.found": "找不到请求的配置名称: {0}", "unsupported.client": "不支持的客户端", "timed.out": "将在 {0} 毫秒后超时。", @@ -37,4 +37,4 @@ "no.compilers.found": "系统上未找到任何 C++ 编译器。对于你的平台,建议使用编辑器中的说明安装 {0}。", "compilers.found": "我们在系统上发现了以下 C++ 编译器:", "compilers.found.message": "可在项目的 IntelliSense 配置中指定要使用的编译器。" -} \ No newline at end of file +} diff --git a/Extension/i18n/cht/package.i18n.json b/Extension/i18n/cht/package.i18n.json index bde43e0eb0..7e6d433c22 100644 --- a/Extension/i18n/cht/package.i18n.json +++ b/Extension/i18n/cht/package.i18n.json @@ -254,5 +254,18 @@ "c_cpp.taskDefinitions.detail.description": "工作的其他詳細資料", "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.description": "相同來源樹狀的目前路徑和編譯時間路徑。在顯示 stacktrace 位置時,在 EditorPath 下找到的檔案會對應到 CompileTimePath 路徑,以進行中斷點必對,並會從 CompileTimePath 對應到 EditorPath。", "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.editorPath.description": "編輯器要使用的來源樹狀路徑。", - "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "若此項目只用於堆疊框架位置對應,則為 False; 若在指定中斷點位置時也應該使用此項目,則為 True。" + "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "若此項目只用於堆疊框架位置對應,則為 False; 若在指定中斷點位置時也應該使用此項目,則為 True。", + "c_cpp.debuggers.symbolOptions.description": "控制如何找到並載入符號 (.pdb 檔案) 的選項。", + "c_cpp.debuggers.VSSymbolOptions.description": "提供將符號尋找及載入至偵錯介面卡的設定。", + "c_cpp.debuggers.VSSymbolOptions.searchPaths.description": "符號陣列伺服器 URL (範例: http​://MyExampleSymbolServer) 或目錄 (範例: /build/symbols) 搜尋 .pdb 檔案。除了預設位置 (位於模組旁和 pdb 原先放置的路徑),也會搜尋這些目錄。", + "c_cpp.debuggers.VSSymbolOptions.searchMicrosoftSymbolServer.description": "如果是 'true',則會將 Microsoft 符號伺服器 (https​://msdl.microsoft.com​/download/symbols) 新增至符號搜尋路徑。若未指定,這個選項會預設為 'false'。", + "c_cpp.debuggers.VSSymbolOptions.cachePath.description": "應該快取從符號伺服器下載的符號所在目錄。若未指定,則在 Windows 上,偵錯工具會預設為 %TEMP%\\SymbolCache。", + "c_cpp.debuggers.VSSymbolOptions.moduleFilter.description": "提供選項,以控制偵錯工具會嘗試為其載入符號 (.pdb 檔案) 的模組 (.dll 檔案)。", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.description": "提供將符號載入至偵錯介面卡的設定。", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.description": "控制模組篩選作業在兩個基本作業模式中的哪一個。", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.loadAllButExcluded.enumDescriptions": "載入所有模組的符號,除非模組位於 'excludedModules' 陣列中。", + "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',否則會忽略此屬性。" } \ No newline at end of file diff --git a/Extension/i18n/cht/src/LanguageServer/client.i18n.json b/Extension/i18n/cht/src/LanguageServer/client.i18n.json index e6939af21e..2e0518a313 100644 --- a/Extension/i18n/cht/src/LanguageServer/client.i18n.json +++ b/Extension/i18n/cht/src/LanguageServer/client.i18n.json @@ -17,7 +17,7 @@ "c.cpp.diagnostics": "C/C++ 診斷", "dismiss.button": "關閉", "diable.warnings.button": "停用警告", - "unable.to.provide.configuraiton": "{0} 無法提供 '{1}' 的 IntelliSense 組態資訊。將改用來自 '{2}' 組態的設定。", + "unable.to.provide.configuration": "{0} 無法提供 '{1}' 的 IntelliSense 組態資訊。將改用來自 '{2}' 組態的設定。", "config.not.found": "找不到要求的組態名稱: {0}", "unsupported.client": "不支援的用戶端", "timed.out": "逾時 ({0} 毫秒內)。", @@ -37,4 +37,4 @@ "no.compilers.found": "在您的系統 C++ 上找不到編譯器。針對您的平台,建議您使用編輯器中的指示來安裝 {0}。", "compilers.found": "我們在您的系統上找到下列 C++ 編譯器:", "compilers.found.message": "您可以在專案的 IntelliSense 設定中指定要使用的編譯器。" -} \ No newline at end of file +} diff --git a/Extension/i18n/csy/package.i18n.json b/Extension/i18n/csy/package.i18n.json index fcd6bdd89c..9c4062ab60 100644 --- a/Extension/i18n/csy/package.i18n.json +++ b/Extension/i18n/csy/package.i18n.json @@ -254,5 +254,18 @@ "c_cpp.taskDefinitions.detail.description": "Další podrobnosti o typu úlohy", "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.description": "Aktuální cesta a cesta při kompilaci ke stejným zdrojovým stromům. Soubory, které se najdou na cestě EditorPath, se namapují na cestu CompileTimePath pro odpovídající zarážku, která se při zobrazování umístění stacktrace mapuje z CompileTimePath na EditorPath.", "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.editorPath.description": "Cesta ke zdrojovému souboru, který se použije v editoru", - "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "False, pokud se tato položka používá jen k mapování umístění bloku zásobníku. True, pokud se tato entita má použít i při zadávání umístění zarážek" + "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "False, pokud se tato položka používá jen k mapování umístění bloku zásobníku. True, pokud se tato entita má použít i při zadávání umístění zarážek", + "c_cpp.debuggers.symbolOptions.description": "Možnosti kontroly způsobu, jakým se hledají a načítají symboly (soubory .pdb).", + "c_cpp.debuggers.VSSymbolOptions.description": "Poskytuje konfiguraci pro vyhledávání a načítání symbolů do ladicího adaptéru.", + "c_cpp.debuggers.VSSymbolOptions.searchPaths.description": "Pole adres URL serveru symbolů (například: http​://MyExampleSymbolServer) nebo adresářů (například: /build/symbols) k vyhledávání souborů .pdb. Tyto adresáře budou prohledány kromě výchozích umístění – vedle modulu a cesty, kam byl soubor pdb původně přemístěn.", + "c_cpp.debuggers.VSSymbolOptions.searchMicrosoftSymbolServer.description": "Pokud je hodnota true, přidá se do cesty pro hledání symbolů server symbolů pro produkty Microsoft (https​://msdl.microsoft.com​/download/symbols). Pokud tato možnost není zadaná, výchozí hodnota je false.", + "c_cpp.debuggers.VSSymbolOptions.cachePath.description": "Adresář, do kterého by se měly ukládat symboly stažené ze serverů se symboly. Pokud není zadaný, bude výchozí ladicí program systému Windows %TEMP% \\SymbolCache.", + "c_cpp.debuggers.VSSymbolOptions.moduleFilter.description": "Poskytuje možnosti pro kontrolu, pro které moduly (soubory DLL) se ladicí program pokusí načíst symboly (soubory. pdb).", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.description": "Poskytuje konfiguraci pro načítání symbolů do ladicího adaptéru.", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.description": "Určuje, v jakém ze dvou základních operačních režimů pracuje filtr modulu.", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.loadAllButExcluded.enumDescriptions": "Načte symboly pro všechny moduly, pokud není modul v poli „excludedModules“.", + "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“." } \ No newline at end of file diff --git a/Extension/i18n/csy/src/LanguageServer/client.i18n.json b/Extension/i18n/csy/src/LanguageServer/client.i18n.json index bd9a05abb8..12fbd204e1 100644 --- a/Extension/i18n/csy/src/LanguageServer/client.i18n.json +++ b/Extension/i18n/csy/src/LanguageServer/client.i18n.json @@ -17,7 +17,7 @@ "c.cpp.diagnostics": "Diagnostika C/C++", "dismiss.button": "Zrušit", "diable.warnings.button": "Zakázat upozornění", - "unable.to.provide.configuraiton": "{0} nemůže poskytnout informace pro konfiguraci IntelliSense pro {1}. Místo nich se použijí nastavení z konfigurace {2}.", + "unable.to.provide.configuration": "{0} nemůže poskytnout informace pro konfiguraci IntelliSense pro {1}. Místo nich se použijí nastavení z konfigurace {2}.", "config.not.found": "Požadovaný název konfigurace se nenašel: {0}", "unsupported.client": "Nepodporovaný klient", "timed.out": "Po {0} ms vypršel časový limit.", @@ -37,4 +37,4 @@ "no.compilers.found": "V systému se nenašly žádné kompilátory jazyka C++. Pro vaši platformu doporučujeme podle instrukcí v editoru nainstalovat {0}.", "compilers.found": "V systému jsme našli následující kompilátory jazyka C++:", "compilers.found.message": "V konfiguraci IntelliSense vašeho projektu můžete zadat, který kompilátor se má použít." -} \ No newline at end of file +} diff --git a/Extension/i18n/deu/package.i18n.json b/Extension/i18n/deu/package.i18n.json index b27c501cd6..c47ee08ef6 100644 --- a/Extension/i18n/deu/package.i18n.json +++ b/Extension/i18n/deu/package.i18n.json @@ -254,5 +254,18 @@ "c_cpp.taskDefinitions.detail.description": "Zusätzliche Details zur Aufgabe", "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.description": "Dies sind die Pfade zu denselben Quellstrukturen – einmal aktuell und einmal zur Kompilierzeit. Im EditorPath gefundene Dateien werden zum Haltepunktabgleich dem CompileTimePath-Pfad zugeordnet. Bei der Anzeige von Speicherorten für die Stapelüberwachung erfolgt die Zuordnung vom CompileTimePath zum EditorPath.", "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.editorPath.description": "Der Pfad zur Quellstruktur, die vom Editor verwendet wird.", - "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "FALSE, wenn dieser Eintrag nur für eine Stapelrahmen-Speicherortzuordnung verwendet wird. TRUE, wenn dieser Eintrag auch zum Angeben von Haltepunktpositionen verwendet werden soll." + "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "FALSE, wenn dieser Eintrag nur für eine Stapelrahmen-Speicherortzuordnung verwendet wird. TRUE, wenn dieser Eintrag auch zum Angeben von Haltepunktpositionen verwendet werden soll.", + "c_cpp.debuggers.symbolOptions.description": "Optionen zum Steuern, wie Symbole (PDB-Dateien) gefunden und geladen werden.", + "c_cpp.debuggers.VSSymbolOptions.description": "Stellt eine Konfiguration zum Suchen und Laden von Symbolen in den Debugadapter bereit.", + "c_cpp.debuggers.VSSymbolOptions.searchPaths.description": "Ein Array von Symbolserver-URLs (Beispiel: http​://MyExampleSymbolServer) oder Verzeichnisse (Beispiel:/Build/Symbols) für die Suche nach PDB-Dateien. Diese Verzeichnisse werden zusätzlich zu den Standardspeicherorten durchsucht – neben dem Modul und dem Pfad, in dem die PDB ursprünglich abgelegt wurde.", + "c_cpp.debuggers.VSSymbolOptions.searchMicrosoftSymbolServer.description": "Wenn „true“, wird der Microsoft-Symbolserver (https​://msdl.microsoft.com​/download/symbols) dem Symbolsuchpfad hinzugefügt. Wenn nicht angegeben, wird diese Option standardmäßig auf „false“ eingestellt.", + "c_cpp.debuggers.VSSymbolOptions.cachePath.description": "Das Verzeichnis, in dem von Symbolservern heruntergeladene Symbole zwischengespeichert werden sollen. Wenn nicht angegeben, wird der Debugger unter Windows standardmäßig auf %TEMP% \\SymbolCache eingestellt.", + "c_cpp.debuggers.VSSymbolOptions.moduleFilter.description": "Stellt Optionen bereit, um zu steuern, für welche Module (DLL-Dateien) der Debugger versuchen soll, Symbole (PDB-Dateien) zu laden.", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.description": "Stellt eine Konfiguration zum Laden von Symbolen in den Debugadapter bereit.", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.description": "Steuert, in welchem der beiden grundlegenden Betriebsmodi der Modulfilter ausgeführt wird.", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.loadAllButExcluded.enumDescriptions": "Laden Sie Symbole für alle Module, es sei denn, das Modul befindet sich im Array „excludedModules“.", + "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." } \ No newline at end of file diff --git a/Extension/i18n/deu/src/LanguageServer/client.i18n.json b/Extension/i18n/deu/src/LanguageServer/client.i18n.json index abe5102ee6..16ad669638 100644 --- a/Extension/i18n/deu/src/LanguageServer/client.i18n.json +++ b/Extension/i18n/deu/src/LanguageServer/client.i18n.json @@ -17,7 +17,7 @@ "c.cpp.diagnostics": "C/C++-Diagnose", "dismiss.button": "Schließen", "diable.warnings.button": "Warnungen deaktivieren", - "unable.to.provide.configuraiton": "{0} kann keine IntelliSense-Konfigurationsinformationen für \"{1}\" bereitstellen. Stattdessen werden Einstellungen aus der Konfiguration \"{2}\" verwendet.", + "unable.to.provide.configuration": "{0} kann keine IntelliSense-Konfigurationsinformationen für \"{1}\" bereitstellen. Stattdessen werden Einstellungen aus der Konfiguration \"{2}\" verwendet.", "config.not.found": "Der angeforderte Konfigurationsname wurde nicht gefunden: {0}", "unsupported.client": "Nicht unterstützter Client", "timed.out": "Timeout nach {0} ms.", @@ -37,4 +37,4 @@ "no.compilers.found": "Es wurden keine C++ Compiler auf dem System gefunden. Für Ihre Plattform empfehlen wir Ihnen die Installation von {0} mithilfe der Anweisungen im Editor.", "compilers.found": "Wir haben die folgenden C++ Compiler auf dem System gefunden:", "compilers.found.message": "Sie können angeben, welcher Compiler in der IntelliSense-Konfiguration Ihres Projekts verwendet werden soll." -} \ No newline at end of file +} diff --git a/Extension/i18n/esn/package.i18n.json b/Extension/i18n/esn/package.i18n.json index 329ce2fb4d..5078619b53 100644 --- a/Extension/i18n/esn/package.i18n.json +++ b/Extension/i18n/esn/package.i18n.json @@ -254,5 +254,18 @@ "c_cpp.taskDefinitions.detail.description": "Detalles adicionales de la tarea", "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.description": "Rutas de acceso actuales y en tiempo de compilación a los mismos árboles de origen. Los archivos que se encuentran en EditorPath se asignan a la ruta de acceso CompileTimePath para la coincidencia de los puntos de interrupción y se asignan de CompileTimePath a EditorPath al mostrar ubicaciones de seguimiento de la pila.", "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.editorPath.description": "La ruta de acceso al árbol de origen que el editor va a usar.", - "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "False si la entrada solo se usa para la asignación de ubicación del marco de pila. True si la entrada debe usarse también al especificar ubicaciones de los puntos de interrupción." + "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "False si la entrada solo se usa para la asignación de ubicación del marco de pila. True si la entrada debe usarse también al especificar ubicaciones de los puntos de interrupción.", + "c_cpp.debuggers.symbolOptions.description": "Opciones para controlar cómo se encuentran y se cargan los símbolos (archivos .pdb).", + "c_cpp.debuggers.VSSymbolOptions.description": "Proporciona la configuración para buscar y cargar símbolos en el adaptador de depuración.", + "c_cpp.debuggers.VSSymbolOptions.searchPaths.description": "Matriz de direcciones URL del servidor de símbolos (ejemplo: http​://MiServidordeSímblosdeEjemplo) o de directorios (ejemplo: /compilar/symbols) para buscar archivos. pdb. Se buscarán estos directorios además de las ubicaciones predeterminadas, junto al módulo y la ruta de acceso en la que se anuló originalmente el archivo pdb.", + "c_cpp.debuggers.VSSymbolOptions.searchMicrosoftSymbolServer.description": "Si es «verdadero», se agrega el servidor de símbolos de Microsoft (https​://msdl.microsoft.com​/download/symbols) a la ruta de búsqueda de símbolos. Si no se especifica, esta opción tendrá el valor predeterminado de «falso».", + "c_cpp.debuggers.VSSymbolOptions.cachePath.description": "Directorio en el que se deberían almacenar en caché los símbolos descargados de los servidores de símbolos. Si no se especifica, el depurador usará de forma predeterminada %TEMP%\\SymbolCache en Windows.", + "c_cpp.debuggers.VSSymbolOptions.moduleFilter.description": "Proporciona opciones para controlar los módulos (archivos .dll) para los que el depurador intenta cargar los símbolos (archivos .pdb).", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.description": "Proporciona la configuración para cargar símbolos en el adaptador de depuración.", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.description": "Controla en cuál de los dos modos operativos básicos opera el filtro de módulo.", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.loadAllButExcluded.enumDescriptions": "Cargar símbolos para todos los módulos a menos que el módulo esté en la matriz «excludedModules».", + "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»." } \ No newline at end of file diff --git a/Extension/i18n/esn/src/LanguageServer/client.i18n.json b/Extension/i18n/esn/src/LanguageServer/client.i18n.json index 4c0585397b..36d9e955d5 100644 --- a/Extension/i18n/esn/src/LanguageServer/client.i18n.json +++ b/Extension/i18n/esn/src/LanguageServer/client.i18n.json @@ -17,7 +17,7 @@ "c.cpp.diagnostics": "Diagnósticos de C/C++", "dismiss.button": "Descartar", "diable.warnings.button": "Deshabilitar advertencias", - "unable.to.provide.configuraiton": "{0} no puede proporcionar información de configuración de IntelliSense para \"{1}\". Se utilizará la configuración de \"{2}\" en su lugar.", + "unable.to.provide.configuration": "{0} no puede proporcionar información de configuración de IntelliSense para \"{1}\". Se utilizará la configuración de \"{2}\" en su lugar.", "config.not.found": "No se encuentra el nombre de la configuración que se ha solicitado: {0}", "unsupported.client": "Cliente no admitido", "timed.out": "Se agotó el tiempo de espera a los {0} ms.", @@ -37,4 +37,4 @@ "no.compilers.found": "No se encontró ningún compilador de C++ en el sistema. Para la plataforma, se recomienda instalar {0} mediante las instrucciones del editor.", "compilers.found": "Se encontraron los siguientes compiladores de C++ en el sistema:", "compilers.found.message": "Puede especificar el compilador que se va a usar en la configuración de IntelliSense del proyecto." -} \ No newline at end of file +} diff --git a/Extension/i18n/fra/package.i18n.json b/Extension/i18n/fra/package.i18n.json index 3f4c2043a2..67d5168115 100644 --- a/Extension/i18n/fra/package.i18n.json +++ b/Extension/i18n/fra/package.i18n.json @@ -254,5 +254,18 @@ "c_cpp.taskDefinitions.detail.description": "Détails supplémentaires de la tâche", "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.description": "Chemins actuels et au moment de la compilation des mêmes arborescences sources. Les fichiers situés dans EditorPath sont mappés au chemin CompileTimePath pour les correspondances de points d'arrêt et sont mappés de CompileTimePath à EditorPath au moment de l'affichage des emplacements d'arborescences des appels de procédure.", "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.editorPath.description": "Chemin de l'arborescence source que l'éditeur va utiliser.", - "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "La valeur est false si cette entrée est utilisée uniquement pour le mappage d'emplacements de frame de pile. La valeur est true si cette entrée doit également être utilisée au moment de la spécification d'emplacements de point d'arrêt." + "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "La valeur est false si cette entrée est utilisée uniquement pour le mappage d'emplacements de frame de pile. La valeur est true si cette entrée doit également être utilisée au moment de la spécification d'emplacements de point d'arrêt.", + "c_cpp.debuggers.symbolOptions.description": "Options permettant de contrôler la façon dont les symboles (fichiers .pdb) sont trouvés et chargés.", + "c_cpp.debuggers.VSSymbolOptions.description": "Fournit la configuration pour localiser et charger des symboles sur l’adaptateur de débogage.", + "c_cpp.debuggers.VSSymbolOptions.searchPaths.description": "Tableau d’URL de serveur de symboles (exemple : http​://MyExampleSymbolServer) ou répertoires (exemple : /build/symbols) pour rechercher des fichiers .pdb. Ces répertoires seront recherchés en plus des emplacements par défaut, en regard du module et du chemin d’accès vers lequel le fichier pdb a été supprimé à l’origine.", + "c_cpp.debuggers.VSSymbolOptions.searchMicrosoftSymbolServer.description": "Si la valeur est « true », le serveur de symboles Microsoft (https​://msdl.microsoft.com​/download/symbols) est ajouté au chemin de recherche des symboles. Si elle n’est pas spécifiée, cette option a la valeur par défaut « false ».", + "c_cpp.debuggers.VSSymbolOptions.cachePath.description": "Répertoire dans lequel les symboles téléchargés à partir de serveurs de symboles doivent être mis en cache. S’il n’est pas spécifié, sur Windows, le débogueur a la valeur par défaut %TEMP%\\SymbolCache.", + "c_cpp.debuggers.VSSymbolOptions.moduleFilter.description": "Fournit des options pour contrôler les modules (fichiers .dll) pour lesquels le débogueur tentera de charger des symboles (fichiers .pdb).", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.description": "Fournit la configuration pour le chargement des symboles sur l’adaptateur de débogage.", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.description": "Contrôle les deux modes d’exploitation de base dans lesquels le filtre de module fonctionne.", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.loadAllButExcluded.enumDescriptions": "Chargez des symboles pour tous les modules, sauf si le module se trouve dans le tableau « excludedModules ».", + "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»." } \ No newline at end of file diff --git a/Extension/i18n/fra/src/LanguageServer/client.i18n.json b/Extension/i18n/fra/src/LanguageServer/client.i18n.json index d316e5307a..5802954828 100644 --- a/Extension/i18n/fra/src/LanguageServer/client.i18n.json +++ b/Extension/i18n/fra/src/LanguageServer/client.i18n.json @@ -17,7 +17,7 @@ "c.cpp.diagnostics": "Diagnostics C/C++", "dismiss.button": "Ignorer", "diable.warnings.button": "Désactiver les avertissements", - "unable.to.provide.configuraiton": "{0} ne peut pas fournir les informations de configuration IntelliSense de '{1}'. Les paramètres de la configuration de '{2}' sont utilisés à la place.", + "unable.to.provide.configuration": "{0} ne peut pas fournir les informations de configuration IntelliSense de '{1}'. Les paramètres de la configuration de '{2}' sont utilisés à la place.", "config.not.found": "Le nom de configuration demandé est introuvable : {0}", "unsupported.client": "Client non pris en charge", "timed.out": "Expiration du délai d'attente dans {0} ms.", @@ -37,4 +37,4 @@ "no.compilers.found": "Aucun C++ compilateur n’a été trouvé sur votre système. Pour votre plateforme, nous vous recommandons d’installer {0} à l’aide des instructions de l’éditeur.", "compilers.found": "Nous avons trouvé les C++ compilateur(s) suivant(s) sur votre système :", "compilers.found.message": "Vous pouvez spécifier le compilateur à utiliser dans la configuration IntelliSense de votre projet." -} \ No newline at end of file +} diff --git a/Extension/i18n/ita/package.i18n.json b/Extension/i18n/ita/package.i18n.json index fdae3dfe34..0a65f40f78 100644 --- a/Extension/i18n/ita/package.i18n.json +++ b/Extension/i18n/ita/package.i18n.json @@ -254,5 +254,18 @@ "c_cpp.taskDefinitions.detail.description": "Dettagli aggiuntivi dell'attività", "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.description": "Percorsi correnti e della fase di compilazione degli stessi alberi di origine. I file trovati in EditorPath vengono associati al percorso CompileTimePath per la corrispondenza dei punti di interruzione e associati da CompileTimePath a EditorPath durante la visualizzazione dei percorsi delle analisi dello stack.", "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.editorPath.description": "Percorso dell'albero di origine che verrà usato dall'editor.", - "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "False se questa voce viene usata solo per il mapping dei percorsi dello stack frame. True se questa voce deve essere usata anche quando si specificano i percorsi dei punti di interruzione." + "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "False se questa voce viene usata solo per il mapping dei percorsi dello stack frame. True se questa voce deve essere usata anche quando si specificano i percorsi dei punti di interruzione.", + "c_cpp.debuggers.symbolOptions.description": "Opzioni per controllare il modo in cui vengono trovati e caricati i simboli (file PDB).", + "c_cpp.debuggers.VSSymbolOptions.description": "Fornisce la configurazione per l'individuazione e il caricamento dei simboli nell'adattatore di debug.", + "c_cpp.debuggers.VSSymbolOptions.searchPaths.description": "Matrice di URL del server dei simboli, ad esempio http​://MyExampleSymbolServer, o di directory, ad esempio /build/symbols, in cui eseguire la ricerca dei file PDB. La ricerca verrà eseguita in queste directory oltre che nei percorsi predefiniti, in aggiunta al modulo e al percorso in cui è stato rilasciato originariamente il file PDB.", + "c_cpp.debuggers.VSSymbolOptions.searchMicrosoftSymbolServer.description": "Se 'true', il server dei simboli Microsoft (https​://msdl.microsoft.com​/download/symbols) viene aggiunto al percorso di ricerca dei simboli. Se non è specificata, l'impostazione predefinita di questa opzione è 'false'.", + "c_cpp.debuggers.VSSymbolOptions.cachePath.description": "Directory in cui i simboli scaricati dai server dei simboli devono essere memorizzati nella cache. Se non è specificata, in Windows il debugger userà come impostazione predefinita %TEMP%\\SymbolCache.", + "c_cpp.debuggers.VSSymbolOptions.moduleFilter.description": "Fornisce le opzioni per controllare i moduli (file DLL) per i quali il debugger tenterà di caricare i simboli (file PDB).", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.description": "Fornisce la configurazione per il caricamento dei simboli nell'adattatore di debug.", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.description": "Controlla in quale delle due modalità operative di base funziona il filtro del modulo.", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.loadAllButExcluded.enumDescriptions": "Carica i simboli per tutti i moduli a meno che il modulo non si trovi nella matrice 'excludedModules'.", + "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'." } \ No newline at end of file diff --git a/Extension/i18n/ita/src/LanguageServer/client.i18n.json b/Extension/i18n/ita/src/LanguageServer/client.i18n.json index 15f0547ad9..6191aa2c58 100644 --- a/Extension/i18n/ita/src/LanguageServer/client.i18n.json +++ b/Extension/i18n/ita/src/LanguageServer/client.i18n.json @@ -17,7 +17,7 @@ "c.cpp.diagnostics": "Diagnostica C/C++", "dismiss.button": "Ignora", "diable.warnings.button": "Disabilita avvisi", - "unable.to.provide.configuraiton": "{0} non riesce a fornire le informazioni di configurazione IntelliSense per '{1}'. Verranno usate le impostazioni della configurazione di '{2}'.", + "unable.to.provide.configuration": "{0} non riesce a fornire le informazioni di configurazione IntelliSense per '{1}'. Verranno usate le impostazioni della configurazione di '{2}'.", "config.not.found": "Il nome di configurazione richiesto non è stato trovato: {0}", "unsupported.client": "Client non supportato", "timed.out": "Timeout raggiunto in {0} ms.", @@ -37,4 +37,4 @@ "no.compilers.found": "Nel sistema non sono stati trovati compilatori C++. Per la piattaforma, è consigliabile installare {0} usando le istruzioni nell'editor.", "compilers.found": "Nel sistema sono stati trovati i seguenti compilatori C++:", "compilers.found.message": "È possibile specificare il compilatore da utilizzare nella configurazione IntelliSense del progetto." -} \ No newline at end of file +} diff --git a/Extension/i18n/jpn/package.i18n.json b/Extension/i18n/jpn/package.i18n.json index 78c89086c9..1ffdcdcc9c 100644 --- a/Extension/i18n/jpn/package.i18n.json +++ b/Extension/i18n/jpn/package.i18n.json @@ -254,5 +254,18 @@ "c_cpp.taskDefinitions.detail.description": "タスクのその他の詳細", "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.description": "同じソース ツリーへの現在およびコンパイル時のパスです。EditorPath で見つかったファイルは、ブレークポイントの一致のために CompileTimePath パスにマップされ、スタック トレースの場所を表示するときに CompileTimePath から EditorPath にマップされます。", "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.editorPath.description": "エディターで使用されるソース ツリーへのパスです。", - "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "このエントリをスタック フレームの場所のマッピングにのみ使用する場合は False です。ブレークポイントの位置を指定するときにもこのエントリを使用する必要がある場合は True です。" + "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "このエントリをスタック フレームの場所のマッピングにのみ使用する場合は False です。ブレークポイントの位置を指定するときにもこのエントリを使用する必要がある場合は True です。", + "c_cpp.debuggers.symbolOptions.description": "シンボル (.pdb ファイル) の検索と読み込みの方法を制御するオプションです。", + "c_cpp.debuggers.VSSymbolOptions.description": "デバッグ アダプターへのシンボルの検索と読み込みのための構成を提供します。", + "c_cpp.debuggers.VSSymbolOptions.searchPaths.description": ".pdb ファイルを検索するためのシンボル サーバー URL (例: http​://MyExampleSymbolServer) の配列またはディレクトリ (例: /build/symbols) の配列です。これらのディレクトリは、既定の場所 (すなわちモジュールと、 pdb が最初にドロップされたパスの横) に加えて、検索されます。", + "c_cpp.debuggers.VSSymbolOptions.searchMicrosoftSymbolServer.description": "'true' の場合、Microsoft シンボルサーバー (https​://msdl.microsoft.com​/download/symbols) がシンボルの検索パスに追加されます。指定しない場合、このオプションの既定値は 'false' です。", + "c_cpp.debuggers.VSSymbolOptions.cachePath.description": "シンボル サーバーからダウンロードされたシンボルがキャッシュされるディレクトリです。指定しない場合、Windows では、デバッガーは既定で %TEMP% \\SymbolCache に設定されます。", + "c_cpp.debuggers.VSSymbolOptions.moduleFilter.description": "デバッガーが、シンボル (.pdb ファイル) を読み込もうとするモジュール (.dll ファイル) を制御するオプションを提供します。", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.description": "デバッグ アダプターへのシンボルを読み込むための構成を提供します。", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.description": "モジュール フィルターが動作する 2 つの基本的な動作モードを制御します。", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.loadAllButExcluded.enumDescriptions": "モジュールが 'excludedModules' 配列内にある場合を除き、すべてのモジュールのシンボルを読み込みます。", + "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' に設定されていない限り、このプロパティは無視されます。" } \ No newline at end of file diff --git a/Extension/i18n/jpn/src/LanguageServer/client.i18n.json b/Extension/i18n/jpn/src/LanguageServer/client.i18n.json index 3b5c44fe99..cab93a120b 100644 --- a/Extension/i18n/jpn/src/LanguageServer/client.i18n.json +++ b/Extension/i18n/jpn/src/LanguageServer/client.i18n.json @@ -17,7 +17,7 @@ "c.cpp.diagnostics": "C/C++ 診断", "dismiss.button": "消去", "diable.warnings.button": "警告を無効にする", - "unable.to.provide.configuraiton": "{0} が '{1}' の IntelliSense 構成情報を指定できません。'{2}' 構成からの設定が代わりに使用されます。", + "unable.to.provide.configuration": "{0} が '{1}' の IntelliSense 構成情報を指定できません。'{2}' 構成からの設定が代わりに使用されます。", "config.not.found": "要求された構成名が見つかりません: {0}", "unsupported.client": "サポートされていないクライアント", "timed.out": "{0} ミリ秒でタイムアウトしました。", @@ -37,4 +37,4 @@ "no.compilers.found": "お使いのシステムで C++ コンパイラが見つかりませんでした。プラットフォーム向けに、エディターの指示に従って {0} をインストールすることをお勧めします。", "compilers.found": "システムに次の C++ コンパイラが見つかりました:", "compilers.found.message": "プロジェクトの IntelliSense 構成で使用するコンパイラを指定できます。" -} \ No newline at end of file +} diff --git a/Extension/i18n/kor/package.i18n.json b/Extension/i18n/kor/package.i18n.json index 7b5aa942a8..ad4b6f73b9 100644 --- a/Extension/i18n/kor/package.i18n.json +++ b/Extension/i18n/kor/package.i18n.json @@ -254,5 +254,18 @@ "c_cpp.taskDefinitions.detail.description": "작업의 추가 세부 정보", "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.description": "같은 소스 트리의 현재 및 컴파일 시간 경로입니다. EditorPath에 있는 파일은 중단점 일치를 위해 CompileTimePath 경로에 매핑되고 stacktrace 위치를 표시할 때 CompileTimePath에서 EditorPath로 매핑됩니다.", "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.editorPath.description": "편집기가 사용할 소스 트리의 경로입니다.", - "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "이 항목이 스택 프레임 위치 매핑에만 사용되면 False입니다. 이 항목이 중단점 위치를 지정할 때도 사용되어야 하면 True입니다." + "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "이 항목이 스택 프레임 위치 매핑에만 사용되면 False입니다. 이 항목이 중단점 위치를 지정할 때도 사용되어야 하면 True입니다.", + "c_cpp.debuggers.symbolOptions.description": "기호(.pdb 파일)를 찾아서 로드하는 방법을 제어하는 옵션입니다.", + "c_cpp.debuggers.VSSymbolOptions.description": "디버그 어댑터에 기호를 찾고 로드하기 위한 구성을 제공합니다.", + "c_cpp.debuggers.VSSymbolOptions.searchPaths.description": ".pdb 파일을 검색하는 기호 서버 URL(예: http​://MyExampleSymbolServer) 또는 디렉터리(예: /build/symbols)의 배열입니다. 이러한 디렉터리가 모듈 및 pdb가 원래 삭제된 경로 옆에 있는 기본 위치 외에 검색됩니다.", + "c_cpp.debuggers.VSSymbolOptions.searchMicrosoftSymbolServer.description": "'true'인 경우 Microsoft 기호 서버(https​://msdl.microsoft.com​/download/symbols)가 기호 검색 경로에 추가됩니다. 지정하지 않으면 이 옵션의 기본값은 'false'입니다.", + "c_cpp.debuggers.VSSymbolOptions.cachePath.description": "기호 서버에서 다운로드한 기호를 캐시해야 하는 디렉터리입니다. 지정되지 않은 경우 Windows에서 디버거는 기본적으로 %TEMP%\\SymbolCache로 설정됩니다.", + "c_cpp.debuggers.VSSymbolOptions.moduleFilter.description": "디버거에서 기호(.pdb 파일)를 로드하려고 시도할 모듈(.dll 파일)을 제어하는 옵션을 제공합니다.", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.description": "디버그 어댑터에 기호를 로드하기 위한 구성을 제공합니다.", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.description": "두 가지 기본 운영 모드 중 모듈 필터가 작동하는 모드를 제어합니다.", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.loadAllButExcluded.enumDescriptions": "모듈이 'excludedModules' 배열에 있지 않으면 모든 모듈에 대한 기호를 로드합니다.", + "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'로 설정되어 있지 않으면 이 속성은 무시됩니다." } \ No newline at end of file diff --git a/Extension/i18n/kor/src/LanguageServer/client.i18n.json b/Extension/i18n/kor/src/LanguageServer/client.i18n.json index f16067cd7e..1887af64f8 100644 --- a/Extension/i18n/kor/src/LanguageServer/client.i18n.json +++ b/Extension/i18n/kor/src/LanguageServer/client.i18n.json @@ -17,7 +17,7 @@ "c.cpp.diagnostics": "C/C++ 진단", "dismiss.button": "해제", "diable.warnings.button": "경고 사용 안 함", - "unable.to.provide.configuraiton": "{0}은(는) '{1}'에 대한 IntelliSense 구성 정보를 제공할 수 없습니다. '{2}' 구성의 설정이 대신 사용됩니다.", + "unable.to.provide.configuration": "{0}은(는) '{1}'에 대한 IntelliSense 구성 정보를 제공할 수 없습니다. '{2}' 구성의 설정이 대신 사용됩니다.", "config.not.found": "요청된 구성 이름을 찾을 수 없음: {0}", "unsupported.client": "지원되지 않는 클라이언트", "timed.out": "{0}ms 후 시간이 초과되었습니다.", @@ -37,4 +37,4 @@ "no.compilers.found": "C++시스템에서 컴파일러를 찾을 수 없습니다. 플랫폼의 경우 편집기의 지침을 사용하여 {0}을(를) 설치하는 것이 좋습니다.", "compilers.found": "시스템에서 다음 C++ 컴파일러를 찾았습니다.", "compilers.found.message": "프로젝트의 IntelliSense 구성에서 사용할 컴파일러를 지정할 수 있습니다." -} \ No newline at end of file +} diff --git a/Extension/i18n/plk/package.i18n.json b/Extension/i18n/plk/package.i18n.json index 335850101f..8bd959f14e 100644 --- a/Extension/i18n/plk/package.i18n.json +++ b/Extension/i18n/plk/package.i18n.json @@ -254,5 +254,18 @@ "c_cpp.taskDefinitions.detail.description": "Dodatkowe szczegóły zadania", "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.description": "Ścieżki bieżące i czasu kompilacji do tych samych drzew źródeł. Pliki znalezione w ścieżce EditorPath są mapowane na ścieżkę CompileTimePath na potrzeby dopasowywania punktu przerwania i mapowane ze ścieżki CompileTimePath na ścieżkę EditorPath podczas wyświetlania lokalizacji śladu stosu.", "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.editorPath.description": "Ścieżka do drzewa źródeł, które będzie używane przez edytor.", - "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "Wartość false, jeśli ten wpis jest używany tylko do mapowania lokalizacji ramki stosu. Wartość true, jeśli ten wpis powinien być również używany podczas określania lokalizacji punktów przerwania." + "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "Wartość false, jeśli ten wpis jest używany tylko do mapowania lokalizacji ramki stosu. Wartość true, jeśli ten wpis powinien być również używany podczas określania lokalizacji punktów przerwania.", + "c_cpp.debuggers.symbolOptions.description": "Opcje umożliwiające kontrolowanie sposobu znajdowania i ładowania symboli (plików PDB).", + "c_cpp.debuggers.VSSymbolOptions.description": "Zapewnia konfigurację umożliwiającą lokalizowanie i ładowanie symboli do adaptera debugowania.", + "c_cpp.debuggers.VSSymbolOptions.searchPaths.description": "Tablica adresów URL serwera symboli (przykład: http:​//MyExampleSymbolServer) lub katalogów (przykład:/build/Symbols) w celu wyszukania plików PDB. Te katalogi zostaną wyszukane jako uzupełnienie lokalizacji domyślnych — obok modułu i ścieżki, do której plik PDB został pierwotnie porzucony.", + "c_cpp.debuggers.VSSymbolOptions.searchMicrosoftSymbolServer.description": "W przypadku wartości „true” serwer symboli firmy Microsoft (https​://msdl.microsoft.com​/download/symbols) zostanie dodany do ścieżki wyszukiwania symboli. Jeśli ta opcja nie zostanie określona, domyślnie zostanie wybrana wartość „false”.", + "c_cpp.debuggers.VSSymbolOptions.cachePath.description": "Katalog, w którym symbole pobierane z serwerów symboli powinny być buforowane. Jeśli nie określono tego parametru, w systemie Windows debuger będzie domyślnie korzystał z %TEMP% \\SymbolCache.", + "c_cpp.debuggers.VSSymbolOptions.moduleFilter.description": "Udostępnia opcje umożliwiające kontrolowanie modułów (plików DLL), dla których debuger będzie próbował załadować symbole (pliki PDB).", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.description": "Zapewnia konfigurację umożliwiającą ładowanie symboli do adaptera debugowania.", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.description": "Steruje dwoma podstawowymi trybami operacyjnymi, w których działa filtr modułu.", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.loadAllButExcluded.enumDescriptions": "Załaduj symbole dla wszystkich modułów, jeśli moduł nie znajduje się w tablicy „excludedModules”.", + "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”." } \ No newline at end of file diff --git a/Extension/i18n/plk/src/LanguageServer/client.i18n.json b/Extension/i18n/plk/src/LanguageServer/client.i18n.json index c33326451e..56b840e59f 100644 --- a/Extension/i18n/plk/src/LanguageServer/client.i18n.json +++ b/Extension/i18n/plk/src/LanguageServer/client.i18n.json @@ -17,7 +17,7 @@ "c.cpp.diagnostics": "Diagnostyka języka C/C++", "dismiss.button": "Odrzuć", "diable.warnings.button": "Wyłącz ostrzeżenia", - "unable.to.provide.configuraiton": "{0} nie może dostarczyć informacji o konfiguracji funkcji IntelliSense dla elementu „{1}”. W zamian zostaną użyte ustawienia z konfiguracji „{2}”.", + "unable.to.provide.configuration": "{0} nie może dostarczyć informacji o konfiguracji funkcji IntelliSense dla elementu „{1}”. W zamian zostaną użyte ustawienia z konfiguracji „{2}”.", "config.not.found": "Nie znaleziono żądanej nazwy konfiguracji: {0}", "unsupported.client": "Nieobsługiwany klient", "timed.out": "Przekroczono limit czasu: {0} ms.", @@ -37,4 +37,4 @@ "no.compilers.found": "W systemie nie odnaleziono żadnych kompilatorów języka C++. W przypadku Twojej platformy zalecamy zainstalowanie {0} przy użyciu instrukcji w edytorze.", "compilers.found": "Znaleźliśmy następujące kompilatory C++ w systemie:", "compilers.found.message": "Możesz określić, który kompilator ma być używany w konfiguracji IntelliSense projektu." -} \ No newline at end of file +} diff --git a/Extension/i18n/ptb/package.i18n.json b/Extension/i18n/ptb/package.i18n.json index 749aa7e3b7..1ef68dc418 100644 --- a/Extension/i18n/ptb/package.i18n.json +++ b/Extension/i18n/ptb/package.i18n.json @@ -254,5 +254,18 @@ "c_cpp.taskDefinitions.detail.description": "Detalhes adicionais da tarefa", "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.description": "Os caminhos atual e do tempo de compilação são mapeados para as mesmas árvores de origem. Os arquivos encontrados em EditorPath são mapeados para o caminho CompileTimePath para correspondência de ponto de interrupção e mapeados de CompileTimePath para EditorPath ao exibir os locais de rastreamento de pilha.", "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.editorPath.description": "O caminho para a árvore de origem que o editor usará.", - "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "False quando esta entrada é usada apenas para o mapeamento de local de registro de ativação. True quando esta entrada também deve ser usada ao especificar locais de ponto de interrupção." + "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "False quando esta entrada é usada apenas para o mapeamento de local de registro de ativação. True quando esta entrada também deve ser usada ao especificar locais de ponto de interrupção.", + "c_cpp.debuggers.symbolOptions.description": "Opções para controlar como os símbolos (arquivos .pdb) são encontrados e carregados.", + "c_cpp.debuggers.VSSymbolOptions.description": "Fornece configuração para localizar e carregar símbolos no adaptador de depuração.", + "c_cpp.debuggers.VSSymbolOptions.searchPaths.description": "Matriz de URLs do servidor de símbolos (exemplo: http​://MyExampleSymbolServer) ou diretórios (exemplo: /build/symbols) para pesquisar arquivos .pdb. Esses diretórios serão pesquisados além dos locais padrão, ao lado do módulo e do caminho em que o pdb foi removido originalmente.", + "c_cpp.debuggers.VSSymbolOptions.searchMicrosoftSymbolServer.description": "Se for 'true', o servidor de Símbolos da Microsoft (https​://msdl.microsoft.com​/download/symbols) será adicionado ao caminho de pesquisa de símbolos. Se não for especificado, essa opção usará como padrão 'false'.", + "c_cpp.debuggers.VSSymbolOptions.cachePath.description": "Diretório em que os símbolos baixados dos servidores de símbolos devem ser armazenados em cache. Se não for especificado no Windows, o depurador usará %TEMP%\\SymbolCache como padrão.", + "c_cpp.debuggers.VSSymbolOptions.moduleFilter.description": "Fornece opções para controlar para quais módulos (arquivos .dll) o depurador tentará carregar símbolos (arquivos .pdb).", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.description": "Fornece configuração para carregar símbolos no adaptador de depuração.", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.description": "Controla em quais dos dois modos operacionais básicos o filtro de módulo opera.", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.loadAllButExcluded.enumDescriptions": "Carregue símbolos para todos os módulos, a menos que o módulo esteja na matriz 'excludedModules'.", + "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'." } \ No newline at end of file diff --git a/Extension/i18n/ptb/src/LanguageServer/client.i18n.json b/Extension/i18n/ptb/src/LanguageServer/client.i18n.json index 68f2ed9322..e1b79f7b28 100644 --- a/Extension/i18n/ptb/src/LanguageServer/client.i18n.json +++ b/Extension/i18n/ptb/src/LanguageServer/client.i18n.json @@ -17,7 +17,7 @@ "c.cpp.diagnostics": "Diagnóstico de C/C++", "dismiss.button": "Ignorar", "diable.warnings.button": "Desabilitar os Avisos", - "unable.to.provide.configuraiton": "{0} não pode fornecer informações de configuração de IntelliSense para '{1}'. Em seu lugar, serão usadas as definições da configuração '{2}'.", + "unable.to.provide.configuration": "{0} não pode fornecer informações de configuração de IntelliSense para '{1}'. Em seu lugar, serão usadas as definições da configuração '{2}'.", "config.not.found": "O nome de configuração solicitado não foi encontrado: {0}", "unsupported.client": "Cliente sem suporte", "timed.out": "Tempo limite atingido em {0} ms.", @@ -37,4 +37,4 @@ "no.compilers.found": "Não foram encontrados compiladores C++ em seu sistema. Para sua plataforma, recomendamos instalar {0} usando as instruções do editor.", "compilers.found": "Encontramos o(s) seguinte(s) compilador(es) C++ em seu sistema:", "compilers.found.message": "Você pode especificar qual compilador usar na Configuração IntelliSense de seu projeto." -} \ No newline at end of file +} diff --git a/Extension/i18n/rus/package.i18n.json b/Extension/i18n/rus/package.i18n.json index a5d104e19f..c633f16a28 100644 --- a/Extension/i18n/rus/package.i18n.json +++ b/Extension/i18n/rus/package.i18n.json @@ -254,5 +254,18 @@ "c_cpp.taskDefinitions.detail.description": "Дополнительные сведения о задаче", "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.description": "Текущие пути и пути времени компиляции к одним и тем же деревьям SourceTree. Файлы по пути EditorPath сопоставляются с путем CompileTimePath для сопоставления точек останова, а также сопоставляются из пути CompileTimePath с путем EditorPath при отображении расположений трассировки стека.", "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.editorPath.description": "Путь к дереву SourceTree, которое будет использоваться редактором.", - "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "Значение false, если эта запись используется только для сопоставления расположений кадра стека. Значение true, если эта запись также должна использоваться при указании расположений точек останова." + "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "Значение false, если эта запись используется только для сопоставления расположений кадра стека. Значение true, если эта запись также должна использоваться при указании расположений точек останова.", + "c_cpp.debuggers.symbolOptions.description": "Параметры, управляющие поиском и загрузкой символов (PDB-файлов).", + "c_cpp.debuggers.VSSymbolOptions.description": "Предоставляет конфигурацию для поиска и загрузки символов в адаптер отладки.", + "c_cpp.debuggers.VSSymbolOptions.searchPaths.description": "Массив URL-адресов сервера символов (например, http​://MyExampleSymbolServer) или каталогов (например: /build/symbols) для поиска PDB-файлов. Поиск в этих каталогах осуществляется в дополнение к расположениям по умолчанию — рядом с модулем и путем первоначального удаления PDB-файла.", + "c_cpp.debuggers.VSSymbolOptions.searchMicrosoftSymbolServer.description": "Если значение равно \"true\", сервер символов (Майкрософт) (https​://msdl.microsoft.com​/download/symbols) добавляется к пути поиска символов. Если этот параметр не задан, по умолчанию используется значение \"false\".", + "c_cpp.debuggers.VSSymbolOptions.cachePath.description": "Каталог, в котором должны кэшироваться символы, загруженные с серверов символов. Если значение не указано, то отладчик в Windows по умолчанию будет %TEMP%\\SymbolCache.", + "c_cpp.debuggers.VSSymbolOptions.moduleFilter.description": "Предоставляет параметры для управления тем, для каких модулей (DLL-файлы) отладчик будет пытаться загружать символы (PDB-файлы).", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.description": "Предоставляет конфигурацию для загрузки символов в адаптер отладки.", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.description": "Управляет тем, в каком из двух базовых режимов работы фильтр модуля работает.", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.loadAllButExcluded.enumDescriptions": "Загрузите символы для всех модулей, если модуль не находится в массиве \"excludedModules\".", + "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\"." } \ No newline at end of file diff --git a/Extension/i18n/rus/src/LanguageServer/client.i18n.json b/Extension/i18n/rus/src/LanguageServer/client.i18n.json index 1fbe37f7d1..816862a577 100644 --- a/Extension/i18n/rus/src/LanguageServer/client.i18n.json +++ b/Extension/i18n/rus/src/LanguageServer/client.i18n.json @@ -17,7 +17,7 @@ "c.cpp.diagnostics": "Диагностика C/C++", "dismiss.button": "Закрыть", "diable.warnings.button": "Отключить предупреждения", - "unable.to.provide.configuraiton": "{0} не удается предоставить сведения о конфигурации IntelliSense для \"{1}\". Вместо этого будут использованы параметры из конфигурации \"{2}\".", + "unable.to.provide.configuration": "{0} не удается предоставить сведения о конфигурации IntelliSense для \"{1}\". Вместо этого будут использованы параметры из конфигурации \"{2}\".", "config.not.found": "Запрошенное имя конфигурации не найдено: {0}", "unsupported.client": "Неподдерживаемый клиент", "timed.out": "Время ожидания истекло через {0} мс.", @@ -37,4 +37,4 @@ "no.compilers.found": "В системе не найдены компиляторы C++. Для вашей платформы рекомендуется установить {0}. Необходимые инструкции см. в редакторе.", "compilers.found": "В системе обнаружены следующие компиляторы C++:", "compilers.found.message": "Вы можете указать, какой компилятор использовать в конфигурации IntelliSense проекта." -} \ No newline at end of file +} diff --git a/Extension/i18n/trk/package.i18n.json b/Extension/i18n/trk/package.i18n.json index b795ec9b0b..1267186379 100644 --- a/Extension/i18n/trk/package.i18n.json +++ b/Extension/i18n/trk/package.i18n.json @@ -254,5 +254,18 @@ "c_cpp.taskDefinitions.detail.description": "Görevin ek ayrıntıları", "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.description": "Aynı kaynak ağaçlarına yönelik geçerli ve derleme zamanı yolları. EditorPath altında bulunan dosyalar, kesme noktası eşleştirmesi için CompileTimePath yoluna eşlenir ve yığın izleme konumlarını görüntülerken CompileTimePath öğesinden EditorPath'e eşlenir.", "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.editorPath.description": "Düzenleyicinin kullanacağı kaynak ağacının yolu.", - "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "Bu giriş yalnızca yığın çerçeve konumu eşlemesi için kullanılıyorsa false. Bu girişin, kesme noktası konumları belirtilirken de kullanılması gerekiyorsa true." + "c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.useForBreakpoints.description": "Bu giriş yalnızca yığın çerçeve konumu eşlemesi için kullanılıyorsa false. Bu girişin, kesme noktası konumları belirtilirken de kullanılması gerekiyorsa true.", + "c_cpp.debuggers.symbolOptions.description": "Simgelerin (.pdb dosyaları) nasıl bulunup yüklendiğini denetleme seçenekleri.", + "c_cpp.debuggers.VSSymbolOptions.description": "Sembolleri bulup hata ayıklama bağdaştırıcısına yüklemeye yönelik yapılandırma sağlar.", + "c_cpp.debuggers.VSSymbolOptions.searchPaths.description": ".pdb dosyalarını aramak için sembol sunucusu URL’si (ör: http​://MyExampleSymbolServer) veya dizin (ör. /build/symbols) dizisi. Bu dizinler, modülün yanındaki varsayılan konumların yanı sıra, pdb'nin bırakıldığı yolda arama yapar.", + "c_cpp.debuggers.VSSymbolOptions.searchMicrosoftSymbolServer.description": "'True' ise, Microsoft Sembol sunucusu (https​://msdl.microsoft.com​/download/symbols) sembol arama yoluna eklenir. Belirtilmezse, bu seçenek varsayılan olarak 'false' değerine ayarlanır.", + "c_cpp.debuggers.VSSymbolOptions.cachePath.description": "Sembol sunucularından indirilen sembollerin önbelleğe alınması gereken dizin. Belirtilmezse, Windows’da hata ayıklayıcısı varsayılan olarak %TEMP%\\SymbolCache' değerine ayarlanır.", + "c_cpp.debuggers.VSSymbolOptions.moduleFilter.description": "Hata ayıklayıcısının simgeleri (.pdb dosyaları) yüklemeye çalışacağı modülü (.dll dosyaları) denetlemeye yönelik seçenekleri sağlar.", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.description": "Sembolleri hata ayıklama bağdaştırıcısına yüklemeye yönelik yapılandırma sağlar.", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.description": "Modül filtresinin iki temel işletim modundan hangisinde çalışacağını denetler.", + "c_cpp.debuggers.VSSymbolOptionsModuleFilter.mode.loadAllButExcluded.enumDescriptions": "Modül 'excludedModules' dizisinde değilse tüm modüllerin sembollerini yükleyin.", + "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." } \ No newline at end of file diff --git a/Extension/i18n/trk/src/LanguageServer/client.i18n.json b/Extension/i18n/trk/src/LanguageServer/client.i18n.json index 49d3443cd9..d14dcfc555 100644 --- a/Extension/i18n/trk/src/LanguageServer/client.i18n.json +++ b/Extension/i18n/trk/src/LanguageServer/client.i18n.json @@ -17,7 +17,7 @@ "c.cpp.diagnostics": "C/C++ Tanılaması", "dismiss.button": "Kapat", "diable.warnings.button": "Uyarıları Devre Dışı Bırak", - "unable.to.provide.configuraiton": "{0}, '{1}' için IntelliSense yapılandırma bilgilerini sağlayamıyor. Bunun yerine '{2}' yapılandırmasındaki ayarlar kullanılacak.", + "unable.to.provide.configuration": "{0}, '{1}' için IntelliSense yapılandırma bilgilerini sağlayamıyor. Bunun yerine '{2}' yapılandırmasındaki ayarlar kullanılacak.", "config.not.found": "İstenen yapılandırma adı bulunamadı: {0}", "unsupported.client": "Desteklenmeyen istemci", "timed.out": "{0} ms'de zaman aşımına uğradı.", @@ -37,4 +37,4 @@ "no.compilers.found": "Sisteminizde C++ derleyicisi bulunamadı. Platformunuz için, düzenleyicideki yönergeleri takip ederek {0} derleyicisini yüklemenizi öneririz.", "compilers.found": "Sisteminizde şu C++ derleyicileri bulundu:", "compilers.found.message": "Projenizin IntelliSense Yapılandırmasında kullanılacak derleyiciyi belirtebilirsiniz." -} \ No newline at end of file +} diff --git a/Extension/package.json b/Extension/package.json index 3ab0773d72..13a81d7da9 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -2779,9 +2779,10 @@ "plist": "^3.0.2", "tmp": "^0.1.0", "vscode-cpptools": "^5.0.0", - "vscode-extension-telemetry": "^0.1.2", + "vscode-extension-telemetry": "^0.1.7", "vscode-languageclient": "^5.2.1", "vscode-nls": "^4.1.1", + "vscode-tas-client": "^0.1.22", "which": "^2.0.2", "yauzl": "^2.10.0" }, @@ -3120,4 +3121,4 @@ "integrity": "E5046509D510086B99F171595114220AD8E9F820E7238B6A5199CD78B9AD2078" } ] -} \ No newline at end of file +} diff --git a/Extension/src/LanguageServer/Providers/foldingRangeProvider.ts b/Extension/src/LanguageServer/Providers/foldingRangeProvider.ts index e27ef15268..7e3f9baadc 100644 --- a/Extension/src/LanguageServer/Providers/foldingRangeProvider.ts +++ b/Extension/src/LanguageServer/Providers/foldingRangeProvider.ts @@ -3,7 +3,7 @@ * See 'LICENSE' in the project root for license information. * ------------------------------------------------------------------------------------------ */ import * as vscode from 'vscode'; -import { DefaultClient, GetFoldingRangesParams, GetFoldingRangesRequest, FoldingRangeKind, GetFoldingRangesResult } from '../client'; +import { DefaultClient, GetFoldingRangesParams, GetFoldingRangesRequest, FoldingRangeKind, GetFoldingRangesResult, CppFoldingRange } from '../client'; export class FoldingRangeProvider implements vscode.FoldingRangeProvider { private client: DefaultClient; @@ -27,10 +27,13 @@ export class FoldingRangeProvider implements vscode.FoldingRangeProvider { return undefined; } const result: vscode.FoldingRange[] = []; - ranges.ranges.forEach((r) => { + ranges.ranges.forEach((r: CppFoldingRange, index: number, array: CppFoldingRange[]) => { const foldingRange: vscode.FoldingRange = { start: r.range.start.line, - end: r.range.end.line + // Move the end range up one if it overlaps with the next start range, because + // VS Code doesn't support column-based folding: https://github.com/microsoft/vscode/issues/50840 + end: r.range.end.line - (index + 1 >= array.length ? 0 : + (array[index + 1].range.start.line !== r.range.end.line ? 0 : 1)) }; switch (r.kind) { case FoldingRangeKind.Comment: diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index cdfa0000f7..613d5972a2 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -37,7 +37,6 @@ import { updateLanguageConfigurations, registerCommands } from './extension'; import { SettingsTracker, getTracker } from './settingsTracker'; import { getTestHook, TestHook } from '../testHook'; import { getCustomConfigProviders, CustomConfigurationProvider1, isSameProviderExtensionId } from '../LanguageServer/customProviders'; -import { ABTestSettings, getABTestSettings } from '../abTesting'; import * as fs from 'fs'; import * as os from 'os'; import * as refs from './references'; @@ -278,6 +277,7 @@ interface CodeActionCommand { localizeStringParams: LocalizeStringParams; command: string; arguments?: any[]; + edit?: TextEdit; } interface ShowMessageWindowParams { @@ -369,14 +369,14 @@ export enum FoldingRangeKind { Region = 3 } -interface FoldingRange { +export interface CppFoldingRange { kind: FoldingRangeKind; range: Range; } export interface GetFoldingRangesResult { canceled: boolean; - ranges: FoldingRange[]; + ranges: CppFoldingRange[]; } interface AbortRequestParams { @@ -497,9 +497,9 @@ const LogTelemetryNotification: NotificationType = new N const ReportTagParseStatusNotification: NotificationType = new NotificationType('cpptools/reportTagParseStatus'); const ReportStatusNotification: NotificationType = new NotificationType('cpptools/reportStatus'); const DebugProtocolNotification: NotificationType = new NotificationType('cpptools/debugProtocol'); -const DebugLogNotification: NotificationType = new NotificationType('cpptools/debugLog'); -const InactiveRegionNotification: NotificationType = new NotificationType('cpptools/inactiveRegions'); -const CompileCommandsPathsNotification: NotificationType = new NotificationType('cpptools/compileCommandsPaths'); +const DebugLogNotification: NotificationType = new NotificationType('cpptools/debugLog'); +const InactiveRegionNotification: NotificationType = new NotificationType('cpptools/inactiveRegions'); +const CompileCommandsPathsNotification: NotificationType = new NotificationType('cpptools/compileCommandsPaths'); const ReferencesNotification: NotificationType = new NotificationType('cpptools/references'); const ReportReferencesProgressNotification: NotificationType = new NotificationType('cpptools/reportReferencesProgress'); const RequestCustomConfig: NotificationType = new NotificationType('cpptools/requestCustomConfig'); @@ -508,7 +508,7 @@ const ShowMessageWindowNotification: NotificationType = new NotificationType('cpptools/showWarning'); const ReportTextDocumentLanguage: NotificationType = new NotificationType('cpptools/reportTextDocumentLanguage'); const SemanticTokensChanged: NotificationType = new NotificationType('cpptools/semanticTokensChanged'); -const IntelliSenseSetupNotification: NotificationType = new NotificationType('cpptools/IntelliSenseSetup'); +const IntelliSenseSetupNotification: NotificationType = new NotificationType('cpptools/IntelliSenseSetup'); let failureMessageShown: boolean = false; @@ -808,13 +808,23 @@ export class DefaultClient implements Client { // Convert to vscode.CodeAction array commands.forEach((command) => { const title: string = util.getLocalizedString(command.localizeStringParams); + let edit: vscode.WorkspaceEdit | undefined; + if (command.edit) { + edit = new vscode.WorkspaceEdit(); + edit.replace(document.uri, new vscode.Range( + new vscode.Position(command.edit.range.start.line, command.edit.range.start.character), + new vscode.Position(command.edit.range.end.line, command.edit.range.end.character)), + command.edit.newText); + } const vscodeCodeAction: vscode.CodeAction = { title: title, - command: { + command: command.command === "edit" ? undefined : { title: title, command: command.command, arguments: command.arguments - } + }, + edit: edit, + kind: edit === undefined ? vscode.CodeActionKind.QuickFix : vscode.CodeActionKind.RefactorInline }; resultCodeActions.push(vscodeCodeAction); }); @@ -866,7 +876,7 @@ export class DefaultClient implements Client { if (settings.formattingEngine !== "Disabled") { this.documentFormattingProviderDisposable = vscode.languages.registerDocumentFormattingEditProvider(this.documentSelector, new DocumentFormattingEditProvider(this)); this.formattingRangeProviderDisposable = vscode.languages.registerDocumentRangeFormattingEditProvider(this.documentSelector, new DocumentRangeFormattingEditProvider(this)); - this.onTypeFormattingProviderDisposable = vscode.languages.registerOnTypeFormattingEditProvider(this.documentSelector, new OnTypeFormattingEditProvider(this), ";", "}", "\n"); + this.onTypeFormattingProviderDisposable = vscode.languages.registerOnTypeFormattingEditProvider(this.documentSelector, new OnTypeFormattingEditProvider(this), ";", "}", "\n"); } if (settings.codeFolding) { this.codeFoldingProvider = new FoldingRangeProvider(this); @@ -922,7 +932,7 @@ export class DefaultClient implements Client { const serverName: string = this.getName(this.rootFolder); const serverOptions: ServerOptions = { run: { command: serverModule }, - debug: { command: serverModule, args: [ serverName ] } + debug: { command: serverModule, args: [serverName] } }; // Get all the per-workspace settings. @@ -973,41 +983,41 @@ export class DefaultClient implements Client { const settings_newLineBeforeOpenBraceFunction: (string | undefined)[] = []; const settings_newLineBeforeOpenBraceBlock: (string | undefined)[] = []; const settings_newLineBeforeOpenBraceLambda: (string | undefined)[] = []; - const settings_newLineScopeBracesOnSeparateLines: boolean[] = []; - const settings_newLineCloseBraceSameLineEmptyType: boolean[] = []; - const settings_newLineCloseBraceSameLineEmptyFunction: boolean[] = []; - const settings_newLineBeforeCatch: boolean[] = []; - const settings_newLineBeforeElse: boolean[] = []; - const settings_newLineBeforeWhileInDoWhile: boolean[] = []; + const settings_newLineScopeBracesOnSeparateLines: boolean[] = []; + const settings_newLineCloseBraceSameLineEmptyType: boolean[] = []; + const settings_newLineCloseBraceSameLineEmptyFunction: boolean[] = []; + const settings_newLineBeforeCatch: boolean[] = []; + const settings_newLineBeforeElse: boolean[] = []; + const settings_newLineBeforeWhileInDoWhile: boolean[] = []; const settings_spaceBeforeFunctionOpenParenthesis: (string | undefined)[] = []; - const settings_spaceWithinParameterListParentheses: boolean[] = []; - const settings_spaceBetweenEmptyParameterListParentheses: boolean[] = []; - const settings_spaceAfterKeywordsInControlFlowStatements: boolean[] = []; - const settings_spaceWithinControlFlowStatementParentheses: boolean[] = []; - const settings_spaceBeforeLambdaOpenParenthesis: boolean[] = []; - const settings_spaceWithinCastParentheses: boolean[] = []; - const settings_spaceSpaceAfterCastCloseParenthesis: boolean[] = []; - const settings_spaceWithinExpressionParentheses: boolean[] = []; - const settings_spaceBeforeBlockOpenBrace: boolean[] = []; - const settings_spaceBetweenEmptyBraces: boolean[] = []; - const settings_spaceBeforeInitializerListOpenBrace: boolean[] = []; - const settings_spaceWithinInitializerListBraces: boolean[] = []; - const settings_spacePreserveInInitializerList: boolean[] = []; - const settings_spaceBeforeOpenSquareBracket: boolean[] = []; - const settings_spaceWithinSquareBrackets: boolean[] = []; - const settings_spaceBeforeEmptySquareBrackets: boolean[] = []; - const settings_spaceBetweenEmptySquareBrackets: boolean[] = []; - const settings_spaceGroupSquareBrackets: boolean[] = []; - const settings_spaceWithinLambdaBrackets: boolean[] = []; - const settings_spaceBetweenEmptyLambdaBrackets: boolean[] = []; - const settings_spaceBeforeComma: boolean[] = []; - const settings_spaceAfterComma: boolean[] = []; - const settings_spaceRemoveAroundMemberOperators: boolean[] = []; - const settings_spaceBeforeInheritanceColon: boolean[] = []; - const settings_spaceBeforeConstructorColon: boolean[] = []; - const settings_spaceRemoveBeforeSemicolon: boolean[] = []; - const settings_spaceInsertAfterSemicolon: boolean[] = []; - const settings_spaceRemoveAroundUnaryOperator: boolean[] = []; + const settings_spaceWithinParameterListParentheses: boolean[] = []; + const settings_spaceBetweenEmptyParameterListParentheses: boolean[] = []; + const settings_spaceAfterKeywordsInControlFlowStatements: boolean[] = []; + const settings_spaceWithinControlFlowStatementParentheses: boolean[] = []; + const settings_spaceBeforeLambdaOpenParenthesis: boolean[] = []; + const settings_spaceWithinCastParentheses: boolean[] = []; + const settings_spaceSpaceAfterCastCloseParenthesis: boolean[] = []; + const settings_spaceWithinExpressionParentheses: boolean[] = []; + const settings_spaceBeforeBlockOpenBrace: boolean[] = []; + const settings_spaceBetweenEmptyBraces: boolean[] = []; + const settings_spaceBeforeInitializerListOpenBrace: boolean[] = []; + const settings_spaceWithinInitializerListBraces: boolean[] = []; + const settings_spacePreserveInInitializerList: boolean[] = []; + const settings_spaceBeforeOpenSquareBracket: boolean[] = []; + const settings_spaceWithinSquareBrackets: boolean[] = []; + const settings_spaceBeforeEmptySquareBrackets: boolean[] = []; + const settings_spaceBetweenEmptySquareBrackets: boolean[] = []; + const settings_spaceGroupSquareBrackets: boolean[] = []; + const settings_spaceWithinLambdaBrackets: boolean[] = []; + const settings_spaceBetweenEmptyLambdaBrackets: boolean[] = []; + const settings_spaceBeforeComma: boolean[] = []; + const settings_spaceAfterComma: boolean[] = []; + const settings_spaceRemoveAroundMemberOperators: boolean[] = []; + const settings_spaceBeforeInheritanceColon: boolean[] = []; + const settings_spaceBeforeConstructorColon: boolean[] = []; + const settings_spaceRemoveBeforeSemicolon: boolean[] = []; + const settings_spaceInsertAfterSemicolon: boolean[] = []; + const settings_spaceRemoveAroundUnaryOperator: boolean[] = []; const settings_spaceAroundBinaryOperator: (string | undefined)[] = []; const settings_spaceAroundAssignmentOperator: (string | undefined)[] = []; const settings_spacePointerReferenceAlignment: (string | undefined)[] = []; @@ -1117,8 +1127,6 @@ export class DefaultClient implements Client { } } - const abTestSettings: ABTestSettings = getABTestSettings(); - let intelliSenseCacheDisabled: boolean = false; if (os.platform() === "darwin") { const releaseParts: string[] = os.release().split("."); @@ -1143,7 +1151,7 @@ export class DefaultClient implements Client { clang_format_path: settings_clangFormatPath, clang_format_style: settings_clangFormatStyle, formatting: settings_formattingEngine, - vcFormat : { + vcFormat: { indent: { braces: settings_indentBraces, multiLineRelativeTo: settings_indentMultiLine, @@ -1154,10 +1162,10 @@ export class DefaultClient implements Client { caseContentsWhenBlock: settings_indentCaseContentsWhenBlock, lambdaBracesWhenParameter: settings_indentLambdaBracesWhenParameter, gotoLabels: settings_indentGotoLabels, - preprocessor : settings_indentPreprocessor, - accesSpecifiers : settings_indentAccessSpecifiers, - namespaceContents : settings_indentNamespaceContents, - preserveComments : settings_indentPreserveComments + preprocessor: settings_indentPreprocessor, + accesSpecifiers: settings_indentAccessSpecifiers, + namespaceContents: settings_indentNamespaceContents, + preserveComments: settings_indentPreserveComments }, newLine: { beforeOpenBrace: { @@ -1169,48 +1177,48 @@ export class DefaultClient implements Client { }, scopeBracesOnSeparateLines: settings_newLineScopeBracesOnSeparateLines, closeBraceSameLine: { - emptyType: settings_newLineCloseBraceSameLineEmptyType, + emptyType: settings_newLineCloseBraceSameLineEmptyType, emptyFunction: settings_newLineCloseBraceSameLineEmptyFunction }, - beforeCatch : settings_newLineBeforeCatch, - beforeElse : settings_newLineBeforeElse, - beforeWhileInDoWhile : settings_newLineBeforeWhileInDoWhile + beforeCatch: settings_newLineBeforeCatch, + beforeElse: settings_newLineBeforeElse, + beforeWhileInDoWhile: settings_newLineBeforeWhileInDoWhile }, space: { - beforeFunctionOpenParenthesis : settings_spaceBeforeFunctionOpenParenthesis, - withinParameterListParentheses : settings_spaceWithinParameterListParentheses, - betweenEmptyParameterListParentheses : settings_spaceBetweenEmptyParameterListParentheses, - afterKeywordsInControlFlowStatements : settings_spaceAfterKeywordsInControlFlowStatements, - withinControlFlowStatementParentheses : settings_spaceWithinControlFlowStatementParentheses, - beforeLambdaOpenParenthesis : settings_spaceBeforeLambdaOpenParenthesis, - withinCastParentheses : settings_spaceWithinCastParentheses, - afterCastCloseParenthesis : settings_spaceSpaceAfterCastCloseParenthesis, - withinExpressionParentheses : settings_spaceWithinExpressionParentheses, - beforeBlockOpenBrace : settings_spaceBeforeBlockOpenBrace, - betweenEmptyBraces : settings_spaceBetweenEmptyBraces, - beforeInitializerListOpenBrace : settings_spaceBeforeInitializerListOpenBrace, - withinInitializerListBraces : settings_spaceWithinInitializerListBraces, - preserveInInitializerList : settings_spacePreserveInInitializerList, - beforeOpenSquareBracket : settings_spaceBeforeOpenSquareBracket, - withinSquareBrackets : settings_spaceWithinSquareBrackets, - beforeEmptySquareBrackets : settings_spaceBeforeEmptySquareBrackets, - betweenEmptySquareBrackets : settings_spaceBetweenEmptySquareBrackets, - groupSquareBrackets : settings_spaceGroupSquareBrackets, - withinLambdaBrackets : settings_spaceWithinLambdaBrackets, - betweenEmptyLambdaBrackets : settings_spaceBetweenEmptyLambdaBrackets, - beforeComma : settings_spaceBeforeComma, - afterComma : settings_spaceAfterComma, - removeAroundMemberOperators : settings_spaceRemoveAroundMemberOperators, - beforeInheritanceColon : settings_spaceBeforeInheritanceColon, - beforeConstructorColon : settings_spaceBeforeConstructorColon, - removeBeforeSemicolon : settings_spaceRemoveBeforeSemicolon, - insertAfterSemicolon : settings_spaceInsertAfterSemicolon, - removeAroundUnaryOperator : settings_spaceRemoveAroundUnaryOperator, - aroundBinaryOperator : settings_spaceAroundBinaryOperator, - aroundAssignmentOperator : settings_spaceAroundAssignmentOperator, - pointerReferenceAlignment : settings_spacePointerReferenceAlignment, - aroundTernaryOperator : settings_spaceAroundTernaryOperator + beforeFunctionOpenParenthesis: settings_spaceBeforeFunctionOpenParenthesis, + withinParameterListParentheses: settings_spaceWithinParameterListParentheses, + betweenEmptyParameterListParentheses: settings_spaceBetweenEmptyParameterListParentheses, + afterKeywordsInControlFlowStatements: settings_spaceAfterKeywordsInControlFlowStatements, + withinControlFlowStatementParentheses: settings_spaceWithinControlFlowStatementParentheses, + beforeLambdaOpenParenthesis: settings_spaceBeforeLambdaOpenParenthesis, + withinCastParentheses: settings_spaceWithinCastParentheses, + afterCastCloseParenthesis: settings_spaceSpaceAfterCastCloseParenthesis, + withinExpressionParentheses: settings_spaceWithinExpressionParentheses, + beforeBlockOpenBrace: settings_spaceBeforeBlockOpenBrace, + betweenEmptyBraces: settings_spaceBetweenEmptyBraces, + beforeInitializerListOpenBrace: settings_spaceBeforeInitializerListOpenBrace, + withinInitializerListBraces: settings_spaceWithinInitializerListBraces, + preserveInInitializerList: settings_spacePreserveInInitializerList, + beforeOpenSquareBracket: settings_spaceBeforeOpenSquareBracket, + withinSquareBrackets: settings_spaceWithinSquareBrackets, + beforeEmptySquareBrackets: settings_spaceBeforeEmptySquareBrackets, + betweenEmptySquareBrackets: settings_spaceBetweenEmptySquareBrackets, + groupSquareBrackets: settings_spaceGroupSquareBrackets, + withinLambdaBrackets: settings_spaceWithinLambdaBrackets, + betweenEmptyLambdaBrackets: settings_spaceBetweenEmptyLambdaBrackets, + beforeComma: settings_spaceBeforeComma, + afterComma: settings_spaceAfterComma, + removeAroundMemberOperators: settings_spaceRemoveAroundMemberOperators, + beforeInheritanceColon: settings_spaceBeforeInheritanceColon, + beforeConstructorColon: settings_spaceBeforeConstructorColon, + removeBeforeSemicolon: settings_spaceRemoveBeforeSemicolon, + insertAfterSemicolon: settings_spaceInsertAfterSemicolon, + removeAroundUnaryOperator: settings_spaceRemoveAroundUnaryOperator, + aroundBinaryOperator: settings_spaceAroundBinaryOperator, + aroundAssignmentOperator: settings_spaceAroundAssignmentOperator, + pointerReferenceAlignment: settings_spacePointerReferenceAlignment, + aroundTernaryOperator: settings_spaceAroundTernaryOperator }, wrap: { preserveBlocks: settings_wrapPreserveBlocks @@ -1234,9 +1242,9 @@ export class DefaultClient implements Client { intelliSenseEngine: settings_intelliSenseEngine, intelliSenseEngineFallback: settings_intelliSenseEngineFallback, intelliSenseCacheDisabled: intelliSenseCacheDisabled, - intelliSenseCachePath : settings_intelliSenseCachePath, - intelliSenseCacheSize : settings_intelliSenseCacheSize, - intelliSenseMemoryLimit : settings_intelliSenseMemoryLimit, + intelliSenseCachePath: settings_intelliSenseCachePath, + intelliSenseCacheSize: settings_intelliSenseCacheSize, + intelliSenseMemoryLimit: settings_intelliSenseMemoryLimit, intelliSenseUpdateDelay: workspaceSettings.intelliSenseUpdateDelay, autocomplete: settings_autocomplete, autocompleteAddParentheses: settings_autocompleteAddParentheses, @@ -1254,7 +1262,6 @@ export class DefaultClient implements Client { systemIncludePath: settings_defaultSystemIncludePath }, vcpkg_root: util.getVcpkgRoot(), - gotoDefIntelliSense: abTestSettings.UseGoToDefIntelliSense, experimentalFeatures: workspaceSettings.experimentalFeatures, edgeMessagesDirectory: path.join(util.getExtensionFilePath("bin"), "messages", util.getLocaleId()), localizedStrings: localizedStrings, @@ -1328,8 +1335,8 @@ export class DefaultClient implements Client { beforeOpenBrace: vscode.workspace.getConfiguration("C_Cpp.vcFormat.newLine.beforeOpenBrace", this.RootUri), closeBraceSameLine: vscode.workspace.getConfiguration("C_Cpp.vcFormat.newLine.closeBraceSameLine", this.RootUri) }, - space: vscode.workspace.getConfiguration("C_Cpp.vcFormat.space", this.RootUri), - wrap: vscode.workspace.getConfiguration("C_Cpp.vcFormat.wrap", this.RootUri) + space: vscode.workspace.getConfiguration("C_Cpp.vcFormat.space", this.RootUri), + wrap: vscode.workspace.getConfiguration("C_Cpp.vcFormat.wrap", this.RootUri) } }, editor: { @@ -1352,7 +1359,7 @@ export class DefaultClient implements Client { public sendDidChangeSettings(settings: any): void { // Send settings json to native side this.notifyWhenLanguageClientReady(() => { - this.languageClient.sendNotification(DidChangeSettingsNotification, {settings, workspaceFolderUri: this.RootPath}); + this.languageClient.sendNotification(DidChangeSettingsNotification, { settings, workspaceFolderUri: this.RootPath }); }); } @@ -1407,7 +1414,7 @@ export class DefaultClient implements Client { if (changedSettings["enhancedColorization"]) { if (settings.enhancedColorization && this.semanticTokensLegend) { this.semanticTokensProvider = new SemanticTokensProvider(this); - this.semanticTokensProviderDisposable = vscode.languages.registerDocumentSemanticTokensProvider(this.documentSelector, this.semanticTokensProvider, this.semanticTokensLegend); ; + this.semanticTokensProviderDisposable = vscode.languages.registerDocumentSemanticTokensProvider(this.documentSelector, this.semanticTokensProvider, this.semanticTokensLegend); } else if (this.semanticTokensProviderDisposable) { this.semanticTokensProviderDisposable.dispose(); this.semanticTokensProviderDisposable = undefined; @@ -1763,7 +1770,7 @@ export class DefaultClient implements Client { if (!configName) { return; } - let message: string = localize("unable.to.provide.configuraiton", + let message: string = localize("unable.to.provide.configuration", "{0} is unable to provide IntelliSense configuration information for '{1}'. Settings from the '{2}' configuration will be used instead.", providerName, docUri.fsPath, configName); if (err) { @@ -1893,7 +1900,7 @@ export class DefaultClient implements Client { pendingTask = new util.BlockingTask(task, pendingTask); return pendingTask.getPromise(); } else { - throw new Error (localize("unsupported.client", "Unsupported client")); + throw new Error(localize("unsupported.client", "Unsupported client")); } } @@ -2451,7 +2458,7 @@ export class DefaultClient implements Client { console.warn("custom include paths should not use recursive includes ('**')"); } // Separate compiler path and args before sending to language client - const itemConfig: util.Mutable = {...item.configuration}; + const itemConfig: util.Mutable = { ...item.configuration }; if (util.isString(itemConfig.compilerPath)) { const compilerPathAndArgs: util.CompilerPathAndArgs = util.extractCompilerPathAndArgs( itemConfig.compilerPath, @@ -2519,7 +2526,7 @@ export class DefaultClient implements Client { return; } - sanitized = {...config}; + sanitized = { ...config }; if (!this.isWorkspaceBrowseConfiguration(sanitized)) { console.log("Received an invalid browse configuration from configuration provider: " + JSON.stringify(sanitized)); const configValue: WorkspaceBrowseConfiguration | undefined = lastCustomBrowseConfiguration.Value; @@ -2658,7 +2665,7 @@ export class DefaultClient implements Client { // Check if still the active document. const currentEditor: vscode.TextEditor | undefined = vscode.window.activeTextEditor; if (currentEditor && editor.document.uri === currentEditor.document.uri) { - currentEditor.selection = new vscode.Selection(r.start, r.end); + currentEditor.selection = new vscode.Selection(r.start, r.end); currentEditor.revealRange(r); } } @@ -2761,8 +2768,8 @@ export class DefaultClient implements Client { if (DefaultClient.referencesRequestPending || workspaceReferences.symbolSearchInProgress) { const cancelling: boolean = DefaultClient.referencesPendingCancellations.length > 0; DefaultClient.referencesPendingCancellations.push({ - reject: () => {}, - callback: () => {} + reject: () => { }, + callback: () => { } }); if (!cancelling) { workspaceReferences.referencesCanceled = true; @@ -2818,17 +2825,17 @@ class NullClient implements Client { Name: string = "(empty)"; TrackedDocuments = new Set(); onDidChangeSettings(event: vscode.ConfigurationChangeEvent, isFirstClient: boolean): { [key: string]: string } { return {}; } - onDidOpenTextDocument(document: vscode.TextDocument): void {} - onDidCloseTextDocument(document: vscode.TextDocument): void {} - onDidChangeVisibleTextEditors(editors: vscode.TextEditor[]): void {} - onDidChangeTextDocument(textDocumentChangeEvent: vscode.TextDocumentChangeEvent): void {} + onDidOpenTextDocument(document: vscode.TextDocument): void { } + onDidCloseTextDocument(document: vscode.TextDocument): void { } + onDidChangeVisibleTextEditors(editors: vscode.TextEditor[]): void { } + onDidChangeTextDocument(textDocumentChangeEvent: vscode.TextDocumentChangeEvent): void { } onRegisterCustomConfigurationProvider(provider: CustomConfigurationProvider1): Thenable { return Promise.resolve(); } updateCustomConfigurations(requestingProvider?: CustomConfigurationProvider1): Thenable { return Promise.resolve(); } updateCustomBrowseConfiguration(requestingProvider?: CustomConfigurationProvider1): Thenable { return Promise.resolve(); } provideCustomConfiguration(docUri: vscode.Uri, requestFile?: string): Promise { return Promise.resolve(); } logDiagnostics(): Promise { return Promise.resolve(); } rescanFolder(): Promise { return Promise.resolve(); } - toggleReferenceResultsView(): void {} + toggleReferenceResultsView(): void { } setCurrentConfigName(configurationName: string): Thenable { return Promise.resolve(); } getCurrentConfigName(): Thenable { return Promise.resolve(""); } getCurrentConfigCustomVariable(variableName: string): Thenable { return Promise.resolve(""); } @@ -2836,34 +2843,34 @@ class NullClient implements Client { getVcpkgEnabled(): Thenable { return Promise.resolve(false); } getCurrentCompilerPathAndArgs(): Thenable { return Promise.resolve(undefined); } getKnownCompilers(): Thenable { return Promise.resolve([]); } - takeOwnership(document: vscode.TextDocument): void {} + takeOwnership(document: vscode.TextDocument): void { } queueTask(task: () => Thenable): Promise { return Promise.resolve(task()); } requestWhenReady(request: () => Thenable): Thenable { return request(); } - notifyWhenLanguageClientReady(notify: () => void): void {} - awaitUntilLanguageClientReady(): void {} + notifyWhenLanguageClientReady(notify: () => void): void { } + awaitUntilLanguageClientReady(): void { } requestSwitchHeaderSource(rootPath: string, fileName: string): Thenable { return Promise.resolve(""); } - activeDocumentChanged(document: vscode.TextDocument): void {} - activate(): void {} - selectionChanged(selection: Range): void {} - resetDatabase(): void {} - deactivate(): void {} - pauseParsing(): void {} - resumeParsing(): void {} + activeDocumentChanged(document: vscode.TextDocument): void { } + activate(): void { } + selectionChanged(selection: Range): void { } + resetDatabase(): void { } + deactivate(): void { } + pauseParsing(): void { } + resumeParsing(): void { } handleConfigurationSelectCommand(): Promise { return Promise.resolve(); } handleConfigurationProviderSelectCommand(): Promise { return Promise.resolve(); } handleShowParsingCommands(): Promise { return Promise.resolve(); } - handleReferencesIcon(): void {} - handleConfigurationEditCommand(viewColumn?: vscode.ViewColumn): void {} - handleConfigurationEditJSONCommand(viewColumn?: vscode.ViewColumn): void {} - handleConfigurationEditUICommand(viewColumn?: vscode.ViewColumn): void {} + handleReferencesIcon(): void { } + handleConfigurationEditCommand(viewColumn?: vscode.ViewColumn): void { } + handleConfigurationEditJSONCommand(viewColumn?: vscode.ViewColumn): void { } + handleConfigurationEditUICommand(viewColumn?: vscode.ViewColumn): void { } handleAddToIncludePathCommand(path: string): void { } handleGoToDirectiveInGroup(next: boolean): Promise { return Promise.resolve(); } handleCheckForCompiler(): Promise { return Promise.resolve(); } - onInterval(): void {} + onInterval(): void { } dispose(): void { this.booleanEvent.dispose(); this.stringEvent.dispose(); } - addFileAssociations(fileAssociations: string, languageId: string): void {} - sendDidChangeSettings(settings: any): void {} + addFileAssociations(fileAssociations: string, languageId: string): void { } + sendDidChangeSettings(settings: any): void { } } diff --git a/Extension/src/LanguageServer/configurations.ts b/Extension/src/LanguageServer/configurations.ts index 7d3c8d2916..82717c4d4e 100644 --- a/Extension/src/LanguageServer/configurations.ts +++ b/Extension/src/LanguageServer/configurations.ts @@ -11,7 +11,6 @@ import * as util from '../common'; import * as telemetry from '../telemetry'; import { PersistentFolderState } from './persistentState'; import { CppSettings, OtherSettings } from './settings'; -import { ABTestSettings, getABTestSettings } from '../abTesting'; import { CustomConfigurationProviderCollection, getCustomConfigProviders } from './customProviders'; import { SettingsPanel } from './settingsPanel'; import * as os from 'os'; @@ -358,8 +357,7 @@ export class CppProperties { // Only add settings from the default compiler if user hasn't explicitly set the corresponding VS Code setting. - const abTestSettings: ABTestSettings = getABTestSettings(); - const rootFolder: string = abTestSettings.UseRecursiveIncludes ? "${workspaceFolder}/**" : "${workspaceFolder}"; + const rootFolder: string = "${workspaceFolder}/**"; const defaultFolder: string = "${default}"; // We don't add system includes to the includePath anymore. The language server has this information. if (isUnset(settings.defaultIncludePath)) { @@ -1748,6 +1746,10 @@ export class CppProperties { } let message: string; if (!pathExists) { + if (curOffset >= forcedIncludeStart && curOffset <= forcedeIncludeEnd + && !path.isAbsolute(resolvedPath)) { + continue; // Skip the error, because it could be resolved recursively. + } message = localize('cannot.find2', "Cannot find \"{0}\".", resolvedPath); newSquiggleMetrics.PathNonExistent++; } else { diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index 9659621e71..fbfcdd8a82 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -27,10 +27,10 @@ import { getTemporaryCommandRegistrarInstance } from '../commands'; import * as rd from 'readline'; import * as yauzl from 'yauzl'; import { Readable, Writable } from 'stream'; -import { ABTestSettings, getABTestSettings } from '../abTesting'; import * as nls from 'vscode-nls'; import { CppBuildTaskProvider } from './cppBuildTaskProvider'; import * as which from 'which'; +import { IExperimentationService } from 'tas-client'; nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })(); const localize: nls.LocalizeFunc = nls.loadMessageBundle(); @@ -331,25 +331,28 @@ function realActivation(): void { vcpkgDbPromise = initVcpkgDatabase(); - PlatformInformation.GetPlatformInformation().then(info => { + 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 vscodeVersion: PackageVersion = new PackageVersion(vscode.version); - const abTestSettings: ABTestSettings = getABTestSettings(); - const minimumSupportedVersionForInsidersUpgrades: PackageVersion = abTestSettings.getMinimumVSCodeVersion(); - if (!minimumSupportedVersionForInsidersUpgrades.isMajorMinorPatchGreaterThan(vscodeVersion)) { - insiderUpdateEnabled = true; - if (settings.updateChannel === 'Default') { - const userVersion: PackageVersion = new PackageVersion(util.packageJson.version); - if (userVersion.suffix === "insiders") { + 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); - } else { - suggestInsidersChannel(); } - } else if (settings.updateChannel === 'Insiders') { - insiderUpdateTimer = global.setInterval(checkAndApplyUpdateOnTimer, insiderUpdateTimerInterval); - checkAndApplyUpdate(settings.updateChannel, false); } } } diff --git a/Extension/src/abTesting.ts b/Extension/src/abTesting.ts deleted file mode 100644 index 74a2d202c9..0000000000 --- a/Extension/src/abTesting.ts +++ /dev/null @@ -1,126 +0,0 @@ -/* -------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All Rights Reserved. - * See 'LICENSE' in the project root for license information. - * ------------------------------------------------------------------------------------------ */ -'use strict'; - -import * as util from './common'; -import * as Telemetry from './telemetry'; -import { PersistentState } from './LanguageServer/persistentState'; -import * as fs from 'fs'; -import { PackageVersion } from './packageVersion'; - -const userBucketMax: number = 100; -const userBucketString: string = "CPP.UserBucket"; -const localConfigFile: string = "cpptools.json"; - -interface Settings { - defaultIntelliSenseEngine?: number; - recursiveIncludes?: number; - gotoDefIntelliSense?: number; - enhancedColorization?: number; - // the minimum VS Code's version that is supported by the latest insiders' C/C++ extension - minimumVSCodeVersion?: string; -} - -export class ABTestSettings { - private settings: Settings; - private intelliSenseEngineDefault: PersistentState; - private recursiveIncludesDefault: PersistentState; - private gotoDefIntelliSenseDefault: PersistentState; - private enhancedColorizationDefault: PersistentState; - private minimumVSCodeVersionDefault: PersistentState; - private bucket: PersistentState; - - constructor() { - this.intelliSenseEngineDefault = new PersistentState("ABTest.1", 100); - this.recursiveIncludesDefault = new PersistentState("ABTest.2", 100); - this.gotoDefIntelliSenseDefault = new PersistentState("ABTest.3", 100); - this.enhancedColorizationDefault = new PersistentState("ABTest.4", 100); - this.minimumVSCodeVersionDefault = new PersistentState("ABTest.5", "1.44.0"); - this.settings = { - defaultIntelliSenseEngine: this.intelliSenseEngineDefault.Value, - recursiveIncludes: this.recursiveIncludesDefault.Value, - gotoDefIntelliSense: this.gotoDefIntelliSenseDefault.Value, - enhancedColorization: this.enhancedColorizationDefault.Value, - minimumVSCodeVersion: this.minimumVSCodeVersionDefault.Value - }; - this.bucket = new PersistentState(userBucketString, -1); - if (this.bucket.Value === -1) { - this.bucket.Value = Math.floor(Math.random() * userBucketMax) + 1; // Range is [1, userBucketMax]. - } - - this.updateSettings(); - // Redownload cpptools.json after initialization so it's not blocked. - // It'll be used the next time the extension reloads. - this.downloadCpptoolsJsonPkgAsync(); - - // Redownload occasionally to prevent an extra reload during long sessions. - setInterval(() => { this.downloadCpptoolsJsonPkgAsync(); }, 30 * 60 * 1000); // 30 minutes. - } - - public get UseRecursiveIncludes(): boolean { - return util.isNumber(this.settings.recursiveIncludes) ? this.settings.recursiveIncludes >= this.bucket.Value : true; - } - - public get UseGoToDefIntelliSense(): boolean { - return util.isNumber(this.settings.gotoDefIntelliSense) ? this.settings.gotoDefIntelliSense >= this.bucket.Value : true; - } - - public getMinimumVSCodeVersion(): PackageVersion { - // Get minimum VS Code's supported version for latest insiders upgrades. - return new PackageVersion(this.settings.minimumVSCodeVersion ? - this.settings.minimumVSCodeVersion : this.minimumVSCodeVersionDefault.Value); - } - - private updateSettings(): void { - const cpptoolsJsonFile: string = util.getExtensionFilePath(localConfigFile); - - try { - const exists: boolean = fs.existsSync(cpptoolsJsonFile); - if (exists) { - const fileContent: string = fs.readFileSync(cpptoolsJsonFile).toString(); - const newSettings: Settings = JSON.parse(fileContent); - this.intelliSenseEngineDefault.Value = util.isNumber(newSettings.defaultIntelliSenseEngine) ? newSettings.defaultIntelliSenseEngine : this.intelliSenseEngineDefault.DefaultValue; - this.recursiveIncludesDefault.Value = util.isNumber(newSettings.recursiveIncludes) ? newSettings.recursiveIncludes : this.recursiveIncludesDefault.DefaultValue; - this.gotoDefIntelliSenseDefault.Value = util.isNumber(newSettings.gotoDefIntelliSense) ? newSettings.gotoDefIntelliSense : this.gotoDefIntelliSenseDefault.DefaultValue; - this.enhancedColorizationDefault.Value = util.isNumber(newSettings.enhancedColorization) ? newSettings.enhancedColorization : this.enhancedColorizationDefault.DefaultValue; - this.minimumVSCodeVersionDefault.Value = newSettings.minimumVSCodeVersion ? newSettings.minimumVSCodeVersion : this.minimumVSCodeVersionDefault.Value; - this.settings = { - defaultIntelliSenseEngine: this.intelliSenseEngineDefault.Value, - recursiveIncludes: this.recursiveIncludesDefault.Value, - gotoDefIntelliSense: this.gotoDefIntelliSenseDefault.Value, - enhancedColorization: this.enhancedColorizationDefault.Value, - minimumVSCodeVersion: this.minimumVSCodeVersionDefault.Value - }; - } - } catch (error) { - // Ignore any cpptoolsJsonFile errors - } - } - - private async downloadCpptoolsJsonPkgAsync(): Promise { - let hasError: boolean = false; - const telemetryProperties: { [key: string]: string } = {}; - const localConfigPath: string = util.getExtensionFilePath(localConfigFile); - // Download the latest cpptools.json. - try { - await util.downloadFileToDestination("https://go.microsoft.com/fwlink/?linkid=2097702", localConfigPath); - } catch (error) { - // More specific error info is not likely to be helpful, and we get detailed download data from the initial install. - hasError = true; - } - this.updateSettings(); - telemetryProperties['success'] = (!hasError).toString(); - Telemetry.logDebuggerEvent("cpptoolsJsonDownload", telemetryProperties); - } -} - -let settings: ABTestSettings; - -export function getABTestSettings(): ABTestSettings { - if (!settings) { - settings = new ABTestSettings(); - } - return settings; -} diff --git a/Extension/src/common.ts b/Extension/src/common.ts index ab08d6e9c1..3584c7ecc0 100644 --- a/Extension/src/common.ts +++ b/Extension/src/common.ts @@ -89,7 +89,7 @@ export async function getRawJson(path: string | undefined): Promise { export function fileIsCOrCppSource(file: string): boolean { const fileExtLower: string = path.extname(file).toLowerCase(); - return ["cu", ".C", ".c", ".cpp", ".cc", ".cxx", ".mm", ".ino", ".inl"].some(ext => fileExtLower === ext); + return [".cu", ".c", ".cpp", ".cc", ".cxx", ".c++", ".cp", ".tcc", ".mm", ".ino", ".ipp", ".inl"].some(ext => fileExtLower === ext); } export function isEditorFileCpp(file: string): boolean { diff --git a/Extension/src/nativeStrings.json b/Extension/src/nativeStrings.json index f879e988ad..d5606f24f4 100644 --- a/Extension/src/nativeStrings.json +++ b/Extension/src/nativeStrings.json @@ -228,5 +228,6 @@ "nvcc_host_compiler_not_found": "Unable to locate nvcc host compiler: {0}", "invoking_nvcc": "Invoking nvcc with command line: {0}", "nvcc_host_compile_command_not_found": "Unable to find host compile command in output of nvcc.", - "unable_to_locate_forced_include": "Unable to locate forced include: {0}" + "unable_to_locate_forced_include": "Unable to locate forced include: {0}", + "inline_macro": "Inline macro" } diff --git a/Extension/src/telemetry.ts b/Extension/src/telemetry.ts index b25c16d6ad..5d2aaa9a94 100644 --- a/Extension/src/telemetry.ts +++ b/Extension/src/telemetry.ts @@ -5,52 +5,121 @@ 'use strict'; 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; version: string; } -let telemetryReporter: TelemetryReporter | null; +export class ExperimentationTelemetry implements IExperimentationTelemetry { + private sharedProperties: Record = {}; + + constructor(private baseReporter: TelemetryReporter) { } + + sendTelemetryEvent(eventName: string, properties?: Record, measurements?: Record): void { + this.baseReporter.sendTelemetryEvent( + eventName, + { + ...this.sharedProperties, + ...properties + }, + measurements + ); + } + + sendTelemetryErrorEvent(eventName: string, properties?: Record, _measurements?: Record): void { + this.baseReporter.sendTelemetryErrorEvent(eventName, { + ...this.sharedProperties, + ...properties + }); + } + + setSharedProperty(name: string, value: string): void { + this.sharedProperties[name] = value; + } + + postEvent(eventName: string, props: Map): void { + const event: Record = {}; + for (const [key, value] of props) { + event[key] = value; + } + this.sendTelemetryEvent(eventName, event); + } + + dispose(): Promise { + return this.baseReporter.dispose(); + } +} + +let initializationPromise: Promise | undefined; +let experimentationTelemetry: ExperimentationTelemetry | undefined; const appInsightsKey: string = "AIF-d9b70cd4-b9f9-4d70-929b-a071c400b217"; export function activate(): void { try { - telemetryReporter = createReporter(); + 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; + } + experimentationTelemetry = new ExperimentationTelemetry(new TelemetryReporter(packageInfo.name, packageInfo.version, appInsightsKey)); + initializationPromise = getExperimentationServiceAsync(packageInfo.name, packageInfo.version, targetPopulation, experimentationTelemetry, util.extensionContext.globalState); + } + } } catch (e) { - // can't really do much about this + // Handle error with a try/catch, but do nothing for errors. } } -export function deactivate(): void { - if (telemetryReporter) { - telemetryReporter.dispose(); - } +export async function getExperimentationService(): Promise { + return initializationPromise; } -export function logDebuggerEvent(eventName: string, properties?: { [key: string]: string }): void { - if (telemetryReporter) { - const eventNamePrefix: string = "cppdbg/VS/Diagnostics/Debugger/"; - telemetryReporter.sendTelemetryEvent(eventNamePrefix + eventName, properties); +export async function deactivate(): Promise { + if (initializationPromise) { + try { + await initializationPromise; + } catch (e) { + // Continue even if we were not able to initialize the experimentation platform. + } + if (experimentationTelemetry) { + experimentationTelemetry.dispose(); + } } } -export function logLanguageServerEvent(eventName: string, properties?: { [key: string]: string }, metrics?: { [key: string]: number }): void { - if (telemetryReporter) { - const eventNamePrefix: string = "C_Cpp/LanguageServer/"; - telemetryReporter.sendTelemetryEvent(eventNamePrefix + eventName, properties, metrics); +export async function logDebuggerEvent(eventName: string, properties?: { [key: string]: string }): Promise { + try { + await initializationPromise; + } catch (e) { + // Continue even if we were not able to initialize the experimentation platform. + } + if (experimentationTelemetry) { + const eventNamePrefix: string = "cppdbg/VS/Diagnostics/Debugger/"; + experimentationTelemetry.sendTelemetryEvent(eventNamePrefix + eventName, properties); } } -function createReporter(): TelemetryReporter | null { - if (util.extensionContext) { - const packageInfo: IPackageInfo = getPackageInfo(); - if (packageInfo) { - return new TelemetryReporter(packageInfo.name, packageInfo.version, appInsightsKey); - } +export async function logLanguageServerEvent(eventName: string, properties?: { [key: string]: string }, metrics?: { [key: string]: number }): Promise { + try { + await initializationPromise; + } catch (e) { + // Continue even if we were not able to initialize the experimentation platform. + } + if (experimentationTelemetry) { + const eventNamePrefix: string = "C_Cpp/LanguageServer/"; + experimentationTelemetry.sendTelemetryEvent(eventNamePrefix + eventName, properties, metrics); } - return null; } function getPackageInfo(): IPackageInfo { diff --git a/Extension/yarn.lock b/Extension/yarn.lock index 037f7c5d77..77e58e55b5 100644 --- a/Extension/yarn.lock +++ b/Extension/yarn.lock @@ -697,15 +697,15 @@ append-buffer@^1.0.2: dependencies: buffer-equal "^1.0.0" -applicationinsights@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/applicationinsights/-/applicationinsights-1.4.0.tgz#e17e436427b6e273291055181e29832cca978644" - integrity sha512-TV8MYb0Kw9uE2cdu4V/UvTKdOABkX2+Fga9iDz0zqV7FLrNXfmAugWZmmdTx4JoynYkln3d5CUHY3oVSUEbfFw== +applicationinsights@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/applicationinsights/-/applicationinsights-1.7.4.tgz#e7d96435594d893b00cf49f70a5927105dbb8749" + integrity sha512-XFLsNlcanpjFhHNvVWEfcm6hr7lu9znnb6Le1Lk5RE03YUV9X2B2n2MfM4kJZRrUdV+C0hdHxvWyv+vWoLfY7A== dependencies: cls-hooked "^4.2.2" continuation-local-storage "^3.2.1" diagnostic-channel "0.2.0" - diagnostic-channel-publishers "^0.3.2" + diagnostic-channel-publishers "^0.3.3" archy@^1.0.0: version "1.0.0" @@ -901,6 +901,13 @@ await-notify@^1.0.1: resolved "https://registry.yarnpkg.com/await-notify/-/await-notify-1.0.1.tgz#0b48133b22e524181e11557665185f2a2f3ce47c" integrity sha1-C0gTOyLlJBgeEVV2ZRhfKi885Hw= +axios@^0.21.1: + version "0.21.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" + integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== + dependencies: + follow-redirects "^1.10.0" + babel-runtime@^6.11.6: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" @@ -1546,10 +1553,10 @@ detect-newline@2.X: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= -diagnostic-channel-publishers@^0.3.2: - version "0.3.3" - resolved "https://registry.yarnpkg.com/diagnostic-channel-publishers/-/diagnostic-channel-publishers-0.3.3.tgz#376b7798f4fa90f37eb4f94d2caca611b0e9c330" - integrity sha512-qIocRYU5TrGUkBlDDxaziAK1+squ8Yf2Ls4HldL3xxb/jzmWO2Enux7CvevNKYmF2kDXZ9HiRqwjPsjk8L+i2Q== +diagnostic-channel-publishers@^0.3.3: + version "0.3.5" + resolved "https://registry.yarnpkg.com/diagnostic-channel-publishers/-/diagnostic-channel-publishers-0.3.5.tgz#a84a05fd6cc1d7619fdd17791c17e540119a7536" + integrity sha512-AOIjw4T7Nxl0G2BoBPhkQ6i7T4bUd9+xvdYizwvG7vVAM1dvr+SDrcUudlmzwH0kbEwdR2V1EcnKT0wAeYLQNQ== diagnostic-channel@0.2.0: version "0.2.0" @@ -2394,6 +2401,11 @@ flush-write-stream@^1.0.2: inherits "^2.0.3" readable-stream "^2.3.6" +follow-redirects@^1.10.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.1.tgz#d9114ded0a1cfdd334e164e6662ad02bfd91ff43" + integrity sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg== + for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -5234,6 +5246,13 @@ tapable@^2.1.1, tapable@^2.2.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw== +tas-client@0.1.21: + version "0.1.21" + resolved "https://registry.yarnpkg.com/tas-client/-/tas-client-0.1.21.tgz#62275d5f75266eaae408f7463364748cb92f220d" + integrity sha512-7UuIwOXarCYoCTrQHY5n7M+63XuwMC0sVUdbPQzxqDB9wMjIW0JF39dnp3yoJnxr4jJUVhPtvkkXZbAD0BxCcA== + dependencies: + axios "^0.21.1" + terser-webpack-plugin@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz#7effadee06f7ecfa093dbbd3e9ab23f5f3ed8673" @@ -5685,12 +5704,12 @@ vscode-debugprotocol@1.38.0, vscode-debugprotocol@^1.35.0: resolved "https://registry.yarnpkg.com/vscode-debugprotocol/-/vscode-debugprotocol-1.38.0.tgz#7a9bcd457e6642f48fabef114c0fa1c25a2fb1e7" integrity sha512-oam9iSjNfXSn71a8bmNsXv8k/rIKSOcllIPrFnNgxd1EMBpfnum+gb7lmRpcH0zSjGb+OH8Ncn8B5tv8srWbNQ== -vscode-extension-telemetry@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/vscode-extension-telemetry/-/vscode-extension-telemetry-0.1.2.tgz#049207f5453930888ff68ca925b07bab08f2c955" - integrity sha512-FSbaZKlIH3VKvBJsKw7v5bESWHXzltji2rtjaJeJglpQH4tfClzwHMzlMXUZGiblV++djEzb1gW8mb5E+wxFsg== +vscode-extension-telemetry@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/vscode-extension-telemetry/-/vscode-extension-telemetry-0.1.7.tgz#18389bc24127c89dade29cd2b71ba69a6ee6ad26" + integrity sha512-pZuZTHO9OpsrwlerOKotWBRLRYJ53DobYb7aWiRAXjlqkuqE+YJJaP+2WEy8GrLIF1EnitXTDMaTAKsmLQ5ORQ== dependencies: - applicationinsights "1.4.0" + applicationinsights "1.7.4" vscode-jsonrpc@^4.0.0: version "4.0.0" @@ -5741,6 +5760,13 @@ vscode-nls@^4.1.1: resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-4.1.1.tgz#f9916b64e4947b20322defb1e676a495861f133c" integrity sha512-4R+2UoUUU/LdnMnFjePxfLqNhBS8lrAFyX7pjb2ud/lqDkrUavFUTcG7wR0HBZFakae0Q6KLBFjMS6W93F403A== +vscode-tas-client@^0.1.22: + version "0.1.22" + resolved "https://registry.yarnpkg.com/vscode-tas-client/-/vscode-tas-client-0.1.22.tgz#2dd674b21a94ff4e97db2b6545d9efda8b5f07c3" + integrity sha512-1sYH73nhiSRVQgfZkLQNJW7VzhKM9qNbCe8QyXgiKkLhH4GflDXRPAK4yy4P41jUgula+Fc9G7i5imj1dlKfaw== + dependencies: + tas-client "0.1.21" + vscode-test@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/vscode-test/-/vscode-test-1.3.0.tgz#3310ab385d9b887b4c82e8f52be1030e7cf9493d"