From cc1eb1a977ab3262b9d53b48b87b6b970304be8b Mon Sep 17 00:00:00 2001 From: csigs Date: Wed, 7 Apr 2021 10:19:17 -0700 Subject: [PATCH 01/48] Localization - Translated Strings (#7308) Co-authored-by: DevDiv Build Lab - Dev14 --- Extension/i18n/chs/package.i18n.json | 3 +++ Extension/i18n/cht/package.i18n.json | 7 +++++-- Extension/i18n/cht/src/nativeStrings.i18n.json | 10 +++++----- Extension/i18n/csy/package.i18n.json | 7 +++++-- Extension/i18n/csy/src/nativeStrings.i18n.json | 10 +++++----- Extension/i18n/deu/package.i18n.json | 3 +++ Extension/i18n/esn/package.i18n.json | 3 +++ Extension/i18n/fra/package.i18n.json | 3 +++ Extension/i18n/ita/package.i18n.json | 7 +++++-- Extension/i18n/ita/src/nativeStrings.i18n.json | 10 +++++----- Extension/i18n/jpn/package.i18n.json | 3 +++ Extension/i18n/kor/package.i18n.json | 3 +++ Extension/i18n/plk/package.i18n.json | 3 +++ Extension/i18n/ptb/package.i18n.json | 3 +++ Extension/i18n/rus/package.i18n.json | 3 +++ Extension/i18n/trk/package.i18n.json | 3 +++ 16 files changed, 60 insertions(+), 21 deletions(-) diff --git a/Extension/i18n/chs/package.i18n.json b/Extension/i18n/chs/package.i18n.json index 02f04dca99..ea589f5311 100644 --- a/Extension/i18n/chs/package.i18n.json +++ b/Extension/i18n/chs/package.i18n.json @@ -170,6 +170,9 @@ "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\" 设置的值。", + "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExcludeBoolean.description": "The glob pattern to match file paths against. Set to true or false to enable or disable the pattern.", + "c_cpp.configuration.filesExcludeWhen.description": "Additional check on the siblings of a matching file. Use $(basename) as variable for the matching file name.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "如果为 true,调试程序 shell 命令替换将使用过时的反引号(`)。", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: 其他引用结果", "c_cpp.debuggers.pipeTransport.description": "如果存在,这会指示调试程序使用其他可执行文件作为管道来连接到远程计算机,此管道将在 VS Code 和已启用 MI 的调试程序后端可执行文件(如 gdb)之间中继标准输入/输入。", diff --git a/Extension/i18n/cht/package.i18n.json b/Extension/i18n/cht/package.i18n.json index 78b6ee95a5..67c35cfb36 100644 --- a/Extension/i18n/cht/package.i18n.json +++ b/Extension/i18n/cht/package.i18n.json @@ -23,8 +23,8 @@ "c_cpp.command.vcpkgClipboardInstallSuggested.title": "將 vcpkg 安裝命令複製到剪貼簿", "c_cpp.command.vcpkgOnlineHelpSuggested.title": "瀏覽 vcpkg 說明頁面", "c_cpp.command.generateEditorConfig.title": "從 VC 格式設定產生 EditorConfig 內容", - "c_cpp.command.GoToNextDirectiveInGroup.title": "Go to next preprocessor directive in conditional group", - "c_cpp.command.GoToPrevDirectiveInGroup.title": "Go to previous preprocessor directive in conditional group", + "c_cpp.command.GoToNextDirectiveInGroup.title": "前往條件式群組中的下一個前置處理器指示詞", + "c_cpp.command.GoToPrevDirectiveInGroup.title": "前往條件式群組中的上一個前置處理器指示詞", "c_cpp.configuration.formatting.description": "選擇格式設定引擎", "c_cpp.configuration.formatting.clangFormat.description": "將使用 clang-format 來格式化程式碼。", "c_cpp.configuration.formatting.vcFormat.description": "將使用 Visual C++ 格式化引擎來格式化程式碼。", @@ -170,6 +170,9 @@ "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\" 設定的值。", + "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExcludeBoolean.description": "The glob pattern to match file paths against. Set to true or false to enable or disable the pattern.", + "c_cpp.configuration.filesExcludeWhen.description": "Additional check on the siblings of a matching file. Use $(basename) as variable for the matching file name.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "若為 true,偵錯工具殼層命令替代將會使用已淘汰的反引號 (`)。", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: 其他參考結果", "c_cpp.debuggers.pipeTransport.description": "出現時,會指示偵錯工具使用另一個可執行檔來連線至遠端電腦,該管道會在 VS Code 與 MI 啟用偵錯工具後端可執行檔之間傳送標準輸入/輸出 (例如 gdb)。", diff --git a/Extension/i18n/cht/src/nativeStrings.i18n.json b/Extension/i18n/cht/src/nativeStrings.i18n.json index 02aefc8d32..046fc72d21 100644 --- a/Extension/i18n/cht/src/nativeStrings.i18n.json +++ b/Extension/i18n/cht/src/nativeStrings.i18n.json @@ -208,9 +208,9 @@ "unrecognized_language_standard_version": "編譯器查詢傳回無法辨識的語言標準版本。將改用支援的最新版本。", "intellisense_process_crash_detected": "偵測到 IntelliSense 流程損毀。", "return_values_label": "傳回值:", - "nvcc_compiler_not_found": "Unable to locate nvcc compiler: {0}", - "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}" + "nvcc_compiler_not_found": "找不到 nvcc 編譯器: {0}", + "nvcc_host_compiler_not_found": "找不到 nvcc 主機編譯器: {0}", + "invoking_nvcc": "正在使用命令列 {0} 叫用 nvcc", + "nvcc_host_compile_command_not_found": "在 nvcc 的輸出中找不到主機編譯命令。", + "unable_to_locate_forced_include": "找不到強制的 include: {0}" } \ No newline at end of file diff --git a/Extension/i18n/csy/package.i18n.json b/Extension/i18n/csy/package.i18n.json index 120be2bc74..8bf303fcd7 100644 --- a/Extension/i18n/csy/package.i18n.json +++ b/Extension/i18n/csy/package.i18n.json @@ -23,8 +23,8 @@ "c_cpp.command.vcpkgClipboardInstallSuggested.title": "Zkopírovat příkaz pro instalaci vcpkg do schránky", "c_cpp.command.vcpkgOnlineHelpSuggested.title": "Navštívit stránku nápovědy k vcpkg", "c_cpp.command.generateEditorConfig.title": "Vygenerovat obsah EditorConfig z nastavení formátu VC", - "c_cpp.command.GoToNextDirectiveInGroup.title": "Go to next preprocessor directive in conditional group", - "c_cpp.command.GoToPrevDirectiveInGroup.title": "Go to previous preprocessor directive in conditional group", + "c_cpp.command.GoToNextDirectiveInGroup.title": "Přejít na další direktivu preprocesoru v podmíněné skupině", + "c_cpp.command.GoToPrevDirectiveInGroup.title": "Přejít na předchozí direktivu preprocesoru v podmíněné skupině", "c_cpp.configuration.formatting.description": "Nakonfiguruje nástroj formátování textu.", "c_cpp.configuration.formatting.clangFormat.description": "K formátování kódu se použije clang-format.", "c_cpp.configuration.formatting.vcFormat.description": "K formátování kódu se použije nástroj formátování textu Visual C++.", @@ -170,6 +170,9 @@ "c_cpp.configuration.addNodeAddonIncludePaths.description": "Pokud existují závislosti, přidejte cesty pro zahrnuté soubory z nan a node-addon-api.", "c_cpp.configuration.renameRequiresIdentifier.description": "Když se tato hodnota nastaví na true, operace Přejmenovat symbol bude vyžadovat platný identifikátor C/C++.", "c_cpp.configuration.autocompleteAddParentheses.description": "Pokud je true, automatické dokončování automaticky přidá za volání funkcí znak (. V takovém případě se může přidat i znak ), záleží na hodnotě nastavení editor.autoClosingBrackets.", + "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExcludeBoolean.description": "The glob pattern to match file paths against. Set to true or false to enable or disable the pattern.", + "c_cpp.configuration.filesExcludeWhen.description": "Additional check on the siblings of a matching file. Use $(basename) as variable for the matching file name.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "Když se nastaví na true, nahrazování příkazů shellu ladicího programu bude používat starou verzi obrácené čárky (`).", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: výsledky jiných odkazů", "c_cpp.debuggers.pipeTransport.description": "Pokud je k dispozici, předá ladicímu programu informaci, aby se připojil ke vzdálenému počítači pomocí dalšího spustitelného souboru jako kanál, který bude přenášet standardní vstup a výstup mezi nástrojem VS Code a spustitelným souborem back-endu ladicího programu s podporou MI (třeba gdb).", diff --git a/Extension/i18n/csy/src/nativeStrings.i18n.json b/Extension/i18n/csy/src/nativeStrings.i18n.json index 08c6ada2bc..8ebf40332a 100644 --- a/Extension/i18n/csy/src/nativeStrings.i18n.json +++ b/Extension/i18n/csy/src/nativeStrings.i18n.json @@ -208,9 +208,9 @@ "unrecognized_language_standard_version": "Dotaz na kompilátor vrátil nerozpoznanou standardní verzi jazyka. Místo ní se použije nejnovější podporovaná verze.", "intellisense_process_crash_detected": "Zjistilo se chybové ukončení procesu IntelliSense.", "return_values_label": "Návratové hodnoty:", - "nvcc_compiler_not_found": "Unable to locate nvcc compiler: {0}", - "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}" + "nvcc_compiler_not_found": "Nepovedlo se najít kompilátor nvcc: {0}", + "nvcc_host_compiler_not_found": "Nepovedlo se najít kompilátor hostitele nvcc: {0}", + "invoking_nvcc": "Volá se nvcc pomocí příkazového řádku: {0}", + "nvcc_host_compile_command_not_found": "Ve výstupu nástroje nvcc se nepovedlo najít příkaz pro kompilaci hostitele.", + "unable_to_locate_forced_include": "Nepovedlo se najít vynuceně zahrnované soubory: {0}" } \ No newline at end of file diff --git a/Extension/i18n/deu/package.i18n.json b/Extension/i18n/deu/package.i18n.json index d9eff80e1c..3bdd52987f 100644 --- a/Extension/i18n/deu/package.i18n.json +++ b/Extension/i18n/deu/package.i18n.json @@ -170,6 +170,9 @@ "c_cpp.configuration.addNodeAddonIncludePaths.description": "Fügen Sie Includepfade aus \"nan\" und \"node-addon-api\" hinzu, wenn es sich um Abhängigkeiten handelt.", "c_cpp.configuration.renameRequiresIdentifier.description": "Bei TRUE ist für \"Symbol umbenennen\" ein gültiger C-/C++-Bezeichner erforderlich.", "c_cpp.configuration.autocompleteAddParentheses.description": "Bei TRUE fügt AutoVervollständigen automatisch \"(\" nach Funktionsaufrufen hinzu. In diesem Fall kann \")\" abhängig vom Wert der Einstellung \"editor.autoClosingBrackets\" ebenfalls hinzugefügt werden.", + "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExcludeBoolean.description": "The glob pattern to match file paths against. Set to true or false to enable or disable the pattern.", + "c_cpp.configuration.filesExcludeWhen.description": "Additional check on the siblings of a matching file. Use $(basename) as variable for the matching file name.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "Bei Festlegung auf TRUE verwendet die Befehlsersetzung der Debugger-Shell obsolete Backtick-Zeichen (`).", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: andere Verweisergebnisse", "c_cpp.debuggers.pipeTransport.description": "Falls angegeben, weist diese Option den Debugger an, eine Verbindung mit einem Remotecomputer mithilfe einer anderen ausführbaren Datei als Pipe herzustellen, die Standardeingaben/-ausgaben zwischen VS Code und der ausführbaren Back-End-Datei für den MI-fähigen Debugger weiterleitet (z. B. gdb).", diff --git a/Extension/i18n/esn/package.i18n.json b/Extension/i18n/esn/package.i18n.json index aa6a4f13ea..013c97537d 100644 --- a/Extension/i18n/esn/package.i18n.json +++ b/Extension/i18n/esn/package.i18n.json @@ -170,6 +170,9 @@ "c_cpp.configuration.addNodeAddonIncludePaths.description": "Agregue rutas de acceso de inclusión de nan y node-addon-api cuando sean dependencias.", "c_cpp.configuration.renameRequiresIdentifier.description": "Si es true, \"Cambiar el nombre del símbolo\" requerirá un identificador de C/C++ válido.", "c_cpp.configuration.autocompleteAddParentheses.description": "Si es true, la opción de autocompletar agregará \"(\" de forma automática después de las llamadas a funciones, en cuyo caso puede que también se agregue \")\", en función del valor de la configuración de \"editor.autoClosingBrackets\".", + "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExcludeBoolean.description": "The glob pattern to match file paths against. Set to true or false to enable or disable the pattern.", + "c_cpp.configuration.filesExcludeWhen.description": "Additional check on the siblings of a matching file. Use $(basename) as variable for the matching file name.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "Si es true, la sustitución de comandos del shell del depurador usará la marca de comilla simple (') obsoleta.", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: resultados de otras referencias", "c_cpp.debuggers.pipeTransport.description": "Cuando se especifica, indica al depurador que se conecte a un equipo remoto usando otro archivo ejecutable como canalización que retransmitirá la entrada o la salida estándar entre VS Code y el archivo ejecutable del back-end del depurador habilitado para MI (por ejemplo, gdb).", diff --git a/Extension/i18n/fra/package.i18n.json b/Extension/i18n/fra/package.i18n.json index 7ae6187286..14a6fe9855 100644 --- a/Extension/i18n/fra/package.i18n.json +++ b/Extension/i18n/fra/package.i18n.json @@ -170,6 +170,9 @@ "c_cpp.configuration.addNodeAddonIncludePaths.description": "Ajoute des chemins include à partir de nan et node-addon-api quand il s'agit de dépendances.", "c_cpp.configuration.renameRequiresIdentifier.description": "Si la valeur est true, l'opération Renommer le symbole nécessite un identificateur C/C++ valide.", "c_cpp.configuration.autocompleteAddParentheses.description": "Si la valeur est true, l'autocomplétion ajoute automatiquement \"(\" après les appels de fonction. Dans ce cas \")\" peut également être ajouté, en fonction de la valeur du paramètre \"editor.autoClosingBrackets\".", + "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExcludeBoolean.description": "The glob pattern to match file paths against. Set to true or false to enable or disable the pattern.", + "c_cpp.configuration.filesExcludeWhen.description": "Additional check on the siblings of a matching file. Use $(basename) as variable for the matching file name.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "Si la valeur est true, le remplacement de la commande d'interpréteur de commandes du débogueur utilise un accent grave (`) obsolète.", "c_cpp.contributes.views.cppReferencesView.title": "C/C++ : Autres résultats des références", "c_cpp.debuggers.pipeTransport.description": "Quand ce paramètre est présent, indique au débogueur de se connecter à un ordinateur distant en se servant d'un autre exécutable comme canal de relais d'entrée/de sortie standard entre VS Code et l'exécutable du back-end du débogueur MI (par exemple, gdb).", diff --git a/Extension/i18n/ita/package.i18n.json b/Extension/i18n/ita/package.i18n.json index eb4bfdb2a9..b8d316b813 100644 --- a/Extension/i18n/ita/package.i18n.json +++ b/Extension/i18n/ita/package.i18n.json @@ -23,8 +23,8 @@ "c_cpp.command.vcpkgClipboardInstallSuggested.title": "Copia il comando di installazione di vcpkg negli Appunti", "c_cpp.command.vcpkgOnlineHelpSuggested.title": "Visitare la pagina della Guida di vcpkg", "c_cpp.command.generateEditorConfig.title": "Genera il contenuto di EditorConfig dalle impostazioni di Formato VC", - "c_cpp.command.GoToNextDirectiveInGroup.title": "Go to next preprocessor directive in conditional group", - "c_cpp.command.GoToPrevDirectiveInGroup.title": "Go to previous preprocessor directive in conditional group", + "c_cpp.command.GoToNextDirectiveInGroup.title": "Passa alla direttiva successiva del preprocessore nel gruppo condizionale", + "c_cpp.command.GoToPrevDirectiveInGroup.title": "Passa alla direttiva precedente del preprocessore nel gruppo condizionale", "c_cpp.configuration.formatting.description": "Configura il motore di formattazione", "c_cpp.configuration.formatting.clangFormat.description": "Per formattare il codice, verrà usato clang-format.", "c_cpp.configuration.formatting.vcFormat.description": "Per formattare il codice, verrà usato il motore di formattazione Visual C++.", @@ -170,6 +170,9 @@ "c_cpp.configuration.addNodeAddonIncludePaths.description": "Aggiunge percorsi di inclusione da nan e node-addon-api quando sono dipendenze.", "c_cpp.configuration.renameRequiresIdentifier.description": "Se è true, con 'Rinomina simbolo' sarà richiesto un identificatore C/C++ valido.", "c_cpp.configuration.autocompleteAddParentheses.description": "Se è true, il completamento automatico aggiungerà automaticamente \"(\" dopo le chiamate di funzione. In tal caso potrebbe essere aggiunto anche \")\", a seconda del valore dell'impostazione \"editor.autoClosingBrackets\".", + "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExcludeBoolean.description": "The glob pattern to match file paths against. Set to true or false to enable or disable the pattern.", + "c_cpp.configuration.filesExcludeWhen.description": "Additional check on the siblings of a matching file. Use $(basename) as variable for the matching file name.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "Se è true, per la sostituzione del comando della shell del debugger verrà usato il carattere backtick obsoleto (`).", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: Risultati altri riferimenti", "c_cpp.debuggers.pipeTransport.description": "Se presente, indica al debugger di connettersi a un computer remoto usando come pipe un altro eseguibile che inoltra l'input/output standard tra VS Code e l'eseguibile back-end del debugger abilitato per MI, ad esempio gdb.", diff --git a/Extension/i18n/ita/src/nativeStrings.i18n.json b/Extension/i18n/ita/src/nativeStrings.i18n.json index ce90215333..261959af72 100644 --- a/Extension/i18n/ita/src/nativeStrings.i18n.json +++ b/Extension/i18n/ita/src/nativeStrings.i18n.json @@ -208,9 +208,9 @@ "unrecognized_language_standard_version": "La query del compilatore ha restituito una versione standard del linguaggio non riconosciuta. In alternativa, verrà usata la versione più recente supportata.", "intellisense_process_crash_detected": "È stato rilevato un arresto anomalo del processo IntelliSense.", "return_values_label": "Valori restituiti:", - "nvcc_compiler_not_found": "Unable to locate nvcc compiler: {0}", - "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}" + "nvcc_compiler_not_found": "Non è possibile individuare il compilatore nvcc: {0}", + "nvcc_host_compiler_not_found": "Non è possibile individuare il compilatore host nvcc: {0}", + "invoking_nvcc": "Chiamata di nvcc con la riga di comando: {0}", + "nvcc_host_compile_command_not_found": "Non è possibile trovare il comando di compilazione host nell'output di nvcc.", + "unable_to_locate_forced_include": "Non è possibile individuare la direttiva include forzata: {0}" } \ No newline at end of file diff --git a/Extension/i18n/jpn/package.i18n.json b/Extension/i18n/jpn/package.i18n.json index e6ba5df0ed..97a5306ee0 100644 --- a/Extension/i18n/jpn/package.i18n.json +++ b/Extension/i18n/jpn/package.i18n.json @@ -170,6 +170,9 @@ "c_cpp.configuration.addNodeAddonIncludePaths.description": "依存関係にある場合は、nan および node-addon-api からのインクルード パスを追加します。", "c_cpp.configuration.renameRequiresIdentifier.description": "true の場合、'シンボルの名前変更' には有効な C/C++ 識別子が必要です。", "c_cpp.configuration.autocompleteAddParentheses.description": "true の場合、関数呼び出しの後に \"(\" が自動的に追加されます。その場合は、\"editor.autoClosingBrackets\" 設定の値に応じて、\")\" も追加される場合があります。", + "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExcludeBoolean.description": "The glob pattern to match file paths against. Set to true or false to enable or disable the pattern.", + "c_cpp.configuration.filesExcludeWhen.description": "Additional check on the siblings of a matching file. Use $(basename) as variable for the matching file name.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "True の場合、デバッガー シェルのコマンド置換では古いバックティック (') が使用されます。", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: その他の参照結果", "c_cpp.debuggers.pipeTransport.description": "これを指定すると、デバッガーにより、別の実行可能ファイルをパイプとして使用してリモート コンピューターに接続され、VS Code と MI 対応のデバッガー バックエンド実行可能ファイル (gdb など) との間で標準入出力が中継されます。", diff --git a/Extension/i18n/kor/package.i18n.json b/Extension/i18n/kor/package.i18n.json index a7c0151b67..0d263ace4c 100644 --- a/Extension/i18n/kor/package.i18n.json +++ b/Extension/i18n/kor/package.i18n.json @@ -170,6 +170,9 @@ "c_cpp.configuration.addNodeAddonIncludePaths.description": "nan 및 node-addon-api가 종속성일 때 해당 포함 경로를 추가합니다.", "c_cpp.configuration.renameRequiresIdentifier.description": "true이면 '기호 이름 바꾸기'에 유효한 C/C++ 식별자가 필요합니다.", "c_cpp.configuration.autocompleteAddParentheses.description": "true이면 자동 완성에서 \"editor.autoClosingBrackets\" 설정 값에 따라 함수 호출 뒤에 \"(\"를 자동으로 추가하며, 이 경우 \")\"도 추가될 수 있습니다.", + "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExcludeBoolean.description": "The glob pattern to match file paths against. Set to true or false to enable or disable the pattern.", + "c_cpp.configuration.filesExcludeWhen.description": "Additional check on the siblings of a matching file. Use $(basename) as variable for the matching file name.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "true인 경우 디버거 셸 명령 대체가 사용되지 않는 백틱(`)을 사용합니다.", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: 기타 참조 결과", "c_cpp.debuggers.pipeTransport.description": "있을 경우 VS Code와 MI 지원 디버거 백 엔드 실행 파일(예: gdb) 사이에 표준 입출력을 릴레이하는 파이프로 다른 실행 파일을 사용하여 원격 컴퓨터에 연결되도록 디버거를 지정합니다.", diff --git a/Extension/i18n/plk/package.i18n.json b/Extension/i18n/plk/package.i18n.json index 0f24f74bb8..44aa0eebf9 100644 --- a/Extension/i18n/plk/package.i18n.json +++ b/Extension/i18n/plk/package.i18n.json @@ -170,6 +170,9 @@ "c_cpp.configuration.addNodeAddonIncludePaths.description": "Dodaj ścieżki dołączania z bibliotek nan i node-addon-api, gdy są one zależnościami.", "c_cpp.configuration.renameRequiresIdentifier.description": "Jeśli ma wartość true, operacja „Zmień nazwę symbolu” będzie wymagać prawidłowego identyfikatora C/C++.", "c_cpp.configuration.autocompleteAddParentheses.description": "W przypadku podania wartości true Autouzupełnianie będzie automatycznie dodawać znak „(” po wywołaniach funkcji, co może też powodować dodawanie znaku „)” w zależności od ustawienia „editor.autoClosingBrackets”.", + "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExcludeBoolean.description": "The glob pattern to match file paths against. Set to true or false to enable or disable the pattern.", + "c_cpp.configuration.filesExcludeWhen.description": "Additional check on the siblings of a matching file. Use $(basename) as variable for the matching file name.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "Jeśli wartość będzie równa true, podstawianie poleceń powłoki debugera będzie używać przestarzałego grawisa (`).", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: inne wyniki odwołań", "c_cpp.debuggers.pipeTransport.description": "Jeśli jest obecny, zawiera instrukcje dla debugera, aby połączył się z komputerem zdalnym przy użyciu innego pliku wykonywalnego jako potoku, który będzie przekazywał standardowe wejście/wyjście między programem VS Code a plikiem wykonywalnym zaplecza debugera z włączoną obsługą indeksu MI (takim jak gdb).", diff --git a/Extension/i18n/ptb/package.i18n.json b/Extension/i18n/ptb/package.i18n.json index 3690b49a90..f01e3976e3 100644 --- a/Extension/i18n/ptb/package.i18n.json +++ b/Extension/i18n/ptb/package.i18n.json @@ -170,6 +170,9 @@ "c_cpp.configuration.addNodeAddonIncludePaths.description": "Adicionar caminhos de inclusão de nan e node-addon-api quando eles forem dependências.", "c_cpp.configuration.renameRequiresIdentifier.description": "Se for true, 'Renomear Símbolo' exigirá um identificador C/C++ válido.", "c_cpp.configuration.autocompleteAddParentheses.description": "Se esta opção for true, o recurso Preenchimento Automático adicionará automaticamente \"(\" após as chamadas de função e, nesse caso, \")\" também poderá ser adicionado, dependendo do valor da configuração \"editor.autoClosingBrackets\".", + "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExcludeBoolean.description": "The glob pattern to match file paths against. Set to true or false to enable or disable the pattern.", + "c_cpp.configuration.filesExcludeWhen.description": "Additional check on the siblings of a matching file. Use $(basename) as variable for the matching file name.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "Se esta configuração for true, a substituição do comando do shell do depurador usará o acento grave obsoleto (`).", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: outros resultados de referências", "c_cpp.debuggers.pipeTransport.description": "Quando presente, isso instrui o depurador a conectar-se a um computador remoto usando outro executável como um pipe que retransmitirá a entrada/saída padrão entre o VS Code e o executável do back-end do depurador habilitado para MI (como gdb).", diff --git a/Extension/i18n/rus/package.i18n.json b/Extension/i18n/rus/package.i18n.json index 3e7a2e73c2..858c71d307 100644 --- a/Extension/i18n/rus/package.i18n.json +++ b/Extension/i18n/rus/package.i18n.json @@ -170,6 +170,9 @@ "c_cpp.configuration.addNodeAddonIncludePaths.description": "Добавить пути включения из nan и node-addon-api, если они являются зависимостями.", "c_cpp.configuration.renameRequiresIdentifier.description": "Если этот параметр имеет значение true, для операции \"Переименование символов\" потребуется указать допустимый идентификатор C/C++.", "c_cpp.configuration.autocompleteAddParentheses.description": "Если значение — true, автозаполнение автоматически добавит \"(\" после вызовов функции, и в этом случае также может добавить \")\" в зависимости от значения параметра \"editor.autoClosingBrackets\".", + "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExcludeBoolean.description": "The glob pattern to match file paths against. Set to true or false to enable or disable the pattern.", + "c_cpp.configuration.filesExcludeWhen.description": "Additional check on the siblings of a matching file. Use $(basename) as variable for the matching file name.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "Если задано значение true, для подстановки команд оболочки отладчика будет использоваться устаревший обратный апостроф (`).", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: результаты по другим ссылкам", "c_cpp.debuggers.pipeTransport.description": "При наличии сообщает отладчику о необходимости подключения к удаленному компьютеру с помощью другого исполняемого файла в качестве канала, который будет пересылать стандартный ввод и вывод между VS Code и исполняемым файлом отладчика с поддержкой MI в серверной части (например, gdb).", diff --git a/Extension/i18n/trk/package.i18n.json b/Extension/i18n/trk/package.i18n.json index d0a7a8ee3c..e5fb9db885 100644 --- a/Extension/i18n/trk/package.i18n.json +++ b/Extension/i18n/trk/package.i18n.json @@ -170,6 +170,9 @@ "c_cpp.configuration.addNodeAddonIncludePaths.description": "nan ve node-addon-api bağımlılık olduğunda bunlardan ekleme yolları ekleyin.", "c_cpp.configuration.renameRequiresIdentifier.description": "True ise, 'Sembolü Yeniden Adlandır' işlemi için geçerli bir C/C++ tanımlayıcısı gerekir.", "c_cpp.configuration.autocompleteAddParentheses.description": "True ise otomatik tamamla özelliği, işlev çağrılarından sonra otomatik olarak \"(\" ekler. Bazı durumlarda \"editor.autoClosingBrackets\" ayarının değerine bağlı olarak \")\" karakteri de eklenebilir.", + "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExcludeBoolean.description": "The glob pattern to match file paths against. Set to true or false to enable or disable the pattern.", + "c_cpp.configuration.filesExcludeWhen.description": "Additional check on the siblings of a matching file. Use $(basename) as variable for the matching file name.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "True ise, hata ayıklayıcı kabuk komut değiştirme eski kesme işaretini (`) kullanır.", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: Diğer başvuru sonuçları", "c_cpp.debuggers.pipeTransport.description": "Mevcut olduğunda, hata ayıklayıcısına, VS Code ile MI özellikli hata ayıklayıcısı arka uç yürütülebilir dosyası (gdb gibi) arasında standart giriş/çıkış geçişi sağlayan bir kanal olarak görev yapacak başka bir yürütülebilir dosya aracılığıyla uzak bilgisayara bağlanmasını söyler.", From 2ad3a4006e9bfe1847fc2daeb4db2ab9b7b0f2b0 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson <49173979+Colengms@users.noreply.github.com> Date: Wed, 7 Apr 2021 13:03:16 -0700 Subject: [PATCH 02/48] Add catch of JSON.parse() when reading install.lock. Update message. (#7312) --- Extension/src/main.ts | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/Extension/src/main.ts b/Extension/src/main.ts index 611f98eb5f..8a74153a7a 100644 --- a/Extension/src/main.ts +++ b/Extension/src/main.ts @@ -79,15 +79,17 @@ export async function activate(context: vscode.ExtensionContext): PromiseJSON.parse(fileContents); + // Assume current platform if install.lock is empty. + let installedPlatformAndArchitecture: util.InstallLockContents = { + platform: process.platform, + architecture: arch + }; + if (fileContents.length !== 0) { + try { + installedPlatformAndArchitecture = JSON.parse(fileContents); + } catch (error) { + // If the contents of install.lock are corrupted, treat as if it's empty. + } } // Check the main binaries files to declare if the extension has been installed successfully. @@ -111,7 +113,7 @@ export async function activate(context: vscode.ExtensionContext): Promise { if (selection === downloadLink) { vscode.env.openExternal(vscode.Uri.parse(releaseDownloadUrl)); From 68c891e713e34ab6a8ebb3534988f8af82e243bf Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson <49173979+Colengms@users.noreply.github.com> Date: Wed, 7 Apr 2021 15:35:58 -0700 Subject: [PATCH 03/48] Fix an issue with validating browse configs (#7313) --- Extension/src/LanguageServer/client.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index 338f6f3a63..2a952df3c7 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -2477,7 +2477,7 @@ export class DefaultClient implements Client { return util.isArrayOfString(input.browsePath) && util.isOptionalString(input.compilerPath) && util.isOptionalString(input.standard) && - util.isOptionalString(input.compilerArgs) && + util.isOptionalArrayOfString(input.compilerArgs) && util.isOptionalString(input.windowsSdkVersion); } From add968510df9ddf04012e357533f12406c8ef725 Mon Sep 17 00:00:00 2001 From: Elaheh Rashedi Date: Wed, 7 Apr 2021 16:42:51 -0700 Subject: [PATCH 04/48] change task scope to Workspace --- Extension/src/LanguageServer/cppBuildTaskProvider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Extension/src/LanguageServer/cppBuildTaskProvider.ts b/Extension/src/LanguageServer/cppBuildTaskProvider.ts index ff50d8089d..3c0f92fe3a 100644 --- a/Extension/src/LanguageServer/cppBuildTaskProvider.ts +++ b/Extension/src/LanguageServer/cppBuildTaskProvider.ts @@ -194,7 +194,7 @@ export class CppBuildTaskProvider implements TaskProvider { } } - const scope: TaskScope = TaskScope.Workspace; + const scope: WorkspaceFolder | TaskScope = folder? folder : TaskScope.Workspace; const task: CppBuildTask = new Task(definition, scope, definition.label, CppBuildTaskProvider.CppBuildSourceStr, new CustomExecution(async (resolvedDefinition: TaskDefinition): Promise => // When the task is executed, this callback will run. Here, we setup for running the task. From 1001afecc81edbde00b65ff168af1aa639147ac3 Mon Sep 17 00:00:00 2001 From: csigs Date: Thu, 8 Apr 2021 09:52:32 -0700 Subject: [PATCH 05/48] Localization - Translated Strings (#7317) Co-authored-by: DevDiv Build Lab - Dev14 --- Extension/i18n/chs/package.i18n.json | 4 ++-- Extension/i18n/chs/src/main.i18n.json | 3 ++- Extension/i18n/chs/src/nativeStrings.i18n.json | 10 +++++----- Extension/i18n/cht/src/main.i18n.json | 3 ++- Extension/i18n/csy/src/main.i18n.json | 3 ++- Extension/i18n/deu/src/main.i18n.json | 3 ++- Extension/i18n/esn/src/main.i18n.json | 3 ++- Extension/i18n/fra/src/main.i18n.json | 3 ++- Extension/i18n/ita/src/main.i18n.json | 3 ++- Extension/i18n/jpn/package.i18n.json | 4 ++-- Extension/i18n/jpn/src/main.i18n.json | 3 ++- Extension/i18n/jpn/src/nativeStrings.i18n.json | 10 +++++----- Extension/i18n/kor/src/main.i18n.json | 3 ++- Extension/i18n/plk/src/main.i18n.json | 3 ++- Extension/i18n/ptb/src/main.i18n.json | 3 ++- Extension/i18n/rus/src/main.i18n.json | 3 ++- Extension/i18n/trk/src/main.i18n.json | 3 ++- 17 files changed, 40 insertions(+), 27 deletions(-) diff --git a/Extension/i18n/chs/package.i18n.json b/Extension/i18n/chs/package.i18n.json index ea589f5311..5f7f4dac79 100644 --- a/Extension/i18n/chs/package.i18n.json +++ b/Extension/i18n/chs/package.i18n.json @@ -23,8 +23,8 @@ "c_cpp.command.vcpkgClipboardInstallSuggested.title": "将 vcpkg 安装命令复制到剪贴板", "c_cpp.command.vcpkgOnlineHelpSuggested.title": "访问 vcpkg 帮助页", "c_cpp.command.generateEditorConfig.title": "从 VC 格式设置生成 EditorConfig 内容", - "c_cpp.command.GoToNextDirectiveInGroup.title": "Go to next preprocessor directive in conditional group", - "c_cpp.command.GoToPrevDirectiveInGroup.title": "Go to previous preprocessor directive in conditional group", + "c_cpp.command.GoToNextDirectiveInGroup.title": "转到条件组中的下一个预处理器指令", + "c_cpp.command.GoToPrevDirectiveInGroup.title": "转到条件组中的上一个预处理器指令", "c_cpp.configuration.formatting.description": "配置格式化引擎", "c_cpp.configuration.formatting.clangFormat.description": "将使用 clang-format 设置代码的格式。", "c_cpp.configuration.formatting.vcFormat.description": "将使用 Visual C++ 格式设置引擎来设置代码的格式。", diff --git a/Extension/i18n/chs/src/main.i18n.json b/Extension/i18n/chs/src/main.i18n.json index 204f143ff4..011d31f440 100644 --- a/Extension/i18n/chs/src/main.i18n.json +++ b/Extension/i18n/chs/src/main.i18n.json @@ -6,8 +6,9 @@ { "architecture.not.supported": "体系结构 {0} 不受支持。", "apline.containers.not.supported": "Alpine 容器不受支持。", - "native.binaries.not.supported": "扩展的此 {0} 版本与你的 OS 不兼容。请下载并安装扩展的“{1}”版本。", "download.button": "转到下载页", + "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", + "native.binaries.not.supported": "扩展的此 {0} 版本与你的 OS 不兼容。请下载并安装扩展的“{1}”版本。", "extension.installation.failed": "C/C++ 扩展安装失败。为使函数正常工作,需要修复或重新安装 C/C++ 语言功能的扩展。", "remove.extension": "尝试修复", "jason.files.missing": "C/C++ 扩展安装失败。为使函数正常工作,需要重新安装 C/C++ 语言功能的扩展。", diff --git a/Extension/i18n/chs/src/nativeStrings.i18n.json b/Extension/i18n/chs/src/nativeStrings.i18n.json index 0408d577d7..367fe9d2c9 100644 --- a/Extension/i18n/chs/src/nativeStrings.i18n.json +++ b/Extension/i18n/chs/src/nativeStrings.i18n.json @@ -208,9 +208,9 @@ "unrecognized_language_standard_version": "编译器查询返回了无法识别的语言标准版本。将改用受支持的最新版本。", "intellisense_process_crash_detected": "检测到 IntelliSense 进程崩溃。", "return_values_label": "返回值:", - "nvcc_compiler_not_found": "Unable to locate nvcc compiler: {0}", - "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}" + "nvcc_compiler_not_found": "找不到 nvcc 编译器: {0}", + "nvcc_host_compiler_not_found": "找不到 nvcc 主机编译器: {0}", + "invoking_nvcc": "正在使用命令行调用 nvcc: {0}", + "nvcc_host_compile_command_not_found": "在 nvcc 的输出中找不到主机编译命令。", + "unable_to_locate_forced_include": "找不到 forced include: {0}" } \ No newline at end of file diff --git a/Extension/i18n/cht/src/main.i18n.json b/Extension/i18n/cht/src/main.i18n.json index e42c5d4b58..62850038cd 100644 --- a/Extension/i18n/cht/src/main.i18n.json +++ b/Extension/i18n/cht/src/main.i18n.json @@ -6,8 +6,9 @@ { "architecture.not.supported": "不支援架構 {0}。 ", "apline.containers.not.supported": "不支援 Alpine 容器。", - "native.binaries.not.supported": "此 {0} 版延伸模組與您的 OS 不相容。請下載並安裝 \"{1}\" 版本的延伸模組。", "download.button": "前往 [下載\ 頁面", + "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", + "native.binaries.not.supported": "此 {0} 版延伸模組與您的 OS 不相容。請下載並安裝 \"{1}\" 版本的延伸模組。", "extension.installation.failed": "無法成功安裝 C/C++ 延伸模組。您必須修復或重新安裝 C/C++ 語言功能的延伸模組,才可正常運作。", "remove.extension": "嘗試修復", "jason.files.missing": "無法成功安裝 C/C++ 延伸模組。您必須重新安裝 C/C++ 語言功能的延伸模組,才可正常運作。", diff --git a/Extension/i18n/csy/src/main.i18n.json b/Extension/i18n/csy/src/main.i18n.json index db280fe47b..8067153719 100644 --- a/Extension/i18n/csy/src/main.i18n.json +++ b/Extension/i18n/csy/src/main.i18n.json @@ -6,8 +6,9 @@ { "architecture.not.supported": "Architektura {0} se nepodporuje. ", "apline.containers.not.supported": "Kontejnery Alpine se nepodporují.", - "native.binaries.not.supported": "Tato verze rozšíření pro {0} není kompatibilní s vaším operačním systémem. Stáhněte a nainstalujte si prosím verzi rozšíření {1}.", "download.button": "Přejít na stránku stahování", + "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", + "native.binaries.not.supported": "Tato verze rozšíření pro {0} není kompatibilní s vaším operačním systémem. Stáhněte a nainstalujte si prosím verzi rozšíření {1}.", "extension.installation.failed": "Nepovedlo se úspěšně nainstalovat rozšíření jazyka C/C++. Aby rozšíření pro funkce jazyka C/C++ fungovalo správně, bude nutné ho opravit nebo přeinstalovat.", "remove.extension": "Pokusit se o opravu", "jason.files.missing": "Nepovedlo se úspěšně nainstalovat rozšíření jazyka C/C++. Aby rozšíření pro funkce jazyka C/C++ fungovalo správně, bude nutné ho přeinstalovat.", diff --git a/Extension/i18n/deu/src/main.i18n.json b/Extension/i18n/deu/src/main.i18n.json index c24682e8e5..55a8d05e3a 100644 --- a/Extension/i18n/deu/src/main.i18n.json +++ b/Extension/i18n/deu/src/main.i18n.json @@ -6,8 +6,9 @@ { "architecture.not.supported": "Die Architektur \"{0}\" wird nicht unterstützt. ", "apline.containers.not.supported": "Alpine-Container werden nicht unterstützt.", - "native.binaries.not.supported": "Diese Version für {0} der Erweiterung ist nicht mit Ihrem Betriebssystem kompatibel. Laden Sie Version {1} der Erweiterung herunter, und installieren Sie sie.", "download.button": "Gehe zu Downloadseite", + "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", + "native.binaries.not.supported": "Diese Version für {0} der Erweiterung ist nicht mit Ihrem Betriebssystem kompatibel. Laden Sie Version {1} der Erweiterung herunter, und installieren Sie sie.", "extension.installation.failed": "Die C/C++-Erweiterung konnte nicht erfolgreich installiert werden. Sie müssen die Erweiterung für C/C++-Sprachfeatures reparieren oder neu installieren, damit die Erweiterung ordnungsgemäß funktioniert.", "remove.extension": "Reparaturversuch", "jason.files.missing": "Die C/C++-Erweiterung konnte nicht erfolgreich installiert werden. Sie müssen die Erweiterung für C/C++-Sprachfeatures neu installieren, damit die Erweiterung ordnungsgemäß funktioniert.", diff --git a/Extension/i18n/esn/src/main.i18n.json b/Extension/i18n/esn/src/main.i18n.json index 7e7b461e4e..92d07db42c 100644 --- a/Extension/i18n/esn/src/main.i18n.json +++ b/Extension/i18n/esn/src/main.i18n.json @@ -6,8 +6,9 @@ { "architecture.not.supported": "La arquitectura {0} no se admite. ", "apline.containers.not.supported": "Los contenedores de Alpine no se admiten.", - "native.binaries.not.supported": "La versión para {0} de la extensión no es compatible con el sistema operativo. Descargue la versión \"{1}\" de la extensión e instálela.", "download.button": "Ir a la página de descarga", + "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", + "native.binaries.not.supported": "La versión para {0} de la extensión no es compatible con el sistema operativo. Descargue la versión \"{1}\" de la extensión e instálela.", "extension.installation.failed": "Error de instalación de la extensión de C/C++. Tendrá que reparar o reinstalar la extensión para que las características del lenguaje C/C++ funcionen correctamente.", "remove.extension": "Intentar reparar", "jason.files.missing": "Error de instalación de la extensión de C/C++. Tendrá que reinstalar la extensión para que las características del lenguaje C/C++ funcionen correctamente.", diff --git a/Extension/i18n/fra/src/main.i18n.json b/Extension/i18n/fra/src/main.i18n.json index d3acf77f70..18dee948fb 100644 --- a/Extension/i18n/fra/src/main.i18n.json +++ b/Extension/i18n/fra/src/main.i18n.json @@ -6,8 +6,9 @@ { "architecture.not.supported": "L'architecture {0} n'est pas prise en charge. ", "apline.containers.not.supported": "Les conteneurs Alpine ne sont pas pris en charge.", - "native.binaries.not.supported": "Cette version {0} de l'extension est incompatible avec votre système d'exploitation. Téléchargez et installez la version \"{1}\" de l'extension.", "download.button": "Accéder à la page de téléchargement", + "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", + "native.binaries.not.supported": "Cette version {0} de l'extension est incompatible avec votre système d'exploitation. Téléchargez et installez la version \"{1}\" de l'extension.", "extension.installation.failed": "Échec de l'installation de l'extension C/C++. Vous devez réparer ou réinstaller l'extension pour que les fonctionnalités du langage C/C++ fonctionnent correctement.", "remove.extension": "Tentative de réparation", "jason.files.missing": "Échec de l'installation de l'extension C/C++. Vous devez réinstaller l'extension pour que les fonctionnalités du langage C/C++ fonctionnent correctement.", diff --git a/Extension/i18n/ita/src/main.i18n.json b/Extension/i18n/ita/src/main.i18n.json index fb578f92a8..eb45e53655 100644 --- a/Extension/i18n/ita/src/main.i18n.json +++ b/Extension/i18n/ita/src/main.i18n.json @@ -6,8 +6,9 @@ { "architecture.not.supported": "L'architettura {0} non è supportata. ", "apline.containers.not.supported": "I contenitori Alpine non sono supportati.", - "native.binaries.not.supported": "La versione {0} dell'estensione non è compatibile con il sistema operativo. Scaricare e installare la versione \"{1}\" dell'estensione.", "download.button": "Vai alla pagina di download", + "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", + "native.binaries.not.supported": "La versione {0} dell'estensione non è compatibile con il sistema operativo. Scaricare e installare la versione \"{1}\" dell'estensione.", "extension.installation.failed": "Non è stato possibile installare l'estensione C/C++. Per funzionare correttamente, è necessario riparare o reinstallare l'estensione per le funzionalità del linguaggio C/C++.", "remove.extension": "Tentativo di riparazione", "jason.files.missing": "Non è stato possibile installare l'estensione C/C++. Per funzionare correttamente, sarà necessario reinstallare l'estensione per le funzionalità del linguaggio C/C++.", diff --git a/Extension/i18n/jpn/package.i18n.json b/Extension/i18n/jpn/package.i18n.json index 97a5306ee0..87bf75247d 100644 --- a/Extension/i18n/jpn/package.i18n.json +++ b/Extension/i18n/jpn/package.i18n.json @@ -23,8 +23,8 @@ "c_cpp.command.vcpkgClipboardInstallSuggested.title": "vcpkg インストール コマンドをクリップボードにコピーする", "c_cpp.command.vcpkgOnlineHelpSuggested.title": "vcpkg のヘルプ ページへのアクセス", "c_cpp.command.generateEditorConfig.title": "VC 形式の設定からの EditorConfig コンテンツの生成", - "c_cpp.command.GoToNextDirectiveInGroup.title": "Go to next preprocessor directive in conditional group", - "c_cpp.command.GoToPrevDirectiveInGroup.title": "Go to previous preprocessor directive in conditional group", + "c_cpp.command.GoToNextDirectiveInGroup.title": "条件付きグループ内の次のプリプロセッサ ディレクティブへ移動", + "c_cpp.command.GoToPrevDirectiveInGroup.title": "条件付きグループ内の前のプリプロセッサ ディレクティブへ移動", "c_cpp.configuration.formatting.description": "書式設定エンジンを構成します", "c_cpp.configuration.formatting.clangFormat.description": "clang-format を使用してコードがフォーマットされます。", "c_cpp.configuration.formatting.vcFormat.description": "コードの書式設定に Visual C++ の書式設定エンジンが使用されます。", diff --git a/Extension/i18n/jpn/src/main.i18n.json b/Extension/i18n/jpn/src/main.i18n.json index cbf9bda7ab..54862c9410 100644 --- a/Extension/i18n/jpn/src/main.i18n.json +++ b/Extension/i18n/jpn/src/main.i18n.json @@ -6,8 +6,9 @@ { "architecture.not.supported": "アーキテクチャ {0} はサポートされていません。", "apline.containers.not.supported": "Alpine コンテナーはサポートされていません。", - "native.binaries.not.supported": "この {0} バージョンの拡張機能は、お使いの OS と互換性がありません。拡張機能の \"{1}\" バージョンをダウンロードしてインストールしてください。", "download.button": "ダウンロード ページへ移動", + "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", + "native.binaries.not.supported": "この {0} バージョンの拡張機能は、お使いの OS と互換性がありません。拡張機能の \"{1}\" バージョンをダウンロードしてインストールしてください。", "extension.installation.failed": "C/C++ の拡張機能を正常にインストールできませんでした。正常に機能させるには、C/C++ 言語機能の拡張機能を修復または再インストールする必要があります。", "remove.extension": "修復の試行", "jason.files.missing": "C/C++ の拡張機能を正常にインストールできませんでした。正常に機能させるには、C/C++ 言語機能の拡張機能を再インストールする必要があります。", diff --git a/Extension/i18n/jpn/src/nativeStrings.i18n.json b/Extension/i18n/jpn/src/nativeStrings.i18n.json index 7a0e5d151d..fb9d645a9a 100644 --- a/Extension/i18n/jpn/src/nativeStrings.i18n.json +++ b/Extension/i18n/jpn/src/nativeStrings.i18n.json @@ -208,9 +208,9 @@ "unrecognized_language_standard_version": "コンパイラ クエリにより、認識されない言語標準バージョンが返されました。代わりに、サポートされている最新のバージョンが使用されます。", "intellisense_process_crash_detected": "IntelliSense プロセスのクラッシュが検出されました。", "return_values_label": "戻り値:", - "nvcc_compiler_not_found": "Unable to locate nvcc compiler: {0}", - "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}" + "nvcc_compiler_not_found": "nvcc コンパイラが見つかりません: {0}", + "nvcc_host_compiler_not_found": "nvcc ホスト コンパイラが見つかりません: {0}", + "invoking_nvcc": "コマンド ラインで nvcc を呼び出しています: {0}", + "nvcc_host_compile_command_not_found": "nvcc の出力でホスト コンパイル コマンドが見つかりません。", + "unable_to_locate_forced_include": "強制インクルードが見つかりません: {0}" } \ No newline at end of file diff --git a/Extension/i18n/kor/src/main.i18n.json b/Extension/i18n/kor/src/main.i18n.json index fdae3499d6..d85ab923fc 100644 --- a/Extension/i18n/kor/src/main.i18n.json +++ b/Extension/i18n/kor/src/main.i18n.json @@ -6,8 +6,9 @@ { "architecture.not.supported": "{0} 아키텍처는 지원되지 않습니다. ", "apline.containers.not.supported": "Alpine 컨테이너는 지원되지 않습니다.", - "native.binaries.not.supported": "이 확장의 {0} 버전은 OS와 호환되지 않습니다. 확장의 \"{1}\" 버전을 다운로드하여 설치하세요.", "download.button": "다운로드 페이지로 이동", + "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", + "native.binaries.not.supported": "이 확장의 {0} 버전은 OS와 호환되지 않습니다. 확장의 \"{1}\" 버전을 다운로드하여 설치하세요.", "extension.installation.failed": "C/C++ 확장을 설치하지 못했습니다. C/C++ 언어 기능이 제대로 작동하려면 확장을 복구하거나 다시 설치해야 합니다.", "remove.extension": "복구 시도", "jason.files.missing": "C/C++ 확장을 설치하지 못했습니다. C/C++ 언어 기능이 제대로 작동하려면 확장을 다시 설치해야 합니다.", diff --git a/Extension/i18n/plk/src/main.i18n.json b/Extension/i18n/plk/src/main.i18n.json index b655753f03..bb6e05e49f 100644 --- a/Extension/i18n/plk/src/main.i18n.json +++ b/Extension/i18n/plk/src/main.i18n.json @@ -6,8 +6,9 @@ { "architecture.not.supported": "Architektura {0} nie jest obsługiwana.", "apline.containers.not.supported": "Kontenery Alpine nie są obsługiwane.", - "native.binaries.not.supported": "Ta wersja {0} rozszerzenia jest niezgodna z systemem operacyjnym. Pobierz i zainstaluj wersję rozszerzenia „{1}”.", "download.button": "Przejdź do strony pobierania", + "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", + "native.binaries.not.supported": "Ta wersja {0} rozszerzenia jest niezgodna z systemem operacyjnym. Pobierz i zainstaluj wersję rozszerzenia „{1}”.", "extension.installation.failed": "Nie można pomyślnie zainstalować rozszerzenia języka C/C++. Aby umożliwić poprawne działanie, należy naprawić lub zainstalować ponownie rozszerzenie dla funkcji języka C/C++.", "remove.extension": "Spróbuj naprawić", "jason.files.missing": "Nie można pomyślnie zainstalować rozszerzenia języka C/C++. Aby umożliwić poprawne działanie, należy zainstalować ponownie rozszerzenie dla funkcji języka C/C++.", diff --git a/Extension/i18n/ptb/src/main.i18n.json b/Extension/i18n/ptb/src/main.i18n.json index b7d67287e3..2e14d58945 100644 --- a/Extension/i18n/ptb/src/main.i18n.json +++ b/Extension/i18n/ptb/src/main.i18n.json @@ -6,8 +6,9 @@ { "architecture.not.supported": "Não há suporte para a arquitetura {0}. ", "apline.containers.not.supported": "Não há suporte para os contêineres do Alpine.", - "native.binaries.not.supported": "Esta versão de {0} da extensão é incompatível com seu sistema operacional. Baixe e instale a versão \"{1}\" da extensão.", "download.button": "Ir para a Página de Download", + "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", + "native.binaries.not.supported": "Esta versão de {0} da extensão é incompatível com seu sistema operacional. Baixe e instale a versão \"{1}\" da extensão.", "extension.installation.failed": "A extensão C/C++ não foi instalada com êxito. Será necessário reparar ou reinstalar a extensão dos recursos da linguagem C/C++ para que ela funcione corretamente.", "remove.extension": "Tentar Reparar", "jason.files.missing": "A extensão C/C++ não foi instalada com êxito. Será necessário reinstalar a extensão dos recursos da linguagem C/C++ para que ela funcione corretamente.", diff --git a/Extension/i18n/rus/src/main.i18n.json b/Extension/i18n/rus/src/main.i18n.json index e3bfa09dc4..bbf80f969d 100644 --- a/Extension/i18n/rus/src/main.i18n.json +++ b/Extension/i18n/rus/src/main.i18n.json @@ -6,8 +6,9 @@ { "architecture.not.supported": "Архитектура {0} не поддерживается. ", "apline.containers.not.supported": "Контейнеры Alpine не поддерживаются.", - "native.binaries.not.supported": "Версия расширения для {0} не совместима с вашей ОС. Скачайте и установите версию расширения \"{1}\".", "download.button": "Перейти к странице скачивания", + "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", + "native.binaries.not.supported": "Версия расширения для {0} не совместима с вашей ОС. Скачайте и установите версию расширения \"{1}\".", "extension.installation.failed": "Установить расширение C/C++ не удалось. Исправьте или переустановите расширение функций языка C/C++ для корректной работы.", "remove.extension": "Попытка исправления", "jason.files.missing": "Установить расширение C/C++ не удалось. Переустановите расширение функций языка C/C++ для корректной работы.", diff --git a/Extension/i18n/trk/src/main.i18n.json b/Extension/i18n/trk/src/main.i18n.json index ae489455fa..3ad5324ca2 100644 --- a/Extension/i18n/trk/src/main.i18n.json +++ b/Extension/i18n/trk/src/main.i18n.json @@ -6,8 +6,9 @@ { "architecture.not.supported": "{0} mimarisi desteklemiyor.", "apline.containers.not.supported": "Alpine kapsayıcıları desteklenmiyor.", - "native.binaries.not.supported": "Uzantının bu {0} sürümü, işletim sisteminizle uyumsuz. Lütfen uzantının \"{1}\" sürümünü indirip yükleyin.", "download.button": "İndirmeler Sayfasına Git", + "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", + "native.binaries.not.supported": "Uzantının bu {0} sürümü, işletim sisteminizle uyumsuz. Lütfen uzantının \"{1}\" sürümünü indirip yükleyin.", "extension.installation.failed": "C/C++ uzantısı başarıyla yüklenemedi. C/C++ dil özelliklerinin düzgün çalışması için uzantıyı onarmanız veya yeniden yüklemeniz gerekir.", "remove.extension": "Onarmayı Dene", "jason.files.missing": "C/C++ uzantısı başarıyla yüklenemedi. C/C++ dil özelliklerinin düzgün çalışabilmesi için uzantıyı yeniden yüklemeniz gerekir.", From f092c8fadffbbc94f8560c18aa34b742d2ddff80 Mon Sep 17 00:00:00 2001 From: Elaheh Rashedi Date: Thu, 8 Apr 2021 10:39:29 -0700 Subject: [PATCH 06/48] linter error fix --- Extension/src/LanguageServer/cppBuildTaskProvider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Extension/src/LanguageServer/cppBuildTaskProvider.ts b/Extension/src/LanguageServer/cppBuildTaskProvider.ts index 3c0f92fe3a..10940e9b87 100644 --- a/Extension/src/LanguageServer/cppBuildTaskProvider.ts +++ b/Extension/src/LanguageServer/cppBuildTaskProvider.ts @@ -194,7 +194,7 @@ export class CppBuildTaskProvider implements TaskProvider { } } - const scope: WorkspaceFolder | TaskScope = folder? folder : TaskScope.Workspace; + const scope: WorkspaceFolder | TaskScope = folder ? folder : TaskScope.Workspace; const task: CppBuildTask = new Task(definition, scope, definition.label, CppBuildTaskProvider.CppBuildSourceStr, new CustomExecution(async (resolvedDefinition: TaskDefinition): Promise => // When the task is executed, this callback will run. Here, we setup for running the task. From 8b7dc8ba3a19ee86ca11f22f1e4a917b748a8d20 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson <49173979+Colengms@users.noreply.github.com> Date: Thu, 8 Apr 2021 12:59:42 -0700 Subject: [PATCH 07/48] Update a string. Also, correct use of "MacOS" to the preferred "macOS" (#7318) --- Extension/CHANGELOG.md | 2 +- Extension/i18n/plk/ui/settings.html.i18n.json | 2 +- Extension/src/main.ts | 2 +- Extension/src/platform.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index d261615dfe..4b57e74916 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -492,7 +492,7 @@ ## Version 0.26.2: December 2, 2019 ### Enhancements * Reworked how a source file is selected for TU creation when opening a header file. [#2856](https://github.com/microsoft/vscode-cpptools/issues/2856) -* Updated the default value of the `C_Cpp.intelliSenseCachePath` setting to a path under `XDG_CACHE_HOME` on Linux, or `~/Library/Cache` on MacOS. [#3979](https://github.com/microsoft/vscode-cpptools/issues/3979) +* Updated the default value of the `C_Cpp.intelliSenseCachePath` setting to a path under `XDG_CACHE_HOME` on Linux, or `~/Library/Cache` on macOS. [#3979](https://github.com/microsoft/vscode-cpptools/issues/3979) * Reset memory usage of the IntelliSense process if it grows beyond a threshold. [#4119](https://github.com/microsoft/vscode-cpptools/issues/4119) * Add validation that the new symbol name provided to 'Rename Symbol' is a valid identifier. Add the setting `C_Cpp.renameRequiresIdentifier` to allow that verification to be disabled. [#4409](https://github.com/microsoft/vscode-cpptools/issues/4409) * Enable setting of breakpoints in CUDA sources. diff --git a/Extension/i18n/plk/ui/settings.html.i18n.json b/Extension/i18n/plk/ui/settings.html.i18n.json index e5fc765f58..ad9d75b118 100644 --- a/Extension/i18n/plk/ui/settings.html.i18n.json +++ b/Extension/i18n/plk/ui/settings.html.i18n.json @@ -47,7 +47,7 @@ "windows.sdk.version": "Wersja zestawu Windows SDK", "windows.sdk.version.description": "Wersja ścieżki dyrektywy include zestawu Windows SDK, która ma być używana w systemie Windows, np. {0}.", "mac.framework.path": "Ścieżka do platformy Mac", - "mac.framework.path.description": "Lista ścieżek do użycia przez aparat IntelliSense podczas wyszukiwania dołączonych nagłówków z platform Mac. Obsługiwane tylko w przypadku konfiguracji dla systemu MacOS.", + "mac.framework.path.description": "Lista ścieżek do użycia przez aparat IntelliSense podczas wyszukiwania dołączonych nagłówków z platform Mac. Obsługiwane tylko w przypadku konfiguracji dla systemu macOS.", "one.path.per.line": "Jedna ścieżka na wiersz.", "forced.include": "Wymuszone dołączanie", "forced.include.description": "Lista plików, które powinny zostać uwzględnione przed przetworzeniem każdego innego znaku w pliku źródłowym. Pliki są uwzględniane w podanej kolejności.", diff --git a/Extension/src/main.ts b/Extension/src/main.ts index 8a74153a7a..ee47ecec3f 100644 --- a/Extension/src/main.ts +++ b/Extension/src/main.ts @@ -102,7 +102,7 @@ export async function activate(context: vscode.ExtensionContext): Promise { if (selection === downloadLink) { diff --git a/Extension/src/platform.ts b/Extension/src/platform.ts index b0468e4fc1..a97d683236 100644 --- a/Extension/src/platform.ts +++ b/Extension/src/platform.ts @@ -16,7 +16,7 @@ const localize: nls.LocalizeFunc = nls.loadMessageBundle(); export function GetOSName(processPlatform: string | undefined): string | undefined { switch (processPlatform) { case "win32": return "Windows"; - case "darwin": return "MacOS"; + case "darwin": return "macOS"; case "linux": return "Linux"; default: return undefined; } From b2c9167eecf37559652be35ae6687b89f83eb021 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Thu, 8 Apr 2021 14:21:47 -0700 Subject: [PATCH 08/48] 1_3_0_insiders5 changelog (#7319) * Update changelog for 1.3.0-insiders5. --- Extension/CHANGELOG.md | 7 +++++++ Extension/ThirdPartyNotices.txt | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index 4b57e74916..809b519dcf 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -1,5 +1,12 @@ # C/C++ for Visual Studio Code Change Log +## Version 1.3.0-insiders5: April 8, 2021 +### Bug Fixes +* Display integer values for char and unsigned char on hover instead of character symbols. [#1552](https://github.com/microsoft/vscode-cpptools/issues/1552) +* Fix a crash (and other bugs) caused by resolving symlinks when processing recursive includes. [#7306](https://github.com/microsoft/vscode-cpptools/issues/7306) +* Fix bug preventing successful validation and receipt of browse configurations from custom configuration providers. [PR# 7131](https://github.com/microsoft/vscode-cpptools/pull/7313) +* Fix a potential crash on shutdown and when editing at the end of a document. + ## Version 1.3.0-insiders4: April 6, 2021 ### New Features * Add native language service binaries for ARM64 Mac. [#6595](https://github.com/microsoft/vscode-cpptools/issues/6595) diff --git a/Extension/ThirdPartyNotices.txt b/Extension/ThirdPartyNotices.txt index 4c10fe9254..81c27a515e 100644 --- a/Extension/ThirdPartyNotices.txt +++ b/Extension/ThirdPartyNotices.txt @@ -734,7 +734,7 @@ SOFTWARE. --------------------------------------------------------- -base64-js 1.3.1 - MIT +base64-js 1.5.1 - MIT https://github.com/beatgammit/base64-js Copyright (c) 2014 Jameson Little @@ -1375,7 +1375,7 @@ SOFTWARE. --------------------------------------------------------- -plist 3.0.1 - MIT +plist 3.0.2 - MIT https://github.com/TooTallNate/node-plist#readme Copyright (c) 2010-2017 Nathan Rajlich From 9a37e6882c9f8a7e75a8805852d8aa0cbe8b0129 Mon Sep 17 00:00:00 2001 From: csigs Date: Fri, 9 Apr 2021 10:25:13 -0700 Subject: [PATCH 09/48] Localization - Translated Strings (#7328) Co-authored-by: DevDiv Build Lab - Dev14 --- Extension/i18n/chs/src/main.i18n.json | 2 +- Extension/i18n/cht/src/main.i18n.json | 2 +- Extension/i18n/csy/src/main.i18n.json | 2 +- Extension/i18n/deu/package.i18n.json | 4 ++-- Extension/i18n/deu/src/main.i18n.json | 2 +- Extension/i18n/deu/src/nativeStrings.i18n.json | 10 +++++----- Extension/i18n/esn/package.i18n.json | 4 ++-- Extension/i18n/esn/src/main.i18n.json | 2 +- Extension/i18n/esn/src/nativeStrings.i18n.json | 10 +++++----- Extension/i18n/fra/src/main.i18n.json | 2 +- Extension/i18n/ita/src/main.i18n.json | 2 +- Extension/i18n/jpn/src/main.i18n.json | 2 +- Extension/i18n/kor/src/main.i18n.json | 2 +- Extension/i18n/plk/src/main.i18n.json | 2 +- Extension/i18n/plk/ui/settings.html.i18n.json | 2 +- Extension/i18n/ptb/package.i18n.json | 4 ++-- Extension/i18n/ptb/src/main.i18n.json | 2 +- Extension/i18n/ptb/src/nativeStrings.i18n.json | 10 +++++----- Extension/i18n/rus/package.i18n.json | 4 ++-- Extension/i18n/rus/src/main.i18n.json | 2 +- Extension/i18n/rus/src/nativeStrings.i18n.json | 10 +++++----- Extension/i18n/trk/package.i18n.json | 4 ++-- Extension/i18n/trk/src/main.i18n.json | 2 +- Extension/i18n/trk/src/nativeStrings.i18n.json | 10 +++++----- 24 files changed, 49 insertions(+), 49 deletions(-) diff --git a/Extension/i18n/chs/src/main.i18n.json b/Extension/i18n/chs/src/main.i18n.json index 011d31f440..46c70e68e9 100644 --- a/Extension/i18n/chs/src/main.i18n.json +++ b/Extension/i18n/chs/src/main.i18n.json @@ -8,7 +8,7 @@ "apline.containers.not.supported": "Alpine 容器不受支持。", "download.button": "转到下载页", "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", - "native.binaries.not.supported": "扩展的此 {0} 版本与你的 OS 不兼容。请下载并安装扩展的“{1}”版本。", + "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", "extension.installation.failed": "C/C++ 扩展安装失败。为使函数正常工作,需要修复或重新安装 C/C++ 语言功能的扩展。", "remove.extension": "尝试修复", "jason.files.missing": "C/C++ 扩展安装失败。为使函数正常工作,需要重新安装 C/C++ 语言功能的扩展。", diff --git a/Extension/i18n/cht/src/main.i18n.json b/Extension/i18n/cht/src/main.i18n.json index 62850038cd..19fb978431 100644 --- a/Extension/i18n/cht/src/main.i18n.json +++ b/Extension/i18n/cht/src/main.i18n.json @@ -8,7 +8,7 @@ "apline.containers.not.supported": "不支援 Alpine 容器。", "download.button": "前往 [下載\ 頁面", "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", - "native.binaries.not.supported": "此 {0} 版延伸模組與您的 OS 不相容。請下載並安裝 \"{1}\" 版本的延伸模組。", + "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", "extension.installation.failed": "無法成功安裝 C/C++ 延伸模組。您必須修復或重新安裝 C/C++ 語言功能的延伸模組,才可正常運作。", "remove.extension": "嘗試修復", "jason.files.missing": "無法成功安裝 C/C++ 延伸模組。您必須重新安裝 C/C++ 語言功能的延伸模組,才可正常運作。", diff --git a/Extension/i18n/csy/src/main.i18n.json b/Extension/i18n/csy/src/main.i18n.json index 8067153719..e792fa38cc 100644 --- a/Extension/i18n/csy/src/main.i18n.json +++ b/Extension/i18n/csy/src/main.i18n.json @@ -8,7 +8,7 @@ "apline.containers.not.supported": "Kontejnery Alpine se nepodporují.", "download.button": "Přejít na stránku stahování", "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", - "native.binaries.not.supported": "Tato verze rozšíření pro {0} není kompatibilní s vaším operačním systémem. Stáhněte a nainstalujte si prosím verzi rozšíření {1}.", + "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", "extension.installation.failed": "Nepovedlo se úspěšně nainstalovat rozšíření jazyka C/C++. Aby rozšíření pro funkce jazyka C/C++ fungovalo správně, bude nutné ho opravit nebo přeinstalovat.", "remove.extension": "Pokusit se o opravu", "jason.files.missing": "Nepovedlo se úspěšně nainstalovat rozšíření jazyka C/C++. Aby rozšíření pro funkce jazyka C/C++ fungovalo správně, bude nutné ho přeinstalovat.", diff --git a/Extension/i18n/deu/package.i18n.json b/Extension/i18n/deu/package.i18n.json index 3bdd52987f..cf34ad3823 100644 --- a/Extension/i18n/deu/package.i18n.json +++ b/Extension/i18n/deu/package.i18n.json @@ -23,8 +23,8 @@ "c_cpp.command.vcpkgClipboardInstallSuggested.title": "vcpkg-Installationsbefehl in Zwischenablage kopieren", "c_cpp.command.vcpkgOnlineHelpSuggested.title": "vcpkg-Hilfeseite aufrufen", "c_cpp.command.generateEditorConfig.title": "EditorConfig-Inhalte aus VC-Formateinstellungen generieren", - "c_cpp.command.GoToNextDirectiveInGroup.title": "Go to next preprocessor directive in conditional group", - "c_cpp.command.GoToPrevDirectiveInGroup.title": "Go to previous preprocessor directive in conditional group", + "c_cpp.command.GoToNextDirectiveInGroup.title": "Zur nächsten Präprozessoranweisung in bedingter Gruppe wechseln", + "c_cpp.command.GoToPrevDirectiveInGroup.title": "Zur vorherigen Präprozessoranweisung in bedingter Gruppe wechseln", "c_cpp.configuration.formatting.description": "Konfiguriert das Formatierungsmodul.", "c_cpp.configuration.formatting.clangFormat.description": "Zum Formatieren von Code wird \"clang-format\" verwendet.", "c_cpp.configuration.formatting.vcFormat.description": "Das Visual C++-Formatierungsmodul wird zum Formatieren von Code verwendet.", diff --git a/Extension/i18n/deu/src/main.i18n.json b/Extension/i18n/deu/src/main.i18n.json index 55a8d05e3a..0bb0938711 100644 --- a/Extension/i18n/deu/src/main.i18n.json +++ b/Extension/i18n/deu/src/main.i18n.json @@ -8,7 +8,7 @@ "apline.containers.not.supported": "Alpine-Container werden nicht unterstützt.", "download.button": "Gehe zu Downloadseite", "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", - "native.binaries.not.supported": "Diese Version für {0} der Erweiterung ist nicht mit Ihrem Betriebssystem kompatibel. Laden Sie Version {1} der Erweiterung herunter, und installieren Sie sie.", + "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", "extension.installation.failed": "Die C/C++-Erweiterung konnte nicht erfolgreich installiert werden. Sie müssen die Erweiterung für C/C++-Sprachfeatures reparieren oder neu installieren, damit die Erweiterung ordnungsgemäß funktioniert.", "remove.extension": "Reparaturversuch", "jason.files.missing": "Die C/C++-Erweiterung konnte nicht erfolgreich installiert werden. Sie müssen die Erweiterung für C/C++-Sprachfeatures neu installieren, damit die Erweiterung ordnungsgemäß funktioniert.", diff --git a/Extension/i18n/deu/src/nativeStrings.i18n.json b/Extension/i18n/deu/src/nativeStrings.i18n.json index 1865a19949..0e95c8c460 100644 --- a/Extension/i18n/deu/src/nativeStrings.i18n.json +++ b/Extension/i18n/deu/src/nativeStrings.i18n.json @@ -208,9 +208,9 @@ "unrecognized_language_standard_version": "Die Compilerabfrage hat eine unbekannte Sprachstandardversion zurückgegeben. Stattdessen wird die neueste unterstützte Version verwendet.", "intellisense_process_crash_detected": "IntelliSense-Prozessabsturz erkannt.", "return_values_label": "Rückgabewerte:", - "nvcc_compiler_not_found": "Unable to locate nvcc compiler: {0}", - "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}" + "nvcc_compiler_not_found": "Der nvcc-Compiler wurde nicht gefunden: {0}", + "nvcc_host_compiler_not_found": "Der nvcc-Hostcompiler wurde nicht gefunden: {0}", + "invoking_nvcc": "nvcc wird über Befehlszeile aufgerufen: {0}", + "nvcc_host_compile_command_not_found": "Der Hostkompilierbefehl wurde in der Ausgabe von nvcc nicht gefunden.", + "unable_to_locate_forced_include": "Erzwungene Includedatei wurde nicht gefunden: {0}" } \ No newline at end of file diff --git a/Extension/i18n/esn/package.i18n.json b/Extension/i18n/esn/package.i18n.json index 013c97537d..f1097cee48 100644 --- a/Extension/i18n/esn/package.i18n.json +++ b/Extension/i18n/esn/package.i18n.json @@ -23,8 +23,8 @@ "c_cpp.command.vcpkgClipboardInstallSuggested.title": "Copiar el comando vcpkg install en el Portapapeles", "c_cpp.command.vcpkgOnlineHelpSuggested.title": "Visitar la página de ayuda de vcpkg", "c_cpp.command.generateEditorConfig.title": "Generar contenido de EditorConfig a partir de la configuración de formato de VC", - "c_cpp.command.GoToNextDirectiveInGroup.title": "Go to next preprocessor directive in conditional group", - "c_cpp.command.GoToPrevDirectiveInGroup.title": "Go to previous preprocessor directive in conditional group", + "c_cpp.command.GoToNextDirectiveInGroup.title": "Ir a la directiva del preprocesador siguiente en el grupo condicional", + "c_cpp.command.GoToPrevDirectiveInGroup.title": "Ir a la directiva del preprocesador anterior en el grupo condicional", "c_cpp.configuration.formatting.description": "Configura el motor de formato", "c_cpp.configuration.formatting.clangFormat.description": "El archivo clang-format se usará para formatear el código.", "c_cpp.configuration.formatting.vcFormat.description": "El motor de formato de Visual C++ se usará para formatear el código.", diff --git a/Extension/i18n/esn/src/main.i18n.json b/Extension/i18n/esn/src/main.i18n.json index 92d07db42c..f45f3ad871 100644 --- a/Extension/i18n/esn/src/main.i18n.json +++ b/Extension/i18n/esn/src/main.i18n.json @@ -8,7 +8,7 @@ "apline.containers.not.supported": "Los contenedores de Alpine no se admiten.", "download.button": "Ir a la página de descarga", "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", - "native.binaries.not.supported": "La versión para {0} de la extensión no es compatible con el sistema operativo. Descargue la versión \"{1}\" de la extensión e instálela.", + "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", "extension.installation.failed": "Error de instalación de la extensión de C/C++. Tendrá que reparar o reinstalar la extensión para que las características del lenguaje C/C++ funcionen correctamente.", "remove.extension": "Intentar reparar", "jason.files.missing": "Error de instalación de la extensión de C/C++. Tendrá que reinstalar la extensión para que las características del lenguaje C/C++ funcionen correctamente.", diff --git a/Extension/i18n/esn/src/nativeStrings.i18n.json b/Extension/i18n/esn/src/nativeStrings.i18n.json index 035e3d7172..9fb9b2461c 100644 --- a/Extension/i18n/esn/src/nativeStrings.i18n.json +++ b/Extension/i18n/esn/src/nativeStrings.i18n.json @@ -208,9 +208,9 @@ "unrecognized_language_standard_version": "La consulta del compilador devolvió una versión estándar del lenguaje no reconocida. En su lugar se usará la última versión admitida.", "intellisense_process_crash_detected": "Se ha detectado un bloqueo del proceso de IntelliSense.", "return_values_label": "Valores devueltos:", - "nvcc_compiler_not_found": "Unable to locate nvcc compiler: {0}", - "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}" + "nvcc_compiler_not_found": "No se encuentra el compilador de nvcc: {0}", + "nvcc_host_compiler_not_found": "No se encuentra el compilador host nvcc: {0}", + "invoking_nvcc": "Invocando nvcc con la línea de comandos: {0}", + "nvcc_host_compile_command_not_found": "No se encuentra el comando de compilación del host en la salida de nvcc.", + "unable_to_locate_forced_include": "No se encuentra la inclusión forzada: {0}" } \ No newline at end of file diff --git a/Extension/i18n/fra/src/main.i18n.json b/Extension/i18n/fra/src/main.i18n.json index 18dee948fb..da0b26f391 100644 --- a/Extension/i18n/fra/src/main.i18n.json +++ b/Extension/i18n/fra/src/main.i18n.json @@ -8,7 +8,7 @@ "apline.containers.not.supported": "Les conteneurs Alpine ne sont pas pris en charge.", "download.button": "Accéder à la page de téléchargement", "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", - "native.binaries.not.supported": "Cette version {0} de l'extension est incompatible avec votre système d'exploitation. Téléchargez et installez la version \"{1}\" de l'extension.", + "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", "extension.installation.failed": "Échec de l'installation de l'extension C/C++. Vous devez réparer ou réinstaller l'extension pour que les fonctionnalités du langage C/C++ fonctionnent correctement.", "remove.extension": "Tentative de réparation", "jason.files.missing": "Échec de l'installation de l'extension C/C++. Vous devez réinstaller l'extension pour que les fonctionnalités du langage C/C++ fonctionnent correctement.", diff --git a/Extension/i18n/ita/src/main.i18n.json b/Extension/i18n/ita/src/main.i18n.json index eb45e53655..1945a24d77 100644 --- a/Extension/i18n/ita/src/main.i18n.json +++ b/Extension/i18n/ita/src/main.i18n.json @@ -8,7 +8,7 @@ "apline.containers.not.supported": "I contenitori Alpine non sono supportati.", "download.button": "Vai alla pagina di download", "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", - "native.binaries.not.supported": "La versione {0} dell'estensione non è compatibile con il sistema operativo. Scaricare e installare la versione \"{1}\" dell'estensione.", + "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", "extension.installation.failed": "Non è stato possibile installare l'estensione C/C++. Per funzionare correttamente, è necessario riparare o reinstallare l'estensione per le funzionalità del linguaggio C/C++.", "remove.extension": "Tentativo di riparazione", "jason.files.missing": "Non è stato possibile installare l'estensione C/C++. Per funzionare correttamente, sarà necessario reinstallare l'estensione per le funzionalità del linguaggio C/C++.", diff --git a/Extension/i18n/jpn/src/main.i18n.json b/Extension/i18n/jpn/src/main.i18n.json index 54862c9410..f6c9f5811e 100644 --- a/Extension/i18n/jpn/src/main.i18n.json +++ b/Extension/i18n/jpn/src/main.i18n.json @@ -8,7 +8,7 @@ "apline.containers.not.supported": "Alpine コンテナーはサポートされていません。", "download.button": "ダウンロード ページへ移動", "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", - "native.binaries.not.supported": "この {0} バージョンの拡張機能は、お使いの OS と互換性がありません。拡張機能の \"{1}\" バージョンをダウンロードしてインストールしてください。", + "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", "extension.installation.failed": "C/C++ の拡張機能を正常にインストールできませんでした。正常に機能させるには、C/C++ 言語機能の拡張機能を修復または再インストールする必要があります。", "remove.extension": "修復の試行", "jason.files.missing": "C/C++ の拡張機能を正常にインストールできませんでした。正常に機能させるには、C/C++ 言語機能の拡張機能を再インストールする必要があります。", diff --git a/Extension/i18n/kor/src/main.i18n.json b/Extension/i18n/kor/src/main.i18n.json index d85ab923fc..9aa8e45582 100644 --- a/Extension/i18n/kor/src/main.i18n.json +++ b/Extension/i18n/kor/src/main.i18n.json @@ -8,7 +8,7 @@ "apline.containers.not.supported": "Alpine 컨테이너는 지원되지 않습니다.", "download.button": "다운로드 페이지로 이동", "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", - "native.binaries.not.supported": "이 확장의 {0} 버전은 OS와 호환되지 않습니다. 확장의 \"{1}\" 버전을 다운로드하여 설치하세요.", + "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", "extension.installation.failed": "C/C++ 확장을 설치하지 못했습니다. C/C++ 언어 기능이 제대로 작동하려면 확장을 복구하거나 다시 설치해야 합니다.", "remove.extension": "복구 시도", "jason.files.missing": "C/C++ 확장을 설치하지 못했습니다. C/C++ 언어 기능이 제대로 작동하려면 확장을 다시 설치해야 합니다.", diff --git a/Extension/i18n/plk/src/main.i18n.json b/Extension/i18n/plk/src/main.i18n.json index bb6e05e49f..a54c985ba0 100644 --- a/Extension/i18n/plk/src/main.i18n.json +++ b/Extension/i18n/plk/src/main.i18n.json @@ -8,7 +8,7 @@ "apline.containers.not.supported": "Kontenery Alpine nie są obsługiwane.", "download.button": "Przejdź do strony pobierania", "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", - "native.binaries.not.supported": "Ta wersja {0} rozszerzenia jest niezgodna z systemem operacyjnym. Pobierz i zainstaluj wersję rozszerzenia „{1}”.", + "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", "extension.installation.failed": "Nie można pomyślnie zainstalować rozszerzenia języka C/C++. Aby umożliwić poprawne działanie, należy naprawić lub zainstalować ponownie rozszerzenie dla funkcji języka C/C++.", "remove.extension": "Spróbuj naprawić", "jason.files.missing": "Nie można pomyślnie zainstalować rozszerzenia języka C/C++. Aby umożliwić poprawne działanie, należy zainstalować ponownie rozszerzenie dla funkcji języka C/C++.", diff --git a/Extension/i18n/plk/ui/settings.html.i18n.json b/Extension/i18n/plk/ui/settings.html.i18n.json index ad9d75b118..e5fc765f58 100644 --- a/Extension/i18n/plk/ui/settings.html.i18n.json +++ b/Extension/i18n/plk/ui/settings.html.i18n.json @@ -47,7 +47,7 @@ "windows.sdk.version": "Wersja zestawu Windows SDK", "windows.sdk.version.description": "Wersja ścieżki dyrektywy include zestawu Windows SDK, która ma być używana w systemie Windows, np. {0}.", "mac.framework.path": "Ścieżka do platformy Mac", - "mac.framework.path.description": "Lista ścieżek do użycia przez aparat IntelliSense podczas wyszukiwania dołączonych nagłówków z platform Mac. Obsługiwane tylko w przypadku konfiguracji dla systemu macOS.", + "mac.framework.path.description": "Lista ścieżek do użycia przez aparat IntelliSense podczas wyszukiwania dołączonych nagłówków z platform Mac. Obsługiwane tylko w przypadku konfiguracji dla systemu MacOS.", "one.path.per.line": "Jedna ścieżka na wiersz.", "forced.include": "Wymuszone dołączanie", "forced.include.description": "Lista plików, które powinny zostać uwzględnione przed przetworzeniem każdego innego znaku w pliku źródłowym. Pliki są uwzględniane w podanej kolejności.", diff --git a/Extension/i18n/ptb/package.i18n.json b/Extension/i18n/ptb/package.i18n.json index f01e3976e3..6c675adcff 100644 --- a/Extension/i18n/ptb/package.i18n.json +++ b/Extension/i18n/ptb/package.i18n.json @@ -23,8 +23,8 @@ "c_cpp.command.vcpkgClipboardInstallSuggested.title": "Copiar o comando de instalação vcpkg para a área de transferência", "c_cpp.command.vcpkgOnlineHelpSuggested.title": "Visite a página de ajuda do vcpkg", "c_cpp.command.generateEditorConfig.title": "Gerar o conteúdo do EditorConfig por meio das configurações de Formato do VC", - "c_cpp.command.GoToNextDirectiveInGroup.title": "Go to next preprocessor directive in conditional group", - "c_cpp.command.GoToPrevDirectiveInGroup.title": "Go to previous preprocessor directive in conditional group", + "c_cpp.command.GoToNextDirectiveInGroup.title": "Ir para a próxima diretiva de pré-processador no grupo condicional", + "c_cpp.command.GoToPrevDirectiveInGroup.title": "Ir para a diretiva de pré-processador anterior no grupo condicional", "c_cpp.configuration.formatting.description": "Configura o mecanismo de formatação", "c_cpp.configuration.formatting.clangFormat.description": "O clang-format será usado para formatar o código.", "c_cpp.configuration.formatting.vcFormat.description": "O mecanismo de formatação Visual C++ será usado para formatar o código.", diff --git a/Extension/i18n/ptb/src/main.i18n.json b/Extension/i18n/ptb/src/main.i18n.json index 2e14d58945..4713af605e 100644 --- a/Extension/i18n/ptb/src/main.i18n.json +++ b/Extension/i18n/ptb/src/main.i18n.json @@ -8,7 +8,7 @@ "apline.containers.not.supported": "Não há suporte para os contêineres do Alpine.", "download.button": "Ir para a Página de Download", "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", - "native.binaries.not.supported": "Esta versão de {0} da extensão é incompatível com seu sistema operacional. Baixe e instale a versão \"{1}\" da extensão.", + "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", "extension.installation.failed": "A extensão C/C++ não foi instalada com êxito. Será necessário reparar ou reinstalar a extensão dos recursos da linguagem C/C++ para que ela funcione corretamente.", "remove.extension": "Tentar Reparar", "jason.files.missing": "A extensão C/C++ não foi instalada com êxito. Será necessário reinstalar a extensão dos recursos da linguagem C/C++ para que ela funcione corretamente.", diff --git a/Extension/i18n/ptb/src/nativeStrings.i18n.json b/Extension/i18n/ptb/src/nativeStrings.i18n.json index a92b2dd763..3590ded6dd 100644 --- a/Extension/i18n/ptb/src/nativeStrings.i18n.json +++ b/Extension/i18n/ptb/src/nativeStrings.i18n.json @@ -208,9 +208,9 @@ "unrecognized_language_standard_version": "A consulta do compilador retornou uma versão do padrão de linguagem não reconhecida. Nesse caso, será usada a última versão com suporte.", "intellisense_process_crash_detected": "Falha detectada no processo do IntelliSense.", "return_values_label": "Valores retornados:", - "nvcc_compiler_not_found": "Unable to locate nvcc compiler: {0}", - "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}" + "nvcc_compiler_not_found": "Não é possível localizar o compilador NVCC: {0}", + "nvcc_host_compiler_not_found": "Não é possível localizar o compilador de host NVCC: {0}", + "invoking_nvcc": "Invocando NVCC com a linha de comando: {0}", + "nvcc_host_compile_command_not_found": "Não é possível localizar o comando de compilação de host na saída de NVCC.", + "unable_to_locate_forced_include": "Não é possível localizar a inclusão forçada: {0}" } \ No newline at end of file diff --git a/Extension/i18n/rus/package.i18n.json b/Extension/i18n/rus/package.i18n.json index 858c71d307..19cb209f30 100644 --- a/Extension/i18n/rus/package.i18n.json +++ b/Extension/i18n/rus/package.i18n.json @@ -23,8 +23,8 @@ "c_cpp.command.vcpkgClipboardInstallSuggested.title": "Копировать команду vcpkg install в буфер обмена", "c_cpp.command.vcpkgOnlineHelpSuggested.title": "Посетите страницу справки по vcpkg", "c_cpp.command.generateEditorConfig.title": "Создание содержимого EditorConfig из параметров формата VC", - "c_cpp.command.GoToNextDirectiveInGroup.title": "Go to next preprocessor directive in conditional group", - "c_cpp.command.GoToPrevDirectiveInGroup.title": "Go to previous preprocessor directive in conditional group", + "c_cpp.command.GoToNextDirectiveInGroup.title": "Перейти к следующей директиве препроцессора в условной группе", + "c_cpp.command.GoToPrevDirectiveInGroup.title": "Перейти к предыдущей директиве препроцессора в условной группе", "c_cpp.configuration.formatting.description": "Настраивает подсистему форматирования.", "c_cpp.configuration.formatting.clangFormat.description": "Для форматирования кода будет использоваться clang-format.", "c_cpp.configuration.formatting.vcFormat.description": "Для форматирования кода будет использоваться подсистема форматирования Visual C++.", diff --git a/Extension/i18n/rus/src/main.i18n.json b/Extension/i18n/rus/src/main.i18n.json index bbf80f969d..22fdfe2e8e 100644 --- a/Extension/i18n/rus/src/main.i18n.json +++ b/Extension/i18n/rus/src/main.i18n.json @@ -8,7 +8,7 @@ "apline.containers.not.supported": "Контейнеры Alpine не поддерживаются.", "download.button": "Перейти к странице скачивания", "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", - "native.binaries.not.supported": "Версия расширения для {0} не совместима с вашей ОС. Скачайте и установите версию расширения \"{1}\".", + "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", "extension.installation.failed": "Установить расширение C/C++ не удалось. Исправьте или переустановите расширение функций языка C/C++ для корректной работы.", "remove.extension": "Попытка исправления", "jason.files.missing": "Установить расширение C/C++ не удалось. Переустановите расширение функций языка C/C++ для корректной работы.", diff --git a/Extension/i18n/rus/src/nativeStrings.i18n.json b/Extension/i18n/rus/src/nativeStrings.i18n.json index 0169be5ef2..ebe23a6848 100644 --- a/Extension/i18n/rus/src/nativeStrings.i18n.json +++ b/Extension/i18n/rus/src/nativeStrings.i18n.json @@ -208,9 +208,9 @@ "unrecognized_language_standard_version": "Проба компилятора возвратила нераспознанную версию стандарта языка. Вместо этого будет использоваться последняя поддерживаемая версия.", "intellisense_process_crash_detected": "Обнаружен сбой процесса IntelliSense.", "return_values_label": "Возвращаемые значения:", - "nvcc_compiler_not_found": "Unable to locate nvcc compiler: {0}", - "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}" + "nvcc_compiler_not_found": "Не удалось найти компилятор nvcc: {0}", + "nvcc_host_compiler_not_found": "Не удалось найти компилятор узла nvcc: {0}", + "invoking_nvcc": "Идет вызов nvcc с помощью командной строки: {0}", + "nvcc_host_compile_command_not_found": "Не удалось найти команду компиляции узла в выходных данных nvcc.", + "unable_to_locate_forced_include": "Не удалось найти принудительное включение: {0}" } \ No newline at end of file diff --git a/Extension/i18n/trk/package.i18n.json b/Extension/i18n/trk/package.i18n.json index e5fb9db885..c5c68e7fc1 100644 --- a/Extension/i18n/trk/package.i18n.json +++ b/Extension/i18n/trk/package.i18n.json @@ -23,8 +23,8 @@ "c_cpp.command.vcpkgClipboardInstallSuggested.title": "vcpkg yükleme komutunu panoya kopyalayın", "c_cpp.command.vcpkgOnlineHelpSuggested.title": "vcpkg yardım sayfasını ziyaret edin", "c_cpp.command.generateEditorConfig.title": "VC Biçimi ayarlarından EditorConfig içerikleri oluştur", - "c_cpp.command.GoToNextDirectiveInGroup.title": "Go to next preprocessor directive in conditional group", - "c_cpp.command.GoToPrevDirectiveInGroup.title": "Go to previous preprocessor directive in conditional group", + "c_cpp.command.GoToNextDirectiveInGroup.title": "Koşullu grupta sonraki ön işlemci yönergesine git", + "c_cpp.command.GoToPrevDirectiveInGroup.title": "Koşullu grupta önceki ön işlemci yönergesine git", "c_cpp.configuration.formatting.description": "Biçimlendirme altyapısını yapılandırır", "c_cpp.configuration.formatting.clangFormat.description": "Kodu biçimlendirmek için clang-format kullanılacak.", "c_cpp.configuration.formatting.vcFormat.description": "Kodu biçimlendirmek için Visual C++ biçimlendirme altyapısı kullanılacak.", diff --git a/Extension/i18n/trk/src/main.i18n.json b/Extension/i18n/trk/src/main.i18n.json index 3ad5324ca2..6c31b23a50 100644 --- a/Extension/i18n/trk/src/main.i18n.json +++ b/Extension/i18n/trk/src/main.i18n.json @@ -8,7 +8,7 @@ "apline.containers.not.supported": "Alpine kapsayıcıları desteklenmiyor.", "download.button": "İndirmeler Sayfasına Git", "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", - "native.binaries.not.supported": "Uzantının bu {0} sürümü, işletim sisteminizle uyumsuz. Lütfen uzantının \"{1}\" sürümünü indirip yükleyin.", + "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", "extension.installation.failed": "C/C++ uzantısı başarıyla yüklenemedi. C/C++ dil özelliklerinin düzgün çalışması için uzantıyı onarmanız veya yeniden yüklemeniz gerekir.", "remove.extension": "Onarmayı Dene", "jason.files.missing": "C/C++ uzantısı başarıyla yüklenemedi. C/C++ dil özelliklerinin düzgün çalışabilmesi için uzantıyı yeniden yüklemeniz gerekir.", diff --git a/Extension/i18n/trk/src/nativeStrings.i18n.json b/Extension/i18n/trk/src/nativeStrings.i18n.json index cbc3447326..ceb59046ca 100644 --- a/Extension/i18n/trk/src/nativeStrings.i18n.json +++ b/Extension/i18n/trk/src/nativeStrings.i18n.json @@ -208,9 +208,9 @@ "unrecognized_language_standard_version": "Derleyici sorgusu, tanınmayan bir dil standardı sürümü döndürdü. Bunun yerine desteklenen en güncel sürüm kullanılacak.", "intellisense_process_crash_detected": "IntelliSense işlem kilitlenmesi saptandı.", "return_values_label": "Dönüş değerleri:", - "nvcc_compiler_not_found": "Unable to locate nvcc compiler: {0}", - "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}" + "nvcc_compiler_not_found": "Nvcc derleyicisi bulunamıyor: {0}", + "nvcc_host_compiler_not_found": "Nvcc konak derleyicisi bulunamıyor: {0}", + "invoking_nvcc": "Komut satırı ile nvcc çağrılıyor: {0}", + "nvcc_host_compile_command_not_found": "Nvcc çıkışındaki konak derleme komutu bulunamıyor.", + "unable_to_locate_forced_include": "Zorlamalı ekleme bulunamıyor: {0}" } \ No newline at end of file From 288978b2516e4304cc371c4c63969989bf6e29dd Mon Sep 17 00:00:00 2001 From: Michelle Matias <38734287+michelleangela@users.noreply.github.com> Date: Fri, 9 Apr 2021 14:29:00 -0700 Subject: [PATCH 10/48] Add feature request template, update other issues templates (#7330) --- .github/ISSUE_TEMPLATE/debugger.md | 19 +++---- .github/ISSUE_TEMPLATE/feature-request.md | 17 +++++++ .github/ISSUE_TEMPLATE/general-extension.md | 27 +++++----- .github/ISSUE_TEMPLATE/language-service.md | 55 ++++++++++++--------- 4 files changed, 73 insertions(+), 45 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/feature-request.md diff --git a/.github/ISSUE_TEMPLATE/debugger.md b/.github/ISSUE_TEMPLATE/debugger.md index 9c4c36f7df..4f2f8acf8c 100644 --- a/.github/ISSUE_TEMPLATE/debugger.md +++ b/.github/ISSUE_TEMPLATE/debugger.md @@ -1,6 +1,6 @@ --- -name: Debugger -about: Issues pertaining to debugging such as call stack, breakpoints, watch window, +name: Bug Report - Debugger +about: Create a bug report for debugging such as call stack, breakpoints, watch window, launching or attaching to a debuggee. title: '' labels: '' @@ -8,16 +8,15 @@ assignees: '' --- -Type: Debugger - +Bug type: Debugger - + **Describe the bug** - OS and Version: - VS Code Version: @@ -25,6 +24,7 @@ Type: Debugger - Other extensions you installed (and if the issue persists after disabling them): - A clear and concise description of what the bug is. + **To Reproduce** *Please include a code sample and `launch.json` configuration.* Steps to reproduce the behavior: @@ -33,6 +33,7 @@ Steps to reproduce the behavior: 3. Scroll down to '....' 4. See error + **Additional context** *If applicable, please include logging by adding "logging": { "engineLogging": true, "trace": true, "traceResponse": true } in your `launch.json`* Add any other context about the problem here including log or error messages in your Debug Console or Output windows. diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md new file mode 100644 index 0000000000..c8dde37698 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request.md @@ -0,0 +1,17 @@ +--- +name: Feature Request +about: Suggest an idea for this extension. +title: '' +labels: '' +assignees: '' + +--- + +Type: Feature Request + + + + diff --git a/.github/ISSUE_TEMPLATE/general-extension.md b/.github/ISSUE_TEMPLATE/general-extension.md index 7726b24b25..d702495ce4 100644 --- a/.github/ISSUE_TEMPLATE/general-extension.md +++ b/.github/ISSUE_TEMPLATE/general-extension.md @@ -1,22 +1,21 @@ --- -name: General Extension -about: Issues pertaining to downloading, installing, or building the extension. +name: Bug Report - General Extension +about: Create a bug report for downloading, installing, or building the extension. title: '' labels: '' assignees: '' --- -Type: General - +Bug type: General - + **Describe the bug** - OS and Version: - VS Code Version: @@ -24,6 +23,7 @@ Type: General - Other extensions you installed (and if the issue persists after disabling them): - A clear and concise description of what the bug is. + **To Reproduce** *Please include code sample and `task.json` files.* Steps to reproduce the behavior: @@ -32,11 +32,14 @@ Steps to reproduce the behavior: 3. Scroll down to '....' 4. See error + **Expected behavior** -A clear and concise description of what you expected to happen. + + **Screenshots** -If applicable, add screenshots to help explain your problem. + + **Additional context** -Add any other context about the problem here including log messages from the Output window. + diff --git a/.github/ISSUE_TEMPLATE/language-service.md b/.github/ISSUE_TEMPLATE/language-service.md index 553c37eaf5..c7b80a6c85 100644 --- a/.github/ISSUE_TEMPLATE/language-service.md +++ b/.github/ISSUE_TEMPLATE/language-service.md @@ -1,58 +1,65 @@ --- -name: Language Service -about: 'Issues pertaining to IntelliSense, autocomplete, code editing, etc. ' +name: Bug Report - Language Service +about: 'Create a bug report for IntelliSense, autocomplete, code editing, code navigation, etc.' title: '' labels: '' assignees: '' --- -**Type: LanguageService** - +Bug type: Language Service - + **Describe the bug** - OS and Version: - VS Code Version: - C/C++ Extension Version: - Other extensions you installed (and if the issue persists after disabling them): -- Does this issue involve using SSH remote to run the extension on a remote machine?: +- If using SSH remote, specify OS of remote machine: - A clear and concise description of what the bug is, including information about the workspace (i.e. is the workspace a single project or multiple projects, size of the project, etc). + **Steps to reproduce** - - + 1. Go to '...' 2. Click on '....' 3. Scroll down to '....' 4. See error + **Expected behavior** - -
- Logs - -``` -Insert logs here. -``` -
+**Code sample and logs** + +- Code sample + +- Configurations in `c_cpp_properties.json` + +- Logs from running `C/C++: Log Diagnostics` from the VS Code command palette + +- Logs from [the language server logging](https://code.visualstudio.com/docs/cpp/enable-logging-cpp#_enable-logging-for-the-language-server) + **Screenshots** + **Additional context** From 957b812f780ac40b9bd0bccfad0768387cd7b18d Mon Sep 17 00:00:00 2001 From: csigs Date: Mon, 12 Apr 2021 10:15:08 -0700 Subject: [PATCH 11/48] Localization - Translated Strings (#7338) Co-authored-by: DevDiv Build Lab - Dev14 --- Extension/i18n/chs/src/main.i18n.json | 2 +- Extension/i18n/cht/src/main.i18n.json | 2 +- Extension/i18n/csy/src/main.i18n.json | 2 +- Extension/i18n/deu/src/main.i18n.json | 2 +- Extension/i18n/esn/src/main.i18n.json | 2 +- Extension/i18n/fra/package.i18n.json | 4 ++-- Extension/i18n/fra/src/main.i18n.json | 2 +- Extension/i18n/fra/src/nativeStrings.i18n.json | 10 +++++----- Extension/i18n/ita/src/main.i18n.json | 2 +- Extension/i18n/jpn/src/main.i18n.json | 2 +- Extension/i18n/kor/src/main.i18n.json | 2 +- Extension/i18n/plk/src/main.i18n.json | 2 +- Extension/i18n/ptb/src/main.i18n.json | 2 +- Extension/i18n/rus/src/main.i18n.json | 2 +- Extension/i18n/trk/src/main.i18n.json | 2 +- 15 files changed, 20 insertions(+), 20 deletions(-) diff --git a/Extension/i18n/chs/src/main.i18n.json b/Extension/i18n/chs/src/main.i18n.json index 46c70e68e9..7b68486013 100644 --- a/Extension/i18n/chs/src/main.i18n.json +++ b/Extension/i18n/chs/src/main.i18n.json @@ -7,7 +7,7 @@ "architecture.not.supported": "体系结构 {0} 不受支持。", "apline.containers.not.supported": "Alpine 容器不受支持。", "download.button": "转到下载页", - "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", + "native.binaries.mismatch.osx": "The macOS Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", "extension.installation.failed": "C/C++ 扩展安装失败。为使函数正常工作,需要修复或重新安装 C/C++ 语言功能的扩展。", "remove.extension": "尝试修复", diff --git a/Extension/i18n/cht/src/main.i18n.json b/Extension/i18n/cht/src/main.i18n.json index 19fb978431..b9a6c84347 100644 --- a/Extension/i18n/cht/src/main.i18n.json +++ b/Extension/i18n/cht/src/main.i18n.json @@ -7,7 +7,7 @@ "architecture.not.supported": "不支援架構 {0}。 ", "apline.containers.not.supported": "不支援 Alpine 容器。", "download.button": "前往 [下載\ 頁面", - "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", + "native.binaries.mismatch.osx": "The macOS Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", "extension.installation.failed": "無法成功安裝 C/C++ 延伸模組。您必須修復或重新安裝 C/C++ 語言功能的延伸模組,才可正常運作。", "remove.extension": "嘗試修復", diff --git a/Extension/i18n/csy/src/main.i18n.json b/Extension/i18n/csy/src/main.i18n.json index e792fa38cc..ad491f1d15 100644 --- a/Extension/i18n/csy/src/main.i18n.json +++ b/Extension/i18n/csy/src/main.i18n.json @@ -7,7 +7,7 @@ "architecture.not.supported": "Architektura {0} se nepodporuje. ", "apline.containers.not.supported": "Kontejnery Alpine se nepodporují.", "download.button": "Přejít na stránku stahování", - "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", + "native.binaries.mismatch.osx": "The macOS Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", "extension.installation.failed": "Nepovedlo se úspěšně nainstalovat rozšíření jazyka C/C++. Aby rozšíření pro funkce jazyka C/C++ fungovalo správně, bude nutné ho opravit nebo přeinstalovat.", "remove.extension": "Pokusit se o opravu", diff --git a/Extension/i18n/deu/src/main.i18n.json b/Extension/i18n/deu/src/main.i18n.json index 0bb0938711..161ea8268b 100644 --- a/Extension/i18n/deu/src/main.i18n.json +++ b/Extension/i18n/deu/src/main.i18n.json @@ -7,7 +7,7 @@ "architecture.not.supported": "Die Architektur \"{0}\" wird nicht unterstützt. ", "apline.containers.not.supported": "Alpine-Container werden nicht unterstützt.", "download.button": "Gehe zu Downloadseite", - "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", + "native.binaries.mismatch.osx": "The macOS Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", "extension.installation.failed": "Die C/C++-Erweiterung konnte nicht erfolgreich installiert werden. Sie müssen die Erweiterung für C/C++-Sprachfeatures reparieren oder neu installieren, damit die Erweiterung ordnungsgemäß funktioniert.", "remove.extension": "Reparaturversuch", diff --git a/Extension/i18n/esn/src/main.i18n.json b/Extension/i18n/esn/src/main.i18n.json index f45f3ad871..d4ba894a09 100644 --- a/Extension/i18n/esn/src/main.i18n.json +++ b/Extension/i18n/esn/src/main.i18n.json @@ -7,7 +7,7 @@ "architecture.not.supported": "La arquitectura {0} no se admite. ", "apline.containers.not.supported": "Los contenedores de Alpine no se admiten.", "download.button": "Ir a la página de descarga", - "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", + "native.binaries.mismatch.osx": "The macOS Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", "extension.installation.failed": "Error de instalación de la extensión de C/C++. Tendrá que reparar o reinstalar la extensión para que las características del lenguaje C/C++ funcionen correctamente.", "remove.extension": "Intentar reparar", diff --git a/Extension/i18n/fra/package.i18n.json b/Extension/i18n/fra/package.i18n.json index 14a6fe9855..d6f35b4516 100644 --- a/Extension/i18n/fra/package.i18n.json +++ b/Extension/i18n/fra/package.i18n.json @@ -23,8 +23,8 @@ "c_cpp.command.vcpkgClipboardInstallSuggested.title": "Copier la commande vcpkg install dans le Presse-papiers", "c_cpp.command.vcpkgOnlineHelpSuggested.title": "Visiter la page d'aide de vcpkg", "c_cpp.command.generateEditorConfig.title": "Générer le contenu d'EditorConfig à partir des paramètres de format VC", - "c_cpp.command.GoToNextDirectiveInGroup.title": "Go to next preprocessor directive in conditional group", - "c_cpp.command.GoToPrevDirectiveInGroup.title": "Go to previous preprocessor directive in conditional group", + "c_cpp.command.GoToNextDirectiveInGroup.title": "Accéder à la directive de préprocesseur suivante dans le groupe conditionnel", + "c_cpp.command.GoToPrevDirectiveInGroup.title": "Accéder à la directive de préprocesseur précédente dans le groupe conditionnel", "c_cpp.configuration.formatting.description": "Configure le moteur de mise en forme", "c_cpp.configuration.formatting.clangFormat.description": "clang-format est utilisé pour la mise en forme du code.", "c_cpp.configuration.formatting.vcFormat.description": "Le moteur de mise en forme de Visual C++ est utilisé pour la mise en forme du code.", diff --git a/Extension/i18n/fra/src/main.i18n.json b/Extension/i18n/fra/src/main.i18n.json index da0b26f391..60ad6c6b33 100644 --- a/Extension/i18n/fra/src/main.i18n.json +++ b/Extension/i18n/fra/src/main.i18n.json @@ -7,7 +7,7 @@ "architecture.not.supported": "L'architecture {0} n'est pas prise en charge. ", "apline.containers.not.supported": "Les conteneurs Alpine ne sont pas pris en charge.", "download.button": "Accéder à la page de téléchargement", - "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", + "native.binaries.mismatch.osx": "The macOS Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", "extension.installation.failed": "Échec de l'installation de l'extension C/C++. Vous devez réparer ou réinstaller l'extension pour que les fonctionnalités du langage C/C++ fonctionnent correctement.", "remove.extension": "Tentative de réparation", diff --git a/Extension/i18n/fra/src/nativeStrings.i18n.json b/Extension/i18n/fra/src/nativeStrings.i18n.json index 3a0720ce07..bd343b15b2 100644 --- a/Extension/i18n/fra/src/nativeStrings.i18n.json +++ b/Extension/i18n/fra/src/nativeStrings.i18n.json @@ -208,9 +208,9 @@ "unrecognized_language_standard_version": "L'interrogation du compilateur a retourné une version de norme de langage non reconnue. La toute dernière version prise en charge va être utilisée à la place.", "intellisense_process_crash_detected": "Détection d'un plantage du processus IntelliSense.", "return_values_label": "Valeurs de retour :", - "nvcc_compiler_not_found": "Unable to locate nvcc compiler: {0}", - "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}" + "nvcc_compiler_not_found": "Impossible de localiser le compilateur nvcc : {0}", + "nvcc_host_compiler_not_found": "Impossible de localiser le compilateur hôte pour nvcc : {0}", + "invoking_nvcc": "Appel de nvcc avec la ligne de commande : {0}", + "nvcc_host_compile_command_not_found": "La commande de compilation hôte est introuvable dans la sortie de nvcc.", + "unable_to_locate_forced_include": "Impossible de localiser le fichier include forcé : {0}" } \ No newline at end of file diff --git a/Extension/i18n/ita/src/main.i18n.json b/Extension/i18n/ita/src/main.i18n.json index 1945a24d77..29c7412b27 100644 --- a/Extension/i18n/ita/src/main.i18n.json +++ b/Extension/i18n/ita/src/main.i18n.json @@ -7,7 +7,7 @@ "architecture.not.supported": "L'architettura {0} non è supportata. ", "apline.containers.not.supported": "I contenitori Alpine non sono supportati.", "download.button": "Vai alla pagina di download", - "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", + "native.binaries.mismatch.osx": "The macOS Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", "extension.installation.failed": "Non è stato possibile installare l'estensione C/C++. Per funzionare correttamente, è necessario riparare o reinstallare l'estensione per le funzionalità del linguaggio C/C++.", "remove.extension": "Tentativo di riparazione", diff --git a/Extension/i18n/jpn/src/main.i18n.json b/Extension/i18n/jpn/src/main.i18n.json index f6c9f5811e..f4c0ce2372 100644 --- a/Extension/i18n/jpn/src/main.i18n.json +++ b/Extension/i18n/jpn/src/main.i18n.json @@ -7,7 +7,7 @@ "architecture.not.supported": "アーキテクチャ {0} はサポートされていません。", "apline.containers.not.supported": "Alpine コンテナーはサポートされていません。", "download.button": "ダウンロード ページへ移動", - "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", + "native.binaries.mismatch.osx": "The macOS Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", "extension.installation.failed": "C/C++ の拡張機能を正常にインストールできませんでした。正常に機能させるには、C/C++ 言語機能の拡張機能を修復または再インストールする必要があります。", "remove.extension": "修復の試行", diff --git a/Extension/i18n/kor/src/main.i18n.json b/Extension/i18n/kor/src/main.i18n.json index 9aa8e45582..312b799ded 100644 --- a/Extension/i18n/kor/src/main.i18n.json +++ b/Extension/i18n/kor/src/main.i18n.json @@ -7,7 +7,7 @@ "architecture.not.supported": "{0} 아키텍처는 지원되지 않습니다. ", "apline.containers.not.supported": "Alpine 컨테이너는 지원되지 않습니다.", "download.button": "다운로드 페이지로 이동", - "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", + "native.binaries.mismatch.osx": "The macOS Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", "extension.installation.failed": "C/C++ 확장을 설치하지 못했습니다. C/C++ 언어 기능이 제대로 작동하려면 확장을 복구하거나 다시 설치해야 합니다.", "remove.extension": "복구 시도", diff --git a/Extension/i18n/plk/src/main.i18n.json b/Extension/i18n/plk/src/main.i18n.json index a54c985ba0..8688ee6db8 100644 --- a/Extension/i18n/plk/src/main.i18n.json +++ b/Extension/i18n/plk/src/main.i18n.json @@ -7,7 +7,7 @@ "architecture.not.supported": "Architektura {0} nie jest obsługiwana.", "apline.containers.not.supported": "Kontenery Alpine nie są obsługiwane.", "download.button": "Przejdź do strony pobierania", - "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", + "native.binaries.mismatch.osx": "The macOS Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", "extension.installation.failed": "Nie można pomyślnie zainstalować rozszerzenia języka C/C++. Aby umożliwić poprawne działanie, należy naprawić lub zainstalować ponownie rozszerzenie dla funkcji języka C/C++.", "remove.extension": "Spróbuj naprawić", diff --git a/Extension/i18n/ptb/src/main.i18n.json b/Extension/i18n/ptb/src/main.i18n.json index 4713af605e..411b81b57b 100644 --- a/Extension/i18n/ptb/src/main.i18n.json +++ b/Extension/i18n/ptb/src/main.i18n.json @@ -7,7 +7,7 @@ "architecture.not.supported": "Não há suporte para a arquitetura {0}. ", "apline.containers.not.supported": "Não há suporte para os contêineres do Alpine.", "download.button": "Ir para a Página de Download", - "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", + "native.binaries.mismatch.osx": "The macOS Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", "extension.installation.failed": "A extensão C/C++ não foi instalada com êxito. Será necessário reparar ou reinstalar a extensão dos recursos da linguagem C/C++ para que ela funcione corretamente.", "remove.extension": "Tentar Reparar", diff --git a/Extension/i18n/rus/src/main.i18n.json b/Extension/i18n/rus/src/main.i18n.json index 22fdfe2e8e..0126ae04c7 100644 --- a/Extension/i18n/rus/src/main.i18n.json +++ b/Extension/i18n/rus/src/main.i18n.json @@ -7,7 +7,7 @@ "architecture.not.supported": "Архитектура {0} не поддерживается. ", "apline.containers.not.supported": "Контейнеры Alpine не поддерживаются.", "download.button": "Перейти к странице скачивания", - "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", + "native.binaries.mismatch.osx": "The macOS Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", "extension.installation.failed": "Установить расширение C/C++ не удалось. Исправьте или переустановите расширение функций языка C/C++ для корректной работы.", "remove.extension": "Попытка исправления", diff --git a/Extension/i18n/trk/src/main.i18n.json b/Extension/i18n/trk/src/main.i18n.json index 6c31b23a50..a971fe9e07 100644 --- a/Extension/i18n/trk/src/main.i18n.json +++ b/Extension/i18n/trk/src/main.i18n.json @@ -7,7 +7,7 @@ "architecture.not.supported": "{0} mimarisi desteklemiyor.", "apline.containers.not.supported": "Alpine kapsayıcıları desteklenmiyor.", "download.button": "İndirmeler Sayfasına Git", - "native.binaries.mismatch.osx": "This Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", + "native.binaries.mismatch.osx": "The macOS Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", "extension.installation.failed": "C/C++ uzantısı başarıyla yüklenemedi. C/C++ dil özelliklerinin düzgün çalışması için uzantıyı onarmanız veya yeniden yüklemeniz gerekir.", "remove.extension": "Onarmayı Dene", From bfab754869922bfcf8a4f17cf1a3afff6cf422da Mon Sep 17 00:00:00 2001 From: Andrew Wang Date: Mon, 12 Apr 2021 11:16:17 -0700 Subject: [PATCH 12/48] Update CODE_OF_CONDUCT.md (#7340) Update page to match https://github.com/microsoft/repo-templates/blob/main/shared/CODE_OF_CONDUCT.md --- CODE_OF_CONDUCT.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 4d3efb86d4..6257f2e76f 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,3 +1,9 @@ -## Microsoft Open Source Code of Conduct +# Microsoft Open Source Code of Conduct -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact opencode@microsoft.com with any additional questions or comments. +This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). + +Resources: + +- [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) +- [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) +- Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns \ No newline at end of file From 7ed461992e3287c39432d5312ba41db650d4534a Mon Sep 17 00:00:00 2001 From: Michelle Matias <38734287+michelleangela@users.noreply.github.com> Date: Mon, 12 Apr 2021 22:29:29 -0700 Subject: [PATCH 13/48] update fwlinks and change log (#7348) --- Extension/CHANGELOG.md | 66 ++++++++++++++---------------------------- Extension/package.json | 61 +++++++++++++++++++++++++++++--------- 2 files changed, 70 insertions(+), 57 deletions(-) diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index 809b519dcf..84eb0688e8 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -1,70 +1,48 @@ # C/C++ for Visual Studio Code Change Log -## Version 1.3.0-insiders5: April 8, 2021 -### Bug Fixes -* Display integer values for char and unsigned char on hover instead of character symbols. [#1552](https://github.com/microsoft/vscode-cpptools/issues/1552) -* Fix a crash (and other bugs) caused by resolving symlinks when processing recursive includes. [#7306](https://github.com/microsoft/vscode-cpptools/issues/7306) -* Fix bug preventing successful validation and receipt of browse configurations from custom configuration providers. [PR# 7131](https://github.com/microsoft/vscode-cpptools/pull/7313) -* Fix a potential crash on shutdown and when editing at the end of a document. - -## Version 1.3.0-insiders4: April 6, 2021 +## Version 1.3.0: April 13, 2021 ### New Features +* Add language service support for CUDA. +* Add highlighting of matching conditional preprocessor statements. [#2565](https://github.com/microsoft/vscode-cpptools/issues/2565) +* Add commands for navigating to matching preprocessor directives in conditional groups. [#4779](https://github.com/microsoft/vscode-cpptools/issues/4779) * Add native language service binaries for ARM64 Mac. [#6595](https://github.com/microsoft/vscode-cpptools/issues/6595) ### Enhancements +* Add parentheses to function calls when `C_Cpp.autocompleteAddParentheses` is `true`. [#882](https://github.com/microsoft/vscode-cpptools/issues/882) +* Add @retval support to the simplified view of doc comments. [#6816](https://github.com/microsoft/vscode-cpptools/issues/6816) * Add auto-closing of include completion brackets. [#7054](https://github.com/microsoft/vscode-cpptools/issues/7054) -* Add a `C_Cpp.files.exclude` setting, which is identical to `files.exclude` except items aren't excluded from the Explorer view. [PR #7285](https://github.com/microsoft/vscode-cpptools/pull/7285) - -### Bug Fixes -* Fix directory iteration to check files.exclude and symlinks and use less memory. [#3123](https://github.com/microsoft/vscode-cpptools/issues/3123), [#4206](https://github.com/microsoft/vscode-cpptools/issues/4206), [#6864](https://github.com/microsoft/vscode-cpptools/issues/6864) -* Fix bug with placement new on Windows with gcc mode. [#6246](https://github.com/microsoft/vscode-cpptools/issues/6246) -* Fix `GoToNextDirectiveInGroup` command for multiroot. [#7283](https://github.com/microsoft/vscode-cpptools/issues/7283) -* Fix field requirements for custom configurations. [PR #7295](https://github.com/microsoft/vscode-cpptools/pull/7295) -* Fix integrity hash checking of downloaded packages for the extension. [PR #7300](https://github.com/microsoft/vscode-cpptools/pull/7300) - -## Version 1.3.0-insiders3: April 1, 2021 -### New Features -* Add commands for navigating to matching preprocessor directives in conditional groups. [#7256](https://github.com/microsoft/vscode-cpptools/pull/7256) - -### Bug Fixes -* Fix detection of bitness for compilers targeting esp32. [#7034](https://github.com/microsoft/vscode-cpptools/issues/7034) -* Fix comment continuations. [PR #7238](https://github.com/microsoft/vscode-cpptools/pull/7238) -* Fix bug when `${workspaceFolder}` is used in `compileCommands`. [#7241](https://github.com/microsoft/vscode-cpptools/issues/7241) - * Aleksa Pavlovic (@aleksa2808) [PR #7242](https://github.com/microsoft/vscode-cpptools/pull/7242) - -## Version 1.3.0-insiders2: March 25, 2021 -### New Features -* Add highlighting of matching conditional preprocessor statements. [#2565](https://github.com/microsoft/vscode-cpptools/issues/2565) - -### Bug Fixes -* Fix a spurious asterisk being inserted on a new line if the previous line starts with an asterisk. [#5733](https://github.com/microsoft/vscode-cpptools/issues/5733) -* Fix random crashes of cpptools-srv during shutdown. [#7161](https://github.com/microsoft/vscode-cpptools/issues/7161) -* Change `C_Cpp.autocompleteAddParentheses` to be false by default. [#7199](https://github.com/microsoft/vscode-cpptools/issues/7199) -* Fix auto add parentheses incorrectly occurring with template methods. [#7203](https://github.com/microsoft/vscode-cpptools/issues/7203) -* Fix auto adding parentheses incorrectly occurring with type names. [#7209](https://github.com/microsoft/vscode-cpptools/issues/7209) -* Fix a bug with relative "." paths in compile commands. [#7221](https://github.com/microsoft/vscode-cpptools/issues/7221) -* Fix configuration issues with Unreal Engine projects. [#7222](https://github.com/microsoft/vscode-cpptools/issues/7222) - -## Version 1.3.0-insiders: March 18, 2021 -### Enhancements -* Add parentheses to function calls with autocomplete. [#882](https://github.com/microsoft/vscode-cpptools/issues/882) * Add support for nodeAddonIncludes with Yarn PnP. * Mestery (@Mesterry) [PR #7123](https://github.com/microsoft/vscode-cpptools/pull/7123) +* Add a `C_Cpp.files.exclude` setting, which is identical to `files.exclude` except items aren't excluded from the Explorer view. [PR #7285](https://github.com/microsoft/vscode-cpptools/pull/7285) ### Bug Fixes +* Display integer values for char and unsigned char on hover instead of character symbols. [#1552](https://github.com/microsoft/vscode-cpptools/issues/1552) +* Fix directory iteration to check files.exclude and symlinks and use less memory. [#3123](https://github.com/microsoft/vscode-cpptools/issues/3123), [#4206](https://github.com/microsoft/vscode-cpptools/issues/4206), [#6864](https://github.com/microsoft/vscode-cpptools/issues/6864) * Fix an issue with stale IntelliSense due to moving or renaming header files. [#3849](https://github.com/microsoft/vscode-cpptools/issues/3849) * Fix go to definition on large macros. [#4306](https://github.com/microsoft/vscode-cpptools/issues/4306) +* Fix a spurious asterisk being inserted on a new line if the previous line starts with an asterisk. [#5733](https://github.com/microsoft/vscode-cpptools/issues/5733) +* Fix bug with placement new on Windows with gcc mode. [#6246](https://github.com/microsoft/vscode-cpptools/issues/6246) * Fix size_t and placement new squiggles with clang on Windows. [#6573](https://github.com/microsoft/vscode-cpptools/issues/6573), [#7106](https://github.com/microsoft/vscode-cpptools/issues/7016) * Fix an incorrect IntelliSense error squiggle when assigning to std::variant in clang mode. [#6623](https://github.com/microsoft/vscode-cpptools/issues/6623) * Fix incorrect squiggle with range-v3 library. [#6639](https://github.com/microsoft/vscode-cpptools/issues/6639) * Fix incorrect squiggle with auto parameters. [#6714](https://github.com/microsoft/vscode-cpptools/issues/6714) -* Add @retval support to the simplified view of doc comments. [#6816](https://github.com/microsoft/vscode-cpptools/issues/6816) * Fix (reimplement) nested document symbols. [#6830](https://github.com/microsoft/vscode-cpptools/issues/6830), [#7023](https://github.com/microsoft/vscode-cpptools/issues/7023), [#7024](https://github.com/microsoft/vscode-cpptools/issues/7024) +* Fix detection of bitness for compilers targeting esp32. [#7034](https://github.com/microsoft/vscode-cpptools/issues/7034) * Fix include completion not working after creating a new header with a non-standard extension until a reload is done. [#6987](https://github.com/microsoft/vscode-cpptools/issues/6987), [#7061](https://github.com/microsoft/vscode-cpptools/issues/7061) * Fix endless CPU/memory usage in cpptools-srv when certain templated type aliases are used. [#7085](https://github.com/microsoft/vscode-cpptools/issues/7085) * Fix "No symbols found" sometimes occurring when a document first opens. [#7103](https://github.com/microsoft/vscode-cpptools/issues/7103) * Fix vcFormat formatting after typing brackets and a newline. [#7125](https://github.com/microsoft/vscode-cpptools/issues/7125) * Fix a performance bug after formatting a document. [#7159](https://github.com/microsoft/vscode-cpptools/issues/7159) +* Fix random crashes of cpptools-srv during shutdown. [#7161](https://github.com/microsoft/vscode-cpptools/issues/7161) +* Fix a bug with relative "." paths in compile commands. [#7221](https://github.com/microsoft/vscode-cpptools/issues/7221) +* Fix configuration issues with Unreal Engine projects. [#7222](https://github.com/microsoft/vscode-cpptools/issues/7222) +* Fix bug when `${workspaceFolder}` is used in `compileCommands`. [#7241](https://github.com/microsoft/vscode-cpptools/issues/7241) + * Aleksa Pavlovic (@aleksa2808) [PR #7242](https://github.com/microsoft/vscode-cpptools/pull/7242) +* Fix field requirements for custom configurations. [PR #7295](https://github.com/microsoft/vscode-cpptools/pull/7295) +* Fix integrity hash checking of downloaded packages for the extension. [PR #7300](https://github.com/microsoft/vscode-cpptools/pull/7300) +* Fix a bug preventing successful validation and receipt of browse configurations from custom configuration providers. [PR# 7131](https://github.com/microsoft/vscode-cpptools/pull/7313) +* Fix a potential crash when editing at the end of a document. +* Fix "Configure Task" selection to show root folder names for multiroot workspace [PR #7315](https://github.com/microsoft/vscode-cpptools/pull/7315) ## Version 1.2.2: February 25, 2021 ### Bug Fixes diff --git a/Extension/package.json b/Extension/package.json index e2bc358872..4f6f882197 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -2,7 +2,7 @@ "name": "cpptools", "displayName": "C/C++", "description": "C/C++ IntelliSense, debugging, and code browsing.", - "version": "1.2.2-main", + "version": "1.3.0-main", "publisher": "ms-vscode", "icon": "LanguageCCPP_color_128x.png", "readme": "README.md", @@ -2492,7 +2492,7 @@ "runtimeDependencies": [ { "description": "C/C++ language components (Linux / x86_64)", - "url": "https://go.microsoft.com/fwlink/?linkid=2156408", + "url": "https://go.microsoft.com/fwlink/?linkid=2161011", "platforms": [ "linux" ], @@ -2503,11 +2503,11 @@ "./bin/cpptools", "./bin/cpptools-srv" ], - "integrity": "81740FC42FDFBEC9AF72EE69B6FC985841E8879DE7197D1859B339BE0418E2C2" + "integrity": "7C43AA78021C5DB8F6DE9751EC8435D2BE1137CAC861801CDFADAA4B48A42AC3" }, { "description": "C/C++ language components (Linux / armhf)", - "url": "https://go.microsoft.com/fwlink/?linkid=2156409", + "url": "https://go.microsoft.com/fwlink/?linkid=2160914", "platforms": [ "linux" ], @@ -2518,11 +2518,11 @@ "./bin/cpptools", "./bin/cpptools-srv" ], - "integrity": "E12B49A74D9E6D7D43BE7ED88E470B8871E1750392D48B0FCFEED4C7E5C523FB" + "integrity": "ED83E6E0F5784323CDF42BA1EF57CDFFBF2A81D468B08C8ECF126A2D042343F2" }, { "description": "C/C++ language components (Linux / aarch64)", - "url": "https://go.microsoft.com/fwlink/?linkid=2156407", + "url": "https://go.microsoft.com/fwlink/?linkid=2160915", "platforms": [ "linux" ], @@ -2533,23 +2533,41 @@ "./bin/cpptools", "./bin/cpptools-srv" ], - "integrity": "F84424B48790EAE110F0B4ED35D8DEE2347754C79C9A1879BCE5A93038A249A3" + "integrity": "52DD114FF466FA3542D7F98F12716E4296712986CA4908B18DCC039209B8D2CC" }, { "description": "C/C++ language components (OS X)", - "url": "https://go.microsoft.com/fwlink/?linkid=2156301", + "url": "https://go.microsoft.com/fwlink/?linkid=2161012", "platforms": [ "darwin" ], + "architectures": [ + "x64" + ], + "binaries": [ + "./bin/cpptools", + "./bin/cpptools-srv" + ], + "integrity": "53654F3D21C5D470D3C05EA48CFB7AB3CB197344049DC55AEB07374AFECD1587" + }, + { + "description": "C/C++ language components (OS X ARM64)", + "url": "https://go.microsoft.com/fwlink/?linkid=2160918", + "platforms": [ + "darwin" + ], + "architectures": [ + "arm64" + ], "binaries": [ "./bin/cpptools", "./bin/cpptools-srv" ], - "integrity": "448A17E1D7C639C99F0AE47A88705956BA03F8CFA401C0C00CD074945275B513" + "integrity": "E00370987D321E5AB58894B95F1545B52F59ED8E548BE1CBC8393F8B63562BDE" }, { "description": "C/C++ language components (Windows)", - "url": "https://go.microsoft.com/fwlink/?linkid=2156410", + "url": "https://go.microsoft.com/fwlink/?linkid=2160913", "platforms": [ "win32" ], @@ -2561,11 +2579,11 @@ "./bin/cpptools.exe", "./bin/cpptools-srv.exe" ], - "integrity": "39B7EA69F9CDC1B2B98DBFD189617640029E6C9CBDFE9BF6789B4E013D6550F4" + "integrity": "970504DB40E0B54E48075C1FBCE0F34AB674DE3F1CCAD51FFA04689513CC8013" }, { "description": "C/C++ language components (Windows ARM64)", - "url": "https://go.microsoft.com/fwlink/?linkid=2156502", + "url": "https://go.microsoft.com/fwlink/?linkid=2160916", "platforms": [ "win32" ], @@ -2576,7 +2594,7 @@ "./bin/cpptools.exe", "./bin/cpptools-srv.exe" ], - "integrity": "30B836279F948CDFD751546E679F459FE2CFD7BD578952AF1A1D8943D5C4A0F6" + "integrity": "E85CF0C80B64F940F73E158966749C0A95D122907170CACECDCBB118986D0E57" }, { "description": "ClangFormat (Linux / x86_64)", @@ -2626,11 +2644,28 @@ "platforms": [ "darwin" ], + "architectures": [ + "x64" + ], "binaries": [ "./LLVM/bin/clang-format.darwin" ], "integrity": "7AA436BA25E3404DC658A137188BEC65FF2532D1FEB314ABBBC5EBC9AAF5CCF7" }, + { + "description": "ClangFormat (OS X arm64)", + "url": "https://go.microsoft.com/fwlink/?LinkID=2160917", + "platforms": [ + "darwin" + ], + "architectures": [ + "arm64" + ], + "binaries": [ + "./LLVM/bin/clang-format.darwin" + ], + "integrity": "BF5357714856AC08A69FAD4231C9EFBE47E97497D8E227E1506FCAA1C89D11E0" + }, { "description": "ClangFormat (Windows x86)", "url": "https://go.microsoft.com/fwlink/?LinkID=2152921", From f3c8c5f3897d438d65e4a8d970f45072164f3cde Mon Sep 17 00:00:00 2001 From: csigs Date: Tue, 13 Apr 2021 10:05:13 -0700 Subject: [PATCH 14/48] Localization - Translated Strings (#7353) Co-authored-by: DevDiv Build Lab - Dev14 --- Extension/i18n/chs/package.i18n.json | 4 ++-- Extension/i18n/cht/package.i18n.json | 4 ++-- Extension/i18n/csy/package.i18n.json | 6 +++--- Extension/i18n/csy/src/main.i18n.json | 4 ++-- Extension/i18n/deu/package.i18n.json | 4 ++-- Extension/i18n/esn/package.i18n.json | 6 +++--- Extension/i18n/esn/src/main.i18n.json | 4 ++-- Extension/i18n/fra/package.i18n.json | 6 +++--- Extension/i18n/fra/src/main.i18n.json | 4 ++-- Extension/i18n/ita/package.i18n.json | 4 ++-- Extension/i18n/jpn/package.i18n.json | 4 ++-- Extension/i18n/kor/package.i18n.json | 6 +++--- Extension/i18n/kor/src/main.i18n.json | 4 ++-- Extension/i18n/plk/package.i18n.json | 4 ++-- Extension/i18n/ptb/package.i18n.json | 4 ++-- Extension/i18n/rus/package.i18n.json | 6 +++--- Extension/i18n/rus/src/main.i18n.json | 4 ++-- Extension/i18n/trk/package.i18n.json | 4 ++-- 18 files changed, 41 insertions(+), 41 deletions(-) diff --git a/Extension/i18n/chs/package.i18n.json b/Extension/i18n/chs/package.i18n.json index 5f7f4dac79..4e5a779999 100644 --- a/Extension/i18n/chs/package.i18n.json +++ b/Extension/i18n/chs/package.i18n.json @@ -171,8 +171,8 @@ "c_cpp.configuration.renameRequiresIdentifier.description": "如果为 true,则“重命名符号”将需要有效的 C/C++ 标识符。", "c_cpp.configuration.autocompleteAddParentheses.description": "如果为 true,则自动完成功能将在函数调用后自动添加 \"(\",这种情况下还可以添加 \")\",具体取决于 \"editor.autoClosingBrackets\" 设置的值。", "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", - "c_cpp.configuration.filesExcludeBoolean.description": "The glob pattern to match file paths against. Set to true or false to enable or disable the pattern.", - "c_cpp.configuration.filesExcludeWhen.description": "Additional check on the siblings of a matching file. Use $(basename) as variable for the matching file name.", + "c_cpp.configuration.filesExcludeBoolean.description": "匹配文件路径所依据的 glob 模式。设置为 true 或 false 可启用或禁用该模式。", + "c_cpp.configuration.filesExcludeWhen.description": "对匹配文件的同级文件的其他检查。使用 $(basename) 作为匹配文件名的变量。", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "如果为 true,调试程序 shell 命令替换将使用过时的反引号(`)。", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: 其他引用结果", "c_cpp.debuggers.pipeTransport.description": "如果存在,这会指示调试程序使用其他可执行文件作为管道来连接到远程计算机,此管道将在 VS Code 和已启用 MI 的调试程序后端可执行文件(如 gdb)之间中继标准输入/输入。", diff --git a/Extension/i18n/cht/package.i18n.json b/Extension/i18n/cht/package.i18n.json index 67c35cfb36..0d2847c787 100644 --- a/Extension/i18n/cht/package.i18n.json +++ b/Extension/i18n/cht/package.i18n.json @@ -171,8 +171,8 @@ "c_cpp.configuration.renameRequiresIdentifier.description": "若為 true,則「重新命名符號」需要有效的 C/C++ 識別碼。", "c_cpp.configuration.autocompleteAddParentheses.description": "若為 true,自動完成將會在函式呼叫之後自動新增 \"(\",在這種情況下也可能會新增 \")\",取決於 \"editor.autoClosingBrackets\" 設定的值。", "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", - "c_cpp.configuration.filesExcludeBoolean.description": "The glob pattern to match file paths against. Set to true or false to enable or disable the pattern.", - "c_cpp.configuration.filesExcludeWhen.description": "Additional check on the siblings of a matching file. Use $(basename) as variable for the matching file name.", + "c_cpp.configuration.filesExcludeBoolean.description": "要符合檔案路徑的 Glob 模式。設為 True 或 False 可啟用或停用模式。", + "c_cpp.configuration.filesExcludeWhen.description": "在相符檔案同層級上額外的檢查。請使用 $(basename) 作為相符檔案名稱的變數。", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "若為 true,偵錯工具殼層命令替代將會使用已淘汰的反引號 (`)。", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: 其他參考結果", "c_cpp.debuggers.pipeTransport.description": "出現時,會指示偵錯工具使用另一個可執行檔來連線至遠端電腦,該管道會在 VS Code 與 MI 啟用偵錯工具後端可執行檔之間傳送標準輸入/輸出 (例如 gdb)。", diff --git a/Extension/i18n/csy/package.i18n.json b/Extension/i18n/csy/package.i18n.json index 8bf303fcd7..3470c5680e 100644 --- a/Extension/i18n/csy/package.i18n.json +++ b/Extension/i18n/csy/package.i18n.json @@ -170,9 +170,9 @@ "c_cpp.configuration.addNodeAddonIncludePaths.description": "Pokud existují závislosti, přidejte cesty pro zahrnuté soubory z nan a node-addon-api.", "c_cpp.configuration.renameRequiresIdentifier.description": "Když se tato hodnota nastaví na true, operace Přejmenovat symbol bude vyžadovat platný identifikátor C/C++.", "c_cpp.configuration.autocompleteAddParentheses.description": "Pokud je true, automatické dokončování automaticky přidá za volání funkcí znak (. V takovém případě se může přidat i znak ), záleží na hodnotě nastavení editor.autoClosingBrackets.", - "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", - "c_cpp.configuration.filesExcludeBoolean.description": "The glob pattern to match file paths against. Set to true or false to enable or disable the pattern.", - "c_cpp.configuration.filesExcludeWhen.description": "Additional check on the siblings of a matching file. Use $(basename) as variable for the matching file name.", + "c_cpp.configuration.filesExclude.description": "Nakonfigurujte vzory glob pro vyloučení složek (a souborů, pokud se změní C_Cpp.exclusionPolicy). Ty jsou specifické pro rozšíření C/C++ a doplňují files.exclude, ale na rozdíl od files.exclude se neodebírají ze zobrazení Průzkumník. Přečtěte si další informace o vzorech glob [tady] (https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExcludeBoolean.description": "Vzor glob pro hledání shod s cestami k souborům. Pokud chcete vzor povolit, nastavte hodnotu true, pokud ho chcete zakázat, nastavte hodnotu false.", + "c_cpp.configuration.filesExcludeWhen.description": "Další kontrola položek na stejné úrovni u odpovídajícího souboru. Jako proměnnou názvu odpovídajícího souboru použijte $(basename).", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "Když se nastaví na true, nahrazování příkazů shellu ladicího programu bude používat starou verzi obrácené čárky (`).", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: výsledky jiných odkazů", "c_cpp.debuggers.pipeTransport.description": "Pokud je k dispozici, předá ladicímu programu informaci, aby se připojil ke vzdálenému počítači pomocí dalšího spustitelného souboru jako kanál, který bude přenášet standardní vstup a výstup mezi nástrojem VS Code a spustitelným souborem back-endu ladicího programu s podporou MI (třeba gdb).", diff --git a/Extension/i18n/csy/src/main.i18n.json b/Extension/i18n/csy/src/main.i18n.json index ad491f1d15..8a605834f5 100644 --- a/Extension/i18n/csy/src/main.i18n.json +++ b/Extension/i18n/csy/src/main.i18n.json @@ -7,8 +7,8 @@ "architecture.not.supported": "Architektura {0} se nepodporuje. ", "apline.containers.not.supported": "Kontejnery Alpine se nepodporují.", "download.button": "Přejít na stránku stahování", - "native.binaries.mismatch.osx": "The macOS Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", - "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", + "native.binaries.mismatch.osx": "Verze rozšíření macOSu pro Intel se nainstalovala. Vzhledem k tomu, že používáte Apple Silicon Mac, doporučujeme nainstalovat verzi rozšíření Apple Silicon.", + "native.binaries.not.supported": "Tato verze rozšíření pro {0} {1} není kompatibilní s vaším operačním systémem. Stáhněte a nainstalujte si prosím verzi rozšíření {2}.", "extension.installation.failed": "Nepovedlo se úspěšně nainstalovat rozšíření jazyka C/C++. Aby rozšíření pro funkce jazyka C/C++ fungovalo správně, bude nutné ho opravit nebo přeinstalovat.", "remove.extension": "Pokusit se o opravu", "jason.files.missing": "Nepovedlo se úspěšně nainstalovat rozšíření jazyka C/C++. Aby rozšíření pro funkce jazyka C/C++ fungovalo správně, bude nutné ho přeinstalovat.", diff --git a/Extension/i18n/deu/package.i18n.json b/Extension/i18n/deu/package.i18n.json index cf34ad3823..7ed74b7744 100644 --- a/Extension/i18n/deu/package.i18n.json +++ b/Extension/i18n/deu/package.i18n.json @@ -171,8 +171,8 @@ "c_cpp.configuration.renameRequiresIdentifier.description": "Bei TRUE ist für \"Symbol umbenennen\" ein gültiger C-/C++-Bezeichner erforderlich.", "c_cpp.configuration.autocompleteAddParentheses.description": "Bei TRUE fügt AutoVervollständigen automatisch \"(\" nach Funktionsaufrufen hinzu. In diesem Fall kann \")\" abhängig vom Wert der Einstellung \"editor.autoClosingBrackets\" ebenfalls hinzugefügt werden.", "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", - "c_cpp.configuration.filesExcludeBoolean.description": "The glob pattern to match file paths against. Set to true or false to enable or disable the pattern.", - "c_cpp.configuration.filesExcludeWhen.description": "Additional check on the siblings of a matching file. Use $(basename) as variable for the matching file name.", + "c_cpp.configuration.filesExcludeBoolean.description": "Das Globmuster, mit dem Dateipfade verglichen werden sollen. Legen Sie diesen Wert auf \"true\" oder \"false\" fest, um das Muster zu aktivieren bzw. zu deaktivieren.", + "c_cpp.configuration.filesExcludeWhen.description": "Zusätzliche Überprüfung der gleichgeordneten Elemente einer entsprechenden Datei. Verwenden Sie \"$(basename)\" als Variable für den entsprechenden Dateinamen.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "Bei Festlegung auf TRUE verwendet die Befehlsersetzung der Debugger-Shell obsolete Backtick-Zeichen (`).", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: andere Verweisergebnisse", "c_cpp.debuggers.pipeTransport.description": "Falls angegeben, weist diese Option den Debugger an, eine Verbindung mit einem Remotecomputer mithilfe einer anderen ausführbaren Datei als Pipe herzustellen, die Standardeingaben/-ausgaben zwischen VS Code und der ausführbaren Back-End-Datei für den MI-fähigen Debugger weiterleitet (z. B. gdb).", diff --git a/Extension/i18n/esn/package.i18n.json b/Extension/i18n/esn/package.i18n.json index f1097cee48..495bdbfd75 100644 --- a/Extension/i18n/esn/package.i18n.json +++ b/Extension/i18n/esn/package.i18n.json @@ -170,9 +170,9 @@ "c_cpp.configuration.addNodeAddonIncludePaths.description": "Agregue rutas de acceso de inclusión de nan y node-addon-api cuando sean dependencias.", "c_cpp.configuration.renameRequiresIdentifier.description": "Si es true, \"Cambiar el nombre del símbolo\" requerirá un identificador de C/C++ válido.", "c_cpp.configuration.autocompleteAddParentheses.description": "Si es true, la opción de autocompletar agregará \"(\" de forma automática después de las llamadas a funciones, en cuyo caso puede que también se agregue \")\", en función del valor de la configuración de \"editor.autoClosingBrackets\".", - "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", - "c_cpp.configuration.filesExcludeBoolean.description": "The glob pattern to match file paths against. Set to true or false to enable or disable the pattern.", - "c_cpp.configuration.filesExcludeWhen.description": "Additional check on the siblings of a matching file. Use $(basename) as variable for the matching file name.", + "c_cpp.configuration.filesExclude.description": "Configure patrones globales para excluir carpetas (y archivos si se cambia \"C_Cpp. exclusionPolicy\"). Estos son específicos de la extensión de C/C++ y se agregan a \"files. Exclude\", pero a diferencia de \"files. Exclude\" no se quitan de la vista del explorador. Más información acerca de los patrones de globales [here] (https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExcludeBoolean.description": "El patrón global con el que se harán coincidir las rutas de acceso de los archivos. Establézcalo en true o false para habilitarlo o deshabilitarlo.", + "c_cpp.configuration.filesExcludeWhen.description": "Comprobación adicional de los elementos del mismo nivel de un archivo coincidente. Use $(nombreBase) como variable para el nombre de archivo que coincide.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "Si es true, la sustitución de comandos del shell del depurador usará la marca de comilla simple (') obsoleta.", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: resultados de otras referencias", "c_cpp.debuggers.pipeTransport.description": "Cuando se especifica, indica al depurador que se conecte a un equipo remoto usando otro archivo ejecutable como canalización que retransmitirá la entrada o la salida estándar entre VS Code y el archivo ejecutable del back-end del depurador habilitado para MI (por ejemplo, gdb).", diff --git a/Extension/i18n/esn/src/main.i18n.json b/Extension/i18n/esn/src/main.i18n.json index d4ba894a09..af379f4659 100644 --- a/Extension/i18n/esn/src/main.i18n.json +++ b/Extension/i18n/esn/src/main.i18n.json @@ -7,8 +7,8 @@ "architecture.not.supported": "La arquitectura {0} no se admite. ", "apline.containers.not.supported": "Los contenedores de Alpine no se admiten.", "download.button": "Ir a la página de descarga", - "native.binaries.mismatch.osx": "The macOS Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", - "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", + "native.binaries.mismatch.osx": "Se ha instalado la versión de Intel de macOS de la extensión. Como se trata de un equipo multiusuario de Apple Silicon, se recomienda instalar la versión de Apple Silicon de la extensión.", + "native.binaries.not.supported": "La versión para {0} {1} de la extensión no es compatible con el sistema operativo. Descargue la versión \"{2}\" de la extensión e instálela.", "extension.installation.failed": "Error de instalación de la extensión de C/C++. Tendrá que reparar o reinstalar la extensión para que las características del lenguaje C/C++ funcionen correctamente.", "remove.extension": "Intentar reparar", "jason.files.missing": "Error de instalación de la extensión de C/C++. Tendrá que reinstalar la extensión para que las características del lenguaje C/C++ funcionen correctamente.", diff --git a/Extension/i18n/fra/package.i18n.json b/Extension/i18n/fra/package.i18n.json index d6f35b4516..0ee34a1cf1 100644 --- a/Extension/i18n/fra/package.i18n.json +++ b/Extension/i18n/fra/package.i18n.json @@ -170,9 +170,9 @@ "c_cpp.configuration.addNodeAddonIncludePaths.description": "Ajoute des chemins include à partir de nan et node-addon-api quand il s'agit de dépendances.", "c_cpp.configuration.renameRequiresIdentifier.description": "Si la valeur est true, l'opération Renommer le symbole nécessite un identificateur C/C++ valide.", "c_cpp.configuration.autocompleteAddParentheses.description": "Si la valeur est true, l'autocomplétion ajoute automatiquement \"(\" après les appels de fonction. Dans ce cas \")\" peut également être ajouté, en fonction de la valeur du paramètre \"editor.autoClosingBrackets\".", - "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", - "c_cpp.configuration.filesExcludeBoolean.description": "The glob pattern to match file paths against. Set to true or false to enable or disable the pattern.", - "c_cpp.configuration.filesExcludeWhen.description": "Additional check on the siblings of a matching file. Use $(basename) as variable for the matching file name.", + "c_cpp.configuration.filesExclude.description": "Configurez des modèles Glob pour l’exclusion des dossiers (et des fichiers si « C_Cpp.exclusionPolicy » est modifié). Ceux-ci sont spécifiques à l’extension C/C++ et s’ajoutent à « files.exclude », mais contrairement à « files.exclude », ils ne sont pas supprimés de l’affichage de l’Explorateur. Vous pourrez en savoir plus sur les modèles Glob [ici] (https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExcludeBoolean.description": "Modèle Glob auquel les chemins de fichiers doivent correspondre. Affectez la valeur true ou false pour activer ou désactiver le modèle.", + "c_cpp.configuration.filesExcludeWhen.description": "Vérification supplémentaire des frères d'un fichier correspondant. Utilisez $(basename) comme variable pour le nom de fichier correspondant.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "Si la valeur est true, le remplacement de la commande d'interpréteur de commandes du débogueur utilise un accent grave (`) obsolète.", "c_cpp.contributes.views.cppReferencesView.title": "C/C++ : Autres résultats des références", "c_cpp.debuggers.pipeTransport.description": "Quand ce paramètre est présent, indique au débogueur de se connecter à un ordinateur distant en se servant d'un autre exécutable comme canal de relais d'entrée/de sortie standard entre VS Code et l'exécutable du back-end du débogueur MI (par exemple, gdb).", diff --git a/Extension/i18n/fra/src/main.i18n.json b/Extension/i18n/fra/src/main.i18n.json index 60ad6c6b33..5ddbe41155 100644 --- a/Extension/i18n/fra/src/main.i18n.json +++ b/Extension/i18n/fra/src/main.i18n.json @@ -7,8 +7,8 @@ "architecture.not.supported": "L'architecture {0} n'est pas prise en charge. ", "apline.containers.not.supported": "Les conteneurs Alpine ne sont pas pris en charge.", "download.button": "Accéder à la page de téléchargement", - "native.binaries.mismatch.osx": "The macOS Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", - "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", + "native.binaries.mismatch.osx": "La version macOS Intel de l’extension a été installée. Dans la mesure où vous êtes sur Apple Silicon Mac, nous vous recommandons d’installer la version Apple Silicon de l’extension.", + "native.binaries.not.supported": "Cette version {0} {1} de l'extension est incompatible avec votre système d'exploitation. Téléchargez et installez la version {2} de l'extension.", "extension.installation.failed": "Échec de l'installation de l'extension C/C++. Vous devez réparer ou réinstaller l'extension pour que les fonctionnalités du langage C/C++ fonctionnent correctement.", "remove.extension": "Tentative de réparation", "jason.files.missing": "Échec de l'installation de l'extension C/C++. Vous devez réinstaller l'extension pour que les fonctionnalités du langage C/C++ fonctionnent correctement.", diff --git a/Extension/i18n/ita/package.i18n.json b/Extension/i18n/ita/package.i18n.json index b8d316b813..e861bea2ba 100644 --- a/Extension/i18n/ita/package.i18n.json +++ b/Extension/i18n/ita/package.i18n.json @@ -171,8 +171,8 @@ "c_cpp.configuration.renameRequiresIdentifier.description": "Se è true, con 'Rinomina simbolo' sarà richiesto un identificatore C/C++ valido.", "c_cpp.configuration.autocompleteAddParentheses.description": "Se è true, il completamento automatico aggiungerà automaticamente \"(\" dopo le chiamate di funzione. In tal caso potrebbe essere aggiunto anche \")\", a seconda del valore dell'impostazione \"editor.autoClosingBrackets\".", "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", - "c_cpp.configuration.filesExcludeBoolean.description": "The glob pattern to match file paths against. Set to true or false to enable or disable the pattern.", - "c_cpp.configuration.filesExcludeWhen.description": "Additional check on the siblings of a matching file. Use $(basename) as variable for the matching file name.", + "c_cpp.configuration.filesExcludeBoolean.description": "Criterio GLOB da usare per trovare percorsi file. Impostare su True o False per abilitare o disabilitare il criterio.", + "c_cpp.configuration.filesExcludeWhen.description": "Controllo aggiuntivo sugli elementi di pari livello di un file corrispondente. Usare $(basename) come variabile del nome file corrispondente.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "Se è true, per la sostituzione del comando della shell del debugger verrà usato il carattere backtick obsoleto (`).", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: Risultati altri riferimenti", "c_cpp.debuggers.pipeTransport.description": "Se presente, indica al debugger di connettersi a un computer remoto usando come pipe un altro eseguibile che inoltra l'input/output standard tra VS Code e l'eseguibile back-end del debugger abilitato per MI, ad esempio gdb.", diff --git a/Extension/i18n/jpn/package.i18n.json b/Extension/i18n/jpn/package.i18n.json index 87bf75247d..73a32c5bf9 100644 --- a/Extension/i18n/jpn/package.i18n.json +++ b/Extension/i18n/jpn/package.i18n.json @@ -171,8 +171,8 @@ "c_cpp.configuration.renameRequiresIdentifier.description": "true の場合、'シンボルの名前変更' には有効な C/C++ 識別子が必要です。", "c_cpp.configuration.autocompleteAddParentheses.description": "true の場合、関数呼び出しの後に \"(\" が自動的に追加されます。その場合は、\"editor.autoClosingBrackets\" 設定の値に応じて、\")\" も追加される場合があります。", "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", - "c_cpp.configuration.filesExcludeBoolean.description": "The glob pattern to match file paths against. Set to true or false to enable or disable the pattern.", - "c_cpp.configuration.filesExcludeWhen.description": "Additional check on the siblings of a matching file. Use $(basename) as variable for the matching file name.", + "c_cpp.configuration.filesExcludeBoolean.description": "ファイル パスの照合基準となる glob パターン。これを true または false に設定すると、パターンがそれぞれ有効/無効になります。", + "c_cpp.configuration.filesExcludeWhen.description": "一致するファイルの兄弟をさらにチェックします。一致するファイル名の変数として $(basename) を使用します。", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "True の場合、デバッガー シェルのコマンド置換では古いバックティック (') が使用されます。", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: その他の参照結果", "c_cpp.debuggers.pipeTransport.description": "これを指定すると、デバッガーにより、別の実行可能ファイルをパイプとして使用してリモート コンピューターに接続され、VS Code と MI 対応のデバッガー バックエンド実行可能ファイル (gdb など) との間で標準入出力が中継されます。", diff --git a/Extension/i18n/kor/package.i18n.json b/Extension/i18n/kor/package.i18n.json index 0d263ace4c..10395d5b00 100644 --- a/Extension/i18n/kor/package.i18n.json +++ b/Extension/i18n/kor/package.i18n.json @@ -170,9 +170,9 @@ "c_cpp.configuration.addNodeAddonIncludePaths.description": "nan 및 node-addon-api가 종속성일 때 해당 포함 경로를 추가합니다.", "c_cpp.configuration.renameRequiresIdentifier.description": "true이면 '기호 이름 바꾸기'에 유효한 C/C++ 식별자가 필요합니다.", "c_cpp.configuration.autocompleteAddParentheses.description": "true이면 자동 완성에서 \"editor.autoClosingBrackets\" 설정 값에 따라 함수 호출 뒤에 \"(\"를 자동으로 추가하며, 이 경우 \")\"도 추가될 수 있습니다.", - "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", - "c_cpp.configuration.filesExcludeBoolean.description": "The glob pattern to match file paths against. Set to true or false to enable or disable the pattern.", - "c_cpp.configuration.filesExcludeWhen.description": "Additional check on the siblings of a matching file. Use $(basename) as variable for the matching file name.", + "c_cpp.configuration.filesExclude.description": "폴더(및 \"C_Cpp.exclusionPolicy\"가 변경된 경우 파일)를 제외하기 위한 GLOB 패턴을 구성하세요. 이는 C/C++ 확장에 고유하며 \"files.exclude\"에 추가되지만 \"files.exclude\"와 달리 탐색기 보기에서 제거되지 않습니다. [여기](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options)에서 GLOB 패턴에 대해 자세히 알아보세요.", + "c_cpp.configuration.filesExcludeBoolean.description": "파일 경로를 일치시킬 GLOB 패턴입니다. 패턴을 사용하거나 사용하지 않도록 설정하려면 true 또는 false로 설정하세요.", + "c_cpp.configuration.filesExcludeWhen.description": "일치하는 파일의 형제에 대한 추가 검사입니다. $(basename)을 일치하는 파일 이름에 대한 변수로 사용하세요.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "true인 경우 디버거 셸 명령 대체가 사용되지 않는 백틱(`)을 사용합니다.", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: 기타 참조 결과", "c_cpp.debuggers.pipeTransport.description": "있을 경우 VS Code와 MI 지원 디버거 백 엔드 실행 파일(예: gdb) 사이에 표준 입출력을 릴레이하는 파이프로 다른 실행 파일을 사용하여 원격 컴퓨터에 연결되도록 디버거를 지정합니다.", diff --git a/Extension/i18n/kor/src/main.i18n.json b/Extension/i18n/kor/src/main.i18n.json index 312b799ded..26261429f1 100644 --- a/Extension/i18n/kor/src/main.i18n.json +++ b/Extension/i18n/kor/src/main.i18n.json @@ -7,8 +7,8 @@ "architecture.not.supported": "{0} 아키텍처는 지원되지 않습니다. ", "apline.containers.not.supported": "Alpine 컨테이너는 지원되지 않습니다.", "download.button": "다운로드 페이지로 이동", - "native.binaries.mismatch.osx": "The macOS Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", - "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", + "native.binaries.mismatch.osx": "macOS Intel 버전의 확장이 설치되었습니다. Apple Silicon Mac을 사용 중이므로 Apple Silicon 버전의 확장을 설치하는 것이 좋습니다.", + "native.binaries.not.supported": "이 확장의 {0} {1} 버전은 OS와 호환되지 않습니다. 확장의 \"{2}\" 버전을 다운로드하여 설치하세요.", "extension.installation.failed": "C/C++ 확장을 설치하지 못했습니다. C/C++ 언어 기능이 제대로 작동하려면 확장을 복구하거나 다시 설치해야 합니다.", "remove.extension": "복구 시도", "jason.files.missing": "C/C++ 확장을 설치하지 못했습니다. C/C++ 언어 기능이 제대로 작동하려면 확장을 다시 설치해야 합니다.", diff --git a/Extension/i18n/plk/package.i18n.json b/Extension/i18n/plk/package.i18n.json index 44aa0eebf9..3b6c8b20b1 100644 --- a/Extension/i18n/plk/package.i18n.json +++ b/Extension/i18n/plk/package.i18n.json @@ -171,8 +171,8 @@ "c_cpp.configuration.renameRequiresIdentifier.description": "Jeśli ma wartość true, operacja „Zmień nazwę symbolu” będzie wymagać prawidłowego identyfikatora C/C++.", "c_cpp.configuration.autocompleteAddParentheses.description": "W przypadku podania wartości true Autouzupełnianie będzie automatycznie dodawać znak „(” po wywołaniach funkcji, co może też powodować dodawanie znaku „)” w zależności od ustawienia „editor.autoClosingBrackets”.", "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", - "c_cpp.configuration.filesExcludeBoolean.description": "The glob pattern to match file paths against. Set to true or false to enable or disable the pattern.", - "c_cpp.configuration.filesExcludeWhen.description": "Additional check on the siblings of a matching file. Use $(basename) as variable for the matching file name.", + "c_cpp.configuration.filesExcludeBoolean.description": "Wzorzec globalny do dopasowywania ścieżek do plików. Aby włączyć lub wyłączyć wzorzec, ustaw wartość true lub false.", + "c_cpp.configuration.filesExcludeWhen.description": "Dodatkowe sprawdzenie elementów równorzędnych pasującego pliku. Użyj ciągu $(basename) jako zmiennej dla nazwy pasującego pliku.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "Jeśli wartość będzie równa true, podstawianie poleceń powłoki debugera będzie używać przestarzałego grawisa (`).", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: inne wyniki odwołań", "c_cpp.debuggers.pipeTransport.description": "Jeśli jest obecny, zawiera instrukcje dla debugera, aby połączył się z komputerem zdalnym przy użyciu innego pliku wykonywalnego jako potoku, który będzie przekazywał standardowe wejście/wyjście między programem VS Code a plikiem wykonywalnym zaplecza debugera z włączoną obsługą indeksu MI (takim jak gdb).", diff --git a/Extension/i18n/ptb/package.i18n.json b/Extension/i18n/ptb/package.i18n.json index 6c675adcff..2d5dcc0ac5 100644 --- a/Extension/i18n/ptb/package.i18n.json +++ b/Extension/i18n/ptb/package.i18n.json @@ -171,8 +171,8 @@ "c_cpp.configuration.renameRequiresIdentifier.description": "Se for true, 'Renomear Símbolo' exigirá um identificador C/C++ válido.", "c_cpp.configuration.autocompleteAddParentheses.description": "Se esta opção for true, o recurso Preenchimento Automático adicionará automaticamente \"(\" após as chamadas de função e, nesse caso, \")\" também poderá ser adicionado, dependendo do valor da configuração \"editor.autoClosingBrackets\".", "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", - "c_cpp.configuration.filesExcludeBoolean.description": "The glob pattern to match file paths against. Set to true or false to enable or disable the pattern.", - "c_cpp.configuration.filesExcludeWhen.description": "Additional check on the siblings of a matching file. Use $(basename) as variable for the matching file name.", + "c_cpp.configuration.filesExcludeBoolean.description": "O padrão glob ao qual corresponder os caminhos do arquivo. Defina como true ou false para habilitar ou desabilitar o padrão.", + "c_cpp.configuration.filesExcludeWhen.description": "Verificação adicional nos irmãos de um arquivo correspondente. Use $(basename) como variável para o nome do arquivo correspondente.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "Se esta configuração for true, a substituição do comando do shell do depurador usará o acento grave obsoleto (`).", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: outros resultados de referências", "c_cpp.debuggers.pipeTransport.description": "Quando presente, isso instrui o depurador a conectar-se a um computador remoto usando outro executável como um pipe que retransmitirá a entrada/saída padrão entre o VS Code e o executável do back-end do depurador habilitado para MI (como gdb).", diff --git a/Extension/i18n/rus/package.i18n.json b/Extension/i18n/rus/package.i18n.json index 19cb209f30..916517dcfa 100644 --- a/Extension/i18n/rus/package.i18n.json +++ b/Extension/i18n/rus/package.i18n.json @@ -170,9 +170,9 @@ "c_cpp.configuration.addNodeAddonIncludePaths.description": "Добавить пути включения из nan и node-addon-api, если они являются зависимостями.", "c_cpp.configuration.renameRequiresIdentifier.description": "Если этот параметр имеет значение true, для операции \"Переименование символов\" потребуется указать допустимый идентификатор C/C++.", "c_cpp.configuration.autocompleteAddParentheses.description": "Если значение — true, автозаполнение автоматически добавит \"(\" после вызовов функции, и в этом случае также может добавить \")\" в зависимости от значения параметра \"editor.autoClosingBrackets\".", - "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", - "c_cpp.configuration.filesExcludeBoolean.description": "The glob pattern to match file paths against. Set to true or false to enable or disable the pattern.", - "c_cpp.configuration.filesExcludeWhen.description": "Additional check on the siblings of a matching file. Use $(basename) as variable for the matching file name.", + "c_cpp.configuration.filesExclude.description": "Настройте стандартные маски для исключения папок (и файлов, если внесено изменение в \"C_Cpp.exclusionPolicy\"). Они специфичны для расширения C/C++ и дополняют \"files.exclude\", но в отличие от \"files.exclude\" они не удаляются из представления обозревателя. Дополнительные сведения о стандартных масках см. [здесь] (https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExcludeBoolean.description": "Стандартная маска, соответствующая путям к файлам. Задайте значение true или false, чтобы включить или отключить маску.", + "c_cpp.configuration.filesExcludeWhen.description": "Дополнительная проверка элементов того же уровня соответствующего файла. Используйте $(basename) в качестве переменной для соответствующего имени файла.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "Если задано значение true, для подстановки команд оболочки отладчика будет использоваться устаревший обратный апостроф (`).", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: результаты по другим ссылкам", "c_cpp.debuggers.pipeTransport.description": "При наличии сообщает отладчику о необходимости подключения к удаленному компьютеру с помощью другого исполняемого файла в качестве канала, который будет пересылать стандартный ввод и вывод между VS Code и исполняемым файлом отладчика с поддержкой MI в серверной части (например, gdb).", diff --git a/Extension/i18n/rus/src/main.i18n.json b/Extension/i18n/rus/src/main.i18n.json index 0126ae04c7..6f5f53e9e0 100644 --- a/Extension/i18n/rus/src/main.i18n.json +++ b/Extension/i18n/rus/src/main.i18n.json @@ -7,8 +7,8 @@ "architecture.not.supported": "Архитектура {0} не поддерживается. ", "apline.containers.not.supported": "Контейнеры Alpine не поддерживаются.", "download.button": "Перейти к странице скачивания", - "native.binaries.mismatch.osx": "The macOS Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", - "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", + "native.binaries.mismatch.osx": "Установлена версия расширения для macOS Intel. Так как вы используете компьютер Apple Silicon Mac, рекомендуется установить версию расширения для Apple Silicon.", + "native.binaries.not.supported": "Версия расширения для {0} {1} несовместима с вашей ОС. Скачайте и установите версию расширения \"{2}\".", "extension.installation.failed": "Установить расширение C/C++ не удалось. Исправьте или переустановите расширение функций языка C/C++ для корректной работы.", "remove.extension": "Попытка исправления", "jason.files.missing": "Установить расширение C/C++ не удалось. Переустановите расширение функций языка C/C++ для корректной работы.", diff --git a/Extension/i18n/trk/package.i18n.json b/Extension/i18n/trk/package.i18n.json index c5c68e7fc1..f63bbee3cf 100644 --- a/Extension/i18n/trk/package.i18n.json +++ b/Extension/i18n/trk/package.i18n.json @@ -171,8 +171,8 @@ "c_cpp.configuration.renameRequiresIdentifier.description": "True ise, 'Sembolü Yeniden Adlandır' işlemi için geçerli bir C/C++ tanımlayıcısı gerekir.", "c_cpp.configuration.autocompleteAddParentheses.description": "True ise otomatik tamamla özelliği, işlev çağrılarından sonra otomatik olarak \"(\" ekler. Bazı durumlarda \"editor.autoClosingBrackets\" ayarının değerine bağlı olarak \")\" karakteri de eklenebilir.", "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", - "c_cpp.configuration.filesExcludeBoolean.description": "The glob pattern to match file paths against. Set to true or false to enable or disable the pattern.", - "c_cpp.configuration.filesExcludeWhen.description": "Additional check on the siblings of a matching file. Use $(basename) as variable for the matching file name.", + "c_cpp.configuration.filesExcludeBoolean.description": "Dosya yollarıyla eşleşecek glob deseni. Deseni etkinleştirmek veya devre dışı bırakmak için true ya da false olarak ayarlayın.", + "c_cpp.configuration.filesExcludeWhen.description": "Eşleşen bir dosyanın eşdüzey öğeleri üzerinde ek denetim. Eşleşen dosya adı için değişken olarak $(basename) kullanın.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "True ise, hata ayıklayıcı kabuk komut değiştirme eski kesme işaretini (`) kullanır.", "c_cpp.contributes.views.cppReferencesView.title": "C/C++: Diğer başvuru sonuçları", "c_cpp.debuggers.pipeTransport.description": "Mevcut olduğunda, hata ayıklayıcısına, VS Code ile MI özellikli hata ayıklayıcısı arka uç yürütülebilir dosyası (gdb gibi) arasında standart giriş/çıkış geçişi sağlayan bir kanal olarak görev yapacak başka bir yürütülebilir dosya aracılığıyla uzak bilgisayara bağlanmasını söyler.", From f0a8c1aa1687da9564b318ec8b034b03aa003485 Mon Sep 17 00:00:00 2001 From: csigs Date: Tue, 13 Apr 2021 16:34:28 -0700 Subject: [PATCH 15/48] Localization - Translated Strings (#7357) Co-authored-by: DevDiv Build Lab - Dev14 --- Extension/i18n/chs/package.i18n.json | 2 +- Extension/i18n/chs/src/main.i18n.json | 4 ++-- Extension/i18n/cht/package.i18n.json | 2 +- Extension/i18n/cht/src/main.i18n.json | 4 ++-- Extension/i18n/deu/package.i18n.json | 2 +- Extension/i18n/deu/src/main.i18n.json | 4 ++-- Extension/i18n/ita/package.i18n.json | 2 +- Extension/i18n/ita/src/main.i18n.json | 4 ++-- Extension/i18n/jpn/package.i18n.json | 2 +- Extension/i18n/jpn/src/main.i18n.json | 4 ++-- 10 files changed, 15 insertions(+), 15 deletions(-) diff --git a/Extension/i18n/chs/package.i18n.json b/Extension/i18n/chs/package.i18n.json index 4e5a779999..6a1ce4c3eb 100644 --- a/Extension/i18n/chs/package.i18n.json +++ b/Extension/i18n/chs/package.i18n.json @@ -170,7 +170,7 @@ "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\" 设置的值。", - "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExclude.description": "为排除文件夹(和文件配置 glob 模式,如果 \"C_Cpp. exclusionPolicy\" 已更改)。这些是除了\"files.exclude\" 之外的 C/C + + 特定扩展,但与 \"files.exclude\" 不同,他们不从资源管理器视图中删除。了解 glob 模式的详细信息 [here] (https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options)。", "c_cpp.configuration.filesExcludeBoolean.description": "匹配文件路径所依据的 glob 模式。设置为 true 或 false 可启用或禁用该模式。", "c_cpp.configuration.filesExcludeWhen.description": "对匹配文件的同级文件的其他检查。使用 $(basename) 作为匹配文件名的变量。", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "如果为 true,调试程序 shell 命令替换将使用过时的反引号(`)。", diff --git a/Extension/i18n/chs/src/main.i18n.json b/Extension/i18n/chs/src/main.i18n.json index 7b68486013..878b99fd6e 100644 --- a/Extension/i18n/chs/src/main.i18n.json +++ b/Extension/i18n/chs/src/main.i18n.json @@ -7,8 +7,8 @@ "architecture.not.supported": "体系结构 {0} 不受支持。", "apline.containers.not.supported": "Alpine 容器不受支持。", "download.button": "转到下载页", - "native.binaries.mismatch.osx": "The macOS Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", - "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", + "native.binaries.mismatch.osx": "MacOS Intel 版本的扩展已安装。 由于你使用的是 Apple Silicon Mac,我们建议你安装 Apple Silicon 版本的扩展。", + "native.binaries.not.supported": "此 {0} {1} 版本的扩展与你的 OS 不兼容,请下载并安装 \"{2}\" 版本的扩展。", "extension.installation.failed": "C/C++ 扩展安装失败。为使函数正常工作,需要修复或重新安装 C/C++ 语言功能的扩展。", "remove.extension": "尝试修复", "jason.files.missing": "C/C++ 扩展安装失败。为使函数正常工作,需要重新安装 C/C++ 语言功能的扩展。", diff --git a/Extension/i18n/cht/package.i18n.json b/Extension/i18n/cht/package.i18n.json index 0d2847c787..1a1374cb92 100644 --- a/Extension/i18n/cht/package.i18n.json +++ b/Extension/i18n/cht/package.i18n.json @@ -170,7 +170,7 @@ "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\" 設定的值。", - "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExclude.description": "設定 Glob 模式以排除資料夾 (如果變更 \"C_Cpp.exclusionPolicy\",則排除檔案)。這些模式為 C/C++ 延伸模組所特有,是 \"files.exclude\" 的補充,但與 \"files.exclude\" 不同,系統不會將它們從 Explorer 檢視中移除。請在 [此處](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options) 了解 Glob 模式的詳細資訊。", "c_cpp.configuration.filesExcludeBoolean.description": "要符合檔案路徑的 Glob 模式。設為 True 或 False 可啟用或停用模式。", "c_cpp.configuration.filesExcludeWhen.description": "在相符檔案同層級上額外的檢查。請使用 $(basename) 作為相符檔案名稱的變數。", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "若為 true,偵錯工具殼層命令替代將會使用已淘汰的反引號 (`)。", diff --git a/Extension/i18n/cht/src/main.i18n.json b/Extension/i18n/cht/src/main.i18n.json index b9a6c84347..4b831466d1 100644 --- a/Extension/i18n/cht/src/main.i18n.json +++ b/Extension/i18n/cht/src/main.i18n.json @@ -7,8 +7,8 @@ "architecture.not.supported": "不支援架構 {0}。 ", "apline.containers.not.supported": "不支援 Alpine 容器。", "download.button": "前往 [下載\ 頁面", - "native.binaries.mismatch.osx": "The macOS Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", - "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", + "native.binaries.mismatch.osx": "已安裝 macOS Intel 版延伸模組。因為您使用的是 Apple Silicon Mac,建議您安裝 Apple Silicon 版延伸模組。", + "native.binaries.not.supported": "此 {0} {1} 版延伸模組與您的作業系統不相容。請下載並安裝 \"{2}\" 版延伸模組。", "extension.installation.failed": "無法成功安裝 C/C++ 延伸模組。您必須修復或重新安裝 C/C++ 語言功能的延伸模組,才可正常運作。", "remove.extension": "嘗試修復", "jason.files.missing": "無法成功安裝 C/C++ 延伸模組。您必須重新安裝 C/C++ 語言功能的延伸模組,才可正常運作。", diff --git a/Extension/i18n/deu/package.i18n.json b/Extension/i18n/deu/package.i18n.json index 7ed74b7744..e0bb807c30 100644 --- a/Extension/i18n/deu/package.i18n.json +++ b/Extension/i18n/deu/package.i18n.json @@ -170,7 +170,7 @@ "c_cpp.configuration.addNodeAddonIncludePaths.description": "Fügen Sie Includepfade aus \"nan\" und \"node-addon-api\" hinzu, wenn es sich um Abhängigkeiten handelt.", "c_cpp.configuration.renameRequiresIdentifier.description": "Bei TRUE ist für \"Symbol umbenennen\" ein gültiger C-/C++-Bezeichner erforderlich.", "c_cpp.configuration.autocompleteAddParentheses.description": "Bei TRUE fügt AutoVervollständigen automatisch \"(\" nach Funktionsaufrufen hinzu. In diesem Fall kann \")\" abhängig vom Wert der Einstellung \"editor.autoClosingBrackets\" ebenfalls hinzugefügt werden.", - "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExclude.description": "Konfigurieren Sie Globmuster für das Ausschließen von Ordnern (und Dateien, wenn \"C_Cpp.exclusionPolicy\" geändert wird). Diese sind spezifisch für die C/C++-Erweiterung und zusätzlich zu \"files.exclude\", aber im Gegensatz zu \"files.exclude\" werden sie nicht aus der Explorer-Ansicht entfernt. Weitere Informationen zu Globmustern finden Sie [hier](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", "c_cpp.configuration.filesExcludeBoolean.description": "Das Globmuster, mit dem Dateipfade verglichen werden sollen. Legen Sie diesen Wert auf \"true\" oder \"false\" fest, um das Muster zu aktivieren bzw. zu deaktivieren.", "c_cpp.configuration.filesExcludeWhen.description": "Zusätzliche Überprüfung der gleichgeordneten Elemente einer entsprechenden Datei. Verwenden Sie \"$(basename)\" als Variable für den entsprechenden Dateinamen.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "Bei Festlegung auf TRUE verwendet die Befehlsersetzung der Debugger-Shell obsolete Backtick-Zeichen (`).", diff --git a/Extension/i18n/deu/src/main.i18n.json b/Extension/i18n/deu/src/main.i18n.json index 161ea8268b..fa0c34ebe4 100644 --- a/Extension/i18n/deu/src/main.i18n.json +++ b/Extension/i18n/deu/src/main.i18n.json @@ -7,8 +7,8 @@ "architecture.not.supported": "Die Architektur \"{0}\" wird nicht unterstützt. ", "apline.containers.not.supported": "Alpine-Container werden nicht unterstützt.", "download.button": "Gehe zu Downloadseite", - "native.binaries.mismatch.osx": "The macOS Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", - "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", + "native.binaries.mismatch.osx": "Die macOS Intel-Version der Erweiterung wurde installiert. Da Sie sich auf einem Apple Silicon Mac befinden, empfehlen wir die Installation der Apple Silicon-Version der Erweiterung.", + "native.binaries.not.supported": "Diese Version {0} {1} der Erweiterung ist nicht mit Ihrem Betriebssystem kompatibel. Laden Sie Version \"{2}\" der Erweiterung herunter, und installieren Sie sie.", "extension.installation.failed": "Die C/C++-Erweiterung konnte nicht erfolgreich installiert werden. Sie müssen die Erweiterung für C/C++-Sprachfeatures reparieren oder neu installieren, damit die Erweiterung ordnungsgemäß funktioniert.", "remove.extension": "Reparaturversuch", "jason.files.missing": "Die C/C++-Erweiterung konnte nicht erfolgreich installiert werden. Sie müssen die Erweiterung für C/C++-Sprachfeatures neu installieren, damit die Erweiterung ordnungsgemäß funktioniert.", diff --git a/Extension/i18n/ita/package.i18n.json b/Extension/i18n/ita/package.i18n.json index e861bea2ba..1a97142f07 100644 --- a/Extension/i18n/ita/package.i18n.json +++ b/Extension/i18n/ita/package.i18n.json @@ -170,7 +170,7 @@ "c_cpp.configuration.addNodeAddonIncludePaths.description": "Aggiunge percorsi di inclusione da nan e node-addon-api quando sono dipendenze.", "c_cpp.configuration.renameRequiresIdentifier.description": "Se è true, con 'Rinomina simbolo' sarà richiesto un identificatore C/C++ valido.", "c_cpp.configuration.autocompleteAddParentheses.description": "Se è true, il completamento automatico aggiungerà automaticamente \"(\" dopo le chiamate di funzione. In tal caso potrebbe essere aggiunto anche \")\", a seconda del valore dell'impostazione \"editor.autoClosingBrackets\".", - "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExclude.description": "Configura i criteri GLOB per escludere le cartelle (e i file, se \"C_Cpp.exclusionPolicy\" è modificato). Questi sono specifici dell'estensione C/C++ e si aggiungono a \"files.exclude\", ma a differenza di \"files.exclude\" non vengono rimossi dalla visualizzazione Esplora. Altre informazioni sui criteri GLOB [qui](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", "c_cpp.configuration.filesExcludeBoolean.description": "Criterio GLOB da usare per trovare percorsi file. Impostare su True o False per abilitare o disabilitare il criterio.", "c_cpp.configuration.filesExcludeWhen.description": "Controllo aggiuntivo sugli elementi di pari livello di un file corrispondente. Usare $(basename) come variabile del nome file corrispondente.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "Se è true, per la sostituzione del comando della shell del debugger verrà usato il carattere backtick obsoleto (`).", diff --git a/Extension/i18n/ita/src/main.i18n.json b/Extension/i18n/ita/src/main.i18n.json index 29c7412b27..717ed2fc0d 100644 --- a/Extension/i18n/ita/src/main.i18n.json +++ b/Extension/i18n/ita/src/main.i18n.json @@ -7,8 +7,8 @@ "architecture.not.supported": "L'architettura {0} non è supportata. ", "apline.containers.not.supported": "I contenitori Alpine non sono supportati.", "download.button": "Vai alla pagina di download", - "native.binaries.mismatch.osx": "The macOS Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", - "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", + "native.binaries.mismatch.osx": "La versione per macOS Intel dell'estensione è stata installata. Dal momento che stai usando una Mac Apple Silicon, ti raccomandiamo di installare la versione per Apple Silicon dell'estensione.", + "native.binaries.not.supported": "La versione {0} {1} dell'estensione non è compatibile con il sistema operativo. Scaricare e installare la versione \"{2}\" dell'estensione.", "extension.installation.failed": "Non è stato possibile installare l'estensione C/C++. Per funzionare correttamente, è necessario riparare o reinstallare l'estensione per le funzionalità del linguaggio C/C++.", "remove.extension": "Tentativo di riparazione", "jason.files.missing": "Non è stato possibile installare l'estensione C/C++. Per funzionare correttamente, sarà necessario reinstallare l'estensione per le funzionalità del linguaggio C/C++.", diff --git a/Extension/i18n/jpn/package.i18n.json b/Extension/i18n/jpn/package.i18n.json index 73a32c5bf9..c6a8efb486 100644 --- a/Extension/i18n/jpn/package.i18n.json +++ b/Extension/i18n/jpn/package.i18n.json @@ -170,7 +170,7 @@ "c_cpp.configuration.addNodeAddonIncludePaths.description": "依存関係にある場合は、nan および node-addon-api からのインクルード パスを追加します。", "c_cpp.configuration.renameRequiresIdentifier.description": "true の場合、'シンボルの名前変更' には有効な C/C++ 識別子が必要です。", "c_cpp.configuration.autocompleteAddParentheses.description": "true の場合、関数呼び出しの後に \"(\" が自動的に追加されます。その場合は、\"editor.autoClosingBrackets\" 設定の値に応じて、\")\" も追加される場合があります。", - "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExclude.description": "フォルダー (\"C_Cpp.exclusionPolicy\" が変更された場合はファイルも) を除外するための glob パターンを構成します。これらは C/c + + の拡張機能に固有であり、\"files. exclude\" に加えて構成しますが、\"files. exclude\" とは異なり、[エクスプローラー] ビューからは削除されません。glob パターンの詳細については、[こちら] (https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options) を参照してください。", "c_cpp.configuration.filesExcludeBoolean.description": "ファイル パスの照合基準となる glob パターン。これを true または false に設定すると、パターンがそれぞれ有効/無効になります。", "c_cpp.configuration.filesExcludeWhen.description": "一致するファイルの兄弟をさらにチェックします。一致するファイル名の変数として $(basename) を使用します。", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "True の場合、デバッガー シェルのコマンド置換では古いバックティック (') が使用されます。", diff --git a/Extension/i18n/jpn/src/main.i18n.json b/Extension/i18n/jpn/src/main.i18n.json index f4c0ce2372..18461bed2c 100644 --- a/Extension/i18n/jpn/src/main.i18n.json +++ b/Extension/i18n/jpn/src/main.i18n.json @@ -7,8 +7,8 @@ "architecture.not.supported": "アーキテクチャ {0} はサポートされていません。", "apline.containers.not.supported": "Alpine コンテナーはサポートされていません。", "download.button": "ダウンロード ページへ移動", - "native.binaries.mismatch.osx": "The macOS Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", - "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", + "native.binaries.mismatch.osx": "MacOS Intel 版の拡張機能がインストールされました。Apple Silicon Mac を使用しているため、拡張機能の Apple Silicon バージョンをインストールすることをお勧めします。", + "native.binaries.not.supported": "この {0} {1} バージョンの拡張機能は、お使いの OS と互換性がありません。拡張機能の \"{2}\" バージョンをダウンロードしてインストールしてください。", "extension.installation.failed": "C/C++ の拡張機能を正常にインストールできませんでした。正常に機能させるには、C/C++ 言語機能の拡張機能を修復または再インストールする必要があります。", "remove.extension": "修復の試行", "jason.files.missing": "C/C++ の拡張機能を正常にインストールできませんでした。正常に機能させるには、C/C++ 言語機能の拡張機能を再インストールする必要があります。", From 18f29bffa81c58deb7750f5a912563374d869881 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Tue, 13 Apr 2021 17:56:49 -0700 Subject: [PATCH 16/48] Fix activation. (#7345) --- Extension/src/LanguageServer/extension.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index 52a597f055..b51a4e2449 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -173,9 +173,9 @@ export function activate(activationEventOccurred: boolean): void { for (let i: number = 0; i < vscode.workspace.workspaceFolders.length; ++i) { const config: string = path.join(vscode.workspace.workspaceFolders[i].uri.fsPath, ".vscode/c_cpp_properties.json"); if (fs.existsSync(config)) { + cppPropertiesExists = true; vscode.workspace.openTextDocument(config).then((doc: vscode.TextDocument) => { vscode.languages.setTextDocumentLanguage(doc, "jsonc"); - cppPropertiesExists = true; }); } } From 1935d85357e3d9077d3d4b62bfeb6bdf7970029c Mon Sep 17 00:00:00 2001 From: csigs Date: Wed, 14 Apr 2021 09:55:21 -0700 Subject: [PATCH 17/48] Localization - Translated Strings (#7361) Co-authored-by: DevDiv Build Lab - Dev14 --- Extension/i18n/plk/package.i18n.json | 2 +- Extension/i18n/plk/src/main.i18n.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Extension/i18n/plk/package.i18n.json b/Extension/i18n/plk/package.i18n.json index 3b6c8b20b1..60a613d9c3 100644 --- a/Extension/i18n/plk/package.i18n.json +++ b/Extension/i18n/plk/package.i18n.json @@ -170,7 +170,7 @@ "c_cpp.configuration.addNodeAddonIncludePaths.description": "Dodaj ścieżki dołączania z bibliotek nan i node-addon-api, gdy są one zależnościami.", "c_cpp.configuration.renameRequiresIdentifier.description": "Jeśli ma wartość true, operacja „Zmień nazwę symbolu” będzie wymagać prawidłowego identyfikatora C/C++.", "c_cpp.configuration.autocompleteAddParentheses.description": "W przypadku podania wartości true Autouzupełnianie będzie automatycznie dodawać znak „(” po wywołaniach funkcji, co może też powodować dodawanie znaku „)” w zależności od ustawienia „editor.autoClosingBrackets”.", - "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExclude.description": "Skonfiguruj wzorce globalne do wykluczania folderów (i plików, jeśli zostanie zmienione ustawienie „C_Cpp.exclusionPolicy”). Są one charakterystyczne dla rozszerzenia C/C++ i występują poza ustawieniem „files. exclude”, ale w przeciwieństwie do tego ustawienia nie można ich usuwać z widoku Eksploratora. Przeczytaj więcej na temat wzorców globalnych [tutaj] (https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", "c_cpp.configuration.filesExcludeBoolean.description": "Wzorzec globalny do dopasowywania ścieżek do plików. Aby włączyć lub wyłączyć wzorzec, ustaw wartość true lub false.", "c_cpp.configuration.filesExcludeWhen.description": "Dodatkowe sprawdzenie elementów równorzędnych pasującego pliku. Użyj ciągu $(basename) jako zmiennej dla nazwy pasującego pliku.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "Jeśli wartość będzie równa true, podstawianie poleceń powłoki debugera będzie używać przestarzałego grawisa (`).", diff --git a/Extension/i18n/plk/src/main.i18n.json b/Extension/i18n/plk/src/main.i18n.json index 8688ee6db8..a9b501678e 100644 --- a/Extension/i18n/plk/src/main.i18n.json +++ b/Extension/i18n/plk/src/main.i18n.json @@ -7,8 +7,8 @@ "architecture.not.supported": "Architektura {0} nie jest obsługiwana.", "apline.containers.not.supported": "Kontenery Alpine nie są obsługiwane.", "download.button": "Przejdź do strony pobierania", - "native.binaries.mismatch.osx": "The macOS Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", - "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", + "native.binaries.mismatch.osx": "Zainstalowano wersję rozszerzenia systemu macOS Intel. Zalecamy zainstalowanie wersji rozszerzania systemu Apple Silicon Mac, ponieważ używasz wersji systemu Apple Silicon Mac.", + "native.binaries.not.supported": "Ta wersja rozszerzenia systemu {0} {1} jest niezgodna z Twoim systemem operacyjnym. Pobierz i zainstaluj wersję rozszerzenia „{2}”.", "extension.installation.failed": "Nie można pomyślnie zainstalować rozszerzenia języka C/C++. Aby umożliwić poprawne działanie, należy naprawić lub zainstalować ponownie rozszerzenie dla funkcji języka C/C++.", "remove.extension": "Spróbuj naprawić", "jason.files.missing": "Nie można pomyślnie zainstalować rozszerzenia języka C/C++. Aby umożliwić poprawne działanie, należy zainstalować ponownie rozszerzenie dla funkcji języka C/C++.", From d85e30e74611443dd28d05aaf018e793ac8f2ae2 Mon Sep 17 00:00:00 2001 From: Yonggang Luo Date: Wed, 14 Apr 2021 17:02:46 +0000 Subject: [PATCH 18/48] Logging invalid provided cpp configuration (#7350) --- Extension/src/LanguageServer/client.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index 2a952df3c7..43e733b7ce 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -2454,7 +2454,7 @@ export class DefaultClient implements Client { configuration: itemConfig }); } else { - console.warn("discarding invalid SourceFileConfigurationItem: " + item); + console.warn("discarding invalid SourceFileConfigurationItem: " + JSON.stringify(item)); } }); @@ -2511,7 +2511,7 @@ export class DefaultClient implements Client { sanitized = {...config}; if (!this.isWorkspaceBrowseConfiguration(sanitized)) { - console.log("Received an invalid browse configuration from configuration provider."); + console.log("Received an invalid browse configuration from configuration provider: " + JSON.stringify(sanitized)); const configValue: WorkspaceBrowseConfiguration | undefined = lastCustomBrowseConfiguration.Value; if (configValue) { sanitized = configValue; From ad6fd533988d1cc6a042a04397bd6642cbffab39 Mon Sep 17 00:00:00 2001 From: Syed Ahmad <64008512+HackintoshwithUbuntu@users.noreply.github.com> Date: Thu, 15 Apr 2021 16:27:47 +1000 Subject: [PATCH 19/48] update ${workspaceFolder} to ${fileDirname} #7362 --- Extension/src/Debugger/configurationProvider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Extension/src/Debugger/configurationProvider.ts b/Extension/src/Debugger/configurationProvider.ts index 08a34c8ef5..0e13093e21 100644 --- a/Extension/src/Debugger/configurationProvider.ts +++ b/Extension/src/Debugger/configurationProvider.ts @@ -194,7 +194,7 @@ class CppConfigurationProvider implements vscode.DebugConfigurationProvider { // This property will be removed before writing the DebugConfiguration in launch.json. newConfig.detail = task.detail ? task.detail : definition.command; const isCl: boolean = compilerName === "cl.exe"; - newConfig.cwd = isWindows && !isCl && !process.env.PATH?.includes(path.dirname(compilerPath)) ? path.dirname(compilerPath) : "${workspaceFolder}"; + newConfig.cwd = isWindows && !isCl && !process.env.PATH?.includes(path.dirname(compilerPath)) ? path.dirname(compilerPath) : "${fileDirname}"; return new Promise(resolve => { if (platform === "darwin") { From 91393ad80ebee54912c59accf63dfea2240c10be Mon Sep 17 00:00:00 2001 From: Syed Ahmad <64008512+HackintoshwithUbuntu@users.noreply.github.com> Date: Thu, 15 Apr 2021 16:29:10 +1000 Subject: [PATCH 20/48] update ${workspaceFolder} to ${fileDirname} #7362 --- Extension/src/Debugger/configurations.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Extension/src/Debugger/configurations.ts b/Extension/src/Debugger/configurations.ts index 5f809cb446..38fde7e595 100644 --- a/Extension/src/Debugger/configurations.ts +++ b/Extension/src/Debugger/configurations.ts @@ -42,7 +42,7 @@ function createLaunchString(name: string, type: string, executable: string): str "program": "${localize("enter.program.name", "enter program name, for example {0}", "$\{workspaceFolder\}" + "/" + executable).replace(/\"/g, "\\\"")}", "args": [], "stopAtEntry": false, -"cwd": "$\{workspaceFolder\}", +"cwd": "$\{fileDirname\}", "environment": [], ${ type === "cppdbg" ? `"externalConsole": false` : `"console": "externalTerminal"` } `; From e5abb36d32f34c88d3cf9a3b967b137b85949ddf Mon Sep 17 00:00:00 2001 From: csigs Date: Thu, 15 Apr 2021 09:58:45 -0700 Subject: [PATCH 21/48] Localization - Translated Strings (#7366) Co-authored-by: DevDiv Build Lab - Dev14 --- Extension/i18n/ptb/package.i18n.json | 2 +- Extension/i18n/ptb/src/main.i18n.json | 4 ++-- Extension/i18n/trk/package.i18n.json | 2 +- Extension/i18n/trk/src/main.i18n.json | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Extension/i18n/ptb/package.i18n.json b/Extension/i18n/ptb/package.i18n.json index 2d5dcc0ac5..89d779e791 100644 --- a/Extension/i18n/ptb/package.i18n.json +++ b/Extension/i18n/ptb/package.i18n.json @@ -170,7 +170,7 @@ "c_cpp.configuration.addNodeAddonIncludePaths.description": "Adicionar caminhos de inclusão de nan e node-addon-api quando eles forem dependências.", "c_cpp.configuration.renameRequiresIdentifier.description": "Se for true, 'Renomear Símbolo' exigirá um identificador C/C++ válido.", "c_cpp.configuration.autocompleteAddParentheses.description": "Se esta opção for true, o recurso Preenchimento Automático adicionará automaticamente \"(\" após as chamadas de função e, nesse caso, \")\" também poderá ser adicionado, dependendo do valor da configuração \"editor.autoClosingBrackets\".", - "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExclude.description": "Configure os padrões glob para excluir pastas (e arquivos se \"C_Cpp.exclusionPolicy\" for alterado). Eles são específicos para a extensão C/C++ e são adicionais a \"files.exclude\", mas ao contrário de \"files.exclude\", eles não são removidos da visualização do Explorer. Leia mais sobre padrões glob [aqui](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", "c_cpp.configuration.filesExcludeBoolean.description": "O padrão glob ao qual corresponder os caminhos do arquivo. Defina como true ou false para habilitar ou desabilitar o padrão.", "c_cpp.configuration.filesExcludeWhen.description": "Verificação adicional nos irmãos de um arquivo correspondente. Use $(basename) como variável para o nome do arquivo correspondente.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "Se esta configuração for true, a substituição do comando do shell do depurador usará o acento grave obsoleto (`).", diff --git a/Extension/i18n/ptb/src/main.i18n.json b/Extension/i18n/ptb/src/main.i18n.json index 411b81b57b..72da33c7b0 100644 --- a/Extension/i18n/ptb/src/main.i18n.json +++ b/Extension/i18n/ptb/src/main.i18n.json @@ -7,8 +7,8 @@ "architecture.not.supported": "Não há suporte para a arquitetura {0}. ", "apline.containers.not.supported": "Não há suporte para os contêineres do Alpine.", "download.button": "Ir para a Página de Download", - "native.binaries.mismatch.osx": "The macOS Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", - "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", + "native.binaries.mismatch.osx": "A versão macOS Intel da extensão foi instalada. Como você está em um Apple Silicon Mac, recomendamos instalar a versão Apple Silicon da extensão.", + "native.binaries.not.supported": "Esta versão {0} {1} da extensão é incompatível com seu sistema operacional. Baixe e instale a versão \"{2}\" da extensão.", "extension.installation.failed": "A extensão C/C++ não foi instalada com êxito. Será necessário reparar ou reinstalar a extensão dos recursos da linguagem C/C++ para que ela funcione corretamente.", "remove.extension": "Tentar Reparar", "jason.files.missing": "A extensão C/C++ não foi instalada com êxito. Será necessário reinstalar a extensão dos recursos da linguagem C/C++ para que ela funcione corretamente.", diff --git a/Extension/i18n/trk/package.i18n.json b/Extension/i18n/trk/package.i18n.json index f63bbee3cf..a985c618c3 100644 --- a/Extension/i18n/trk/package.i18n.json +++ b/Extension/i18n/trk/package.i18n.json @@ -170,7 +170,7 @@ "c_cpp.configuration.addNodeAddonIncludePaths.description": "nan ve node-addon-api bağımlılık olduğunda bunlardan ekleme yolları ekleyin.", "c_cpp.configuration.renameRequiresIdentifier.description": "True ise, 'Sembolü Yeniden Adlandır' işlemi için geçerli bir C/C++ tanımlayıcısı gerekir.", "c_cpp.configuration.autocompleteAddParentheses.description": "True ise otomatik tamamla özelliği, işlev çağrılarından sonra otomatik olarak \"(\" ekler. Bazı durumlarda \"editor.autoClosingBrackets\" ayarının değerine bağlı olarak \")\" karakteri de eklenebilir.", - "c_cpp.configuration.filesExclude.description": "Configure glob patterns for excluding folders (and files if \"C_Cpp.exclusionPolicy\" is changed). These are specific to the C/C++ extension and are in addition to \"files.exclude\", but unlike \"files.exclude\" they are not removed from the Explorer view. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", + "c_cpp.configuration.filesExclude.description": "Klasörleri (ve \"C_Cpp.exclusionPolicy\" değiştirilmişse dosyaları) dışlamak için glob desenlerini yapılandırın. Bunlar C/C++ uzantısına özgüdür ve \"files.exclude\" ayarına ektir ancak \"files.exclude\" ayarından farklı olarak Explorer görünümünden kaldırılmazlar. Glob desenleri hakkında [burada] (https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options) daha fazlasını okuyun.", "c_cpp.configuration.filesExcludeBoolean.description": "Dosya yollarıyla eşleşecek glob deseni. Deseni etkinleştirmek veya devre dışı bırakmak için true ya da false olarak ayarlayın.", "c_cpp.configuration.filesExcludeWhen.description": "Eşleşen bir dosyanın eşdüzey öğeleri üzerinde ek denetim. Eşleşen dosya adı için değişken olarak $(basename) kullanın.", "c_cpp.configuration.debugger.useBacktickCommandSubstitution.description": "True ise, hata ayıklayıcı kabuk komut değiştirme eski kesme işaretini (`) kullanır.", diff --git a/Extension/i18n/trk/src/main.i18n.json b/Extension/i18n/trk/src/main.i18n.json index a971fe9e07..8933d18172 100644 --- a/Extension/i18n/trk/src/main.i18n.json +++ b/Extension/i18n/trk/src/main.i18n.json @@ -7,8 +7,8 @@ "architecture.not.supported": "{0} mimarisi desteklemiyor.", "apline.containers.not.supported": "Alpine kapsayıcıları desteklenmiyor.", "download.button": "İndirmeler Sayfasına Git", - "native.binaries.mismatch.osx": "The macOS Intel version of the extension has been installed. Since you are on an Apple Silicon Mac, we recommend installing the Apple Silicon version of the extension.", - "native.binaries.not.supported": "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", + "native.binaries.mismatch.osx": "Uzantının macOS Intel sürümü yüklendi. Bir Apple Silicon Mac bilgisayar kullandığınızdan, uzantının Apple Silicon sürümünü yüklemenizi öneririz.", + "native.binaries.not.supported": "Uzantının bu {0} {1} sürümü, işletim sisteminizle uyumlu değil. Lütfen uzantının \"{2}\" sürümünü indirip yükleyin.", "extension.installation.failed": "C/C++ uzantısı başarıyla yüklenemedi. C/C++ dil özelliklerinin düzgün çalışması için uzantıyı onarmanız veya yeniden yüklemeniz gerekir.", "remove.extension": "Onarmayı Dene", "jason.files.missing": "C/C++ uzantısı başarıyla yüklenemedi. C/C++ dil özelliklerinin düzgün çalışabilmesi için uzantıyı yeniden yüklemeniz gerekir.", From 94ab7f9087093af21cce10c1c2fc07fa1f3c57fa Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Thu, 15 Apr 2021 12:45:22 -0700 Subject: [PATCH 22/48] Fix 32-bit Windows. (#7373) --- Extension/src/main.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Extension/src/main.ts b/Extension/src/main.ts index ee47ecec3f..8af94840a8 100644 --- a/Extension/src/main.ts +++ b/Extension/src/main.ts @@ -37,8 +37,8 @@ export async function activate(context: vscode.ExtensionContext): Promise Date: Thu, 15 Apr 2021 13:04:42 -0700 Subject: [PATCH 23/48] Attempt to fix random yarn timeout on Mac. (#7371) * Attempt to fix random yarn timeout on Mac. --- .github/workflows/ci_mac.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci_mac.yml b/.github/workflows/ci_mac.yml index 100123ccb9..a80f659a8a 100644 --- a/.github/workflows/ci_mac.yml +++ b/.github/workflows/ci_mac.yml @@ -19,7 +19,7 @@ jobs: node-version: 14.16.x - name: Install Dependencies - run: yarn install + run: yarn install --network-timeout 100000 working-directory: Extension - name: Generate hashes for runtime dependency packages From 1502b87e4728f80b5c7881d5381d7914dde71e32 Mon Sep 17 00:00:00 2001 From: Syed Ahmad <64008512+HackintoshwithUbuntu@users.noreply.github.com> Date: Fri, 16 Apr 2021 10:12:48 +1000 Subject: [PATCH 24/48] update ${workspaceFolder} to ${fileDirname} #7362 --- Extension/src/LanguageServer/cppBuildTaskProvider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Extension/src/LanguageServer/cppBuildTaskProvider.ts b/Extension/src/LanguageServer/cppBuildTaskProvider.ts index 10940e9b87..64532a4364 100644 --- a/Extension/src/LanguageServer/cppBuildTaskProvider.ts +++ b/Extension/src/LanguageServer/cppBuildTaskProvider.ts @@ -169,7 +169,7 @@ export class CppBuildTaskProvider implements TaskProvider { if (compilerArgs && compilerArgs.length > 0) { args = args.concat(compilerArgs); } - const cwd: string = isWindows && !isCl && !process.env.PATH?.includes(path.dirname(compilerPath)) ? path.dirname(compilerPath) : "${workspaceFolder}"; + const cwd: string = isWindows && !isCl && !process.env.PATH?.includes(path.dirname(compilerPath)) ? path.dirname(compilerPath) : "${fileDirname}"; const options: cp.ExecOptions | undefined = { cwd: cwd }; definition = { type: CppBuildTaskProvider.CppBuildScriptType, From 164a2962b6138c6dbd90742273da011bef632c6f Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Mon, 19 Apr 2021 14:53:42 -0700 Subject: [PATCH 25/48] Update changelog for 1.3.1. (#7391) * Update changelog for 1.3.1. * Update version. --- Extension/CHANGELOG.md | 7 +++++++ Extension/package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index 84eb0688e8..87678ec3c9 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -1,5 +1,12 @@ # C/C++ for Visual Studio Code Change Log +## Version 1.3.1: April 19, 2021 +### Bug Fixes +* Fix extension not activating when `/.vscode/c_cpp_properties.json` exists but no C/C++ file is open. [#7344](https://github.com/microsoft/vscode-cpptools/issues/7344) +* Fix logging for an invalid provider configuration. + * Yonggang Luo (@lygstate) [PR #7350](https://github.com/microsoft/vscode-cpptools/pull/7350) +* Fix extension activation with 32-bit Windows. [#7368](https://github.com/microsoft/vscode-cpptools/issues/7368) + ## Version 1.3.0: April 13, 2021 ### New Features * Add language service support for CUDA. diff --git a/Extension/package.json b/Extension/package.json index 4f6f882197..4432f12816 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -2,7 +2,7 @@ "name": "cpptools", "displayName": "C/C++", "description": "C/C++ IntelliSense, debugging, and code browsing.", - "version": "1.3.0-main", + "version": "1.3.1-main", "publisher": "ms-vscode", "icon": "LanguageCCPP_color_128x.png", "readme": "README.md", From a370b3d064ebc797328b3815e3033b6533e63773 Mon Sep 17 00:00:00 2001 From: Elaheh Rashedi Date: Tue, 20 Apr 2021 13:10:31 -0700 Subject: [PATCH 26/48] separate handling compiler squiggles from other paths (#7343) * separate compiler squiggles --- .../src/LanguageServer/configurations.ts | 118 +++++++++--------- Extension/src/common.ts | 26 ++++ 2 files changed, 85 insertions(+), 59 deletions(-) diff --git a/Extension/src/LanguageServer/configurations.ts b/Extension/src/LanguageServer/configurations.ts index 83ac2578a1..115521653c 100644 --- a/Extension/src/LanguageServer/configurations.ts +++ b/Extension/src/LanguageServer/configurations.ts @@ -1583,6 +1583,7 @@ export class CppProperties { // Check for path-related squiggles. let paths: string[] = []; + let compilerPath: string | undefined; for (const pathArray of [ (currentConfiguration.browse ? currentConfiguration.browse.path : undefined), currentConfiguration.includePath, currentConfiguration.macFrameworkPath, currentConfiguration.forcedInclude ]) { if (pathArray) { @@ -1597,11 +1598,12 @@ export class CppProperties { if (currentConfiguration.compilerPath) { // Unlike other cases, compilerPath may not start or end with " due to trimming of whitespace and the possibility of compiler args. - paths.push(`${currentConfiguration.compilerPath}`); + compilerPath = currentConfiguration.compilerPath; } // Resolve and split any environment variables paths = this.resolveAndSplit(paths, undefined, this.ExtendedEnvironment); + compilerPath = util.resolveVariables(compilerPath, this.ExtendedEnvironment).trim(); // Get the start/end for properties that are file-only. const forcedIncludeStart: number = curText.search(/\s*\"forcedInclude\"\s*:\s*\[/); @@ -1609,10 +1611,51 @@ export class CppProperties { const compileCommandsStart: number = curText.search(/\s*\"compileCommands\"\s*:\s*\"/); const compileCommandsEnd: number = compileCommandsStart === -1 ? -1 : curText.indexOf('"', curText.indexOf('"', curText.indexOf(":", compileCommandsStart)) + 1); const compilerPathStart: number = curText.search(/\s*\"compilerPath\"\s*:\s*\"/); - const compilerPathEnd: number = compilerPathStart === -1 ? -1 : curText.indexOf('"', curText.indexOf('"', curText.indexOf(":", compilerPathStart)) + 1) + 1; - + const compilerPathValueStart: number = curText.indexOf('"', curText.indexOf(":", compilerPathStart)); + const compilerPathEnd: number = compilerPathStart === -1 ? -1 : curText.indexOf('"', compilerPathValueStart + 1) + 1; const processedPaths: Set = new Set(); + // Validate compiler paths + let compilerPathNeedsQuotes: boolean = false; + let compilerMessage: string | undefined; + const compilerPathAndArgs: util.CompilerPathAndArgs = util.extractCompilerPathAndArgs(compilerPath); + // Don't squiggle invalid cl.exe paths because it could be for an older preview build. + if (compilerPathAndArgs.compilerName.toLowerCase() !== "cl.exe" && compilerPathAndArgs.compilerPath !== undefined) { + // Squiggle when the compiler's path has spaces without quotes but args are used. + compilerPathNeedsQuotes = (compilerPathAndArgs.additionalArgs && compilerPathAndArgs.additionalArgs.length > 0) + && !compilerPath.startsWith('"') + && compilerPathAndArgs.compilerPath.includes(" "); + compilerPath = compilerPathAndArgs.compilerPath; + // Don't squiggle if compiler path is resolving with environment path. + if (compilerPathNeedsQuotes || !compilerPath || !which.sync(compilerPath, { nothrow: true })) { + if (compilerPathNeedsQuotes) { + compilerMessage = localize("path.with.spaces", 'Compiler path with spaces and arguments is missing double quotes " around the path.'); + newSquiggleMetrics.CompilerPathMissingQuotes++; + } else if (!util.checkFileExistsSync(compilerPath)) { + compilerMessage = localize("path.is.not.a.file", "Path is not a file: {0}", compilerPath); + newSquiggleMetrics.PathNotAFile++; + } + } + } + const isWSL: boolean = isWindows && compilerPath.startsWith("/"); + let compilerPathExists: boolean = true; + if (this.rootUri) { + const checkPathExists: any = util.checkPathExistsSync(compilerPath, this.rootUri.fsPath + path.sep, isWindows, isWSL, true); + compilerPathExists = checkPathExists.pathExists; + compilerPath = checkPathExists.path; + } + if (!compilerPathExists) { + compilerMessage = localize('cannot.find2', "Cannot find \"{0}\".", compilerPath); + newSquiggleMetrics.PathNonExistent++; + } + if (compilerMessage) { + const diagnostic: vscode.Diagnostic = new vscode.Diagnostic( + new vscode.Range(document.positionAt(curTextStartOffset + compilerPathValueStart), + document.positionAt(curTextStartOffset + compilerPathEnd)), + compilerMessage, vscode.DiagnosticSeverity.Warning); + diagnostics.push(diagnostic); + } + // Validate paths for (const curPath of paths) { if (processedPaths.has(curPath)) { @@ -1621,7 +1664,6 @@ export class CppProperties { continue; } processedPaths.add(curPath); - const isCompilerPath: boolean = curPath === currentConfiguration.compilerPath; // Resolve special path cases. if (curPath === "${default}") { // TODO: Add squiggles for when the C_Cpp.default.* paths are invalid. @@ -1632,51 +1674,12 @@ export class CppProperties { if (!resolvedPath) { continue; } - - let compilerPathNeedsQuotes: boolean = false; - if (isCompilerPath) { - resolvedPath = resolvedPath.trim(); - const compilerPathAndArgs: util.CompilerPathAndArgs = util.extractCompilerPathAndArgs(resolvedPath); - if (compilerPathAndArgs.compilerName.toLowerCase() === "cl.exe") { - continue; // Don't squiggle invalid cl.exe paths because it could be for an older preview build. - } - if (compilerPathAndArgs.compilerPath === undefined) { - continue; - } - // Squiggle when the compiler's path has spaces without quotes but args are used. - compilerPathNeedsQuotes = (compilerPathAndArgs.additionalArgs && compilerPathAndArgs.additionalArgs.length > 0) - && !resolvedPath.startsWith('"') - && compilerPathAndArgs.compilerPath.includes(" "); - resolvedPath = compilerPathAndArgs.compilerPath; - - if (!compilerPathNeedsQuotes && which.sync(resolvedPath, {nothrow: true})) { - continue; // Don't squiggle if compiler path is resolving with environment path. - } - } - - const isWSL: boolean = isWindows && resolvedPath.startsWith("/"); let pathExists: boolean = true; - const existsWithExeAdded: (path: string) => boolean = (path: string) => isCompilerPath && isWindows && !isWSL && fs.existsSync(path + ".exe"); - if (!fs.existsSync(resolvedPath)) { - if (existsWithExeAdded(resolvedPath)) { - resolvedPath += ".exe"; - } else if (!this.rootUri) { - pathExists = false; - } else { - // Check again for a relative path. - const relativePath: string = this.rootUri.fsPath + path.sep + resolvedPath; - if (!fs.existsSync(relativePath)) { - if (existsWithExeAdded(resolvedPath)) { - resolvedPath += ".exe"; - } else { - pathExists = false; - } - } else { - resolvedPath = relativePath; - } - } + if (this.rootUri) { + const checkPathExists: any = util.checkPathExistsSync(resolvedPath, this.rootUri.fsPath + path.sep, isWindows, isWSL, false); + pathExists = checkPathExists.pathExists; + resolvedPath = checkPathExists.path; } - // Normalize path separators. if (path.sep === "/") { resolvedPath = resolvedPath.replace(/\\/g, path.sep); @@ -1701,6 +1704,9 @@ export class CppProperties { for (const curMatch of configMatches) { curOffset = curText.substr(endOffset).search(pattern) + endOffset; endOffset = curOffset + curMatch.length; + if (curOffset >= compilerPathStart && curOffset <= compilerPathEnd) { + continue; + } let message: string; if (!pathExists) { message = localize('cannot.find2', "Cannot find \"{0}\".", resolvedPath); @@ -1708,23 +1714,17 @@ export class CppProperties { } else { // Check for file versus path mismatches. if ((curOffset >= forcedIncludeStart && curOffset <= forcedeIncludeEnd) || - (curOffset >= compileCommandsStart && curOffset <= compileCommandsEnd) || - (curOffset >= compilerPathStart && curOffset <= compilerPathEnd)) { - if (compilerPathNeedsQuotes) { - message = localize("path.with.spaces", 'Compiler path with spaces and arguments is missing double quotes " around the path.'); - newSquiggleMetrics.CompilerPathMissingQuotes++; - } else { - if (util.checkFileExistsSync(resolvedPath)) { - continue; - } - message = localize("path.is.not.a.file", "Path is not a file: {0}", resolvedPath); - newSquiggleMetrics.PathNotAFile++; + (curOffset >= compileCommandsStart && curOffset <= compileCommandsEnd)) { + if (util.checkFileExistsSync(resolvedPath)) { + continue; } + message = localize("path.is.not.a.file", "Path is not a file: {0}", resolvedPath); + newSquiggleMetrics.PathNotAFile++; } else { if (util.checkDirectoryExistsSync(resolvedPath)) { continue; } - message = localize("path.is.not.a.directory", "Path is not a directory: {0}", resolvedPath); + message = localize("path.is.not.a.directory", "Path is not a directory: {0}", resolvedPath); newSquiggleMetrics.PathNotADirectory++; } } diff --git a/Extension/src/common.ts b/Extension/src/common.ts index f906154dcc..ccb12bead3 100644 --- a/Extension/src/common.ts +++ b/Extension/src/common.ts @@ -486,6 +486,32 @@ export function checkDirectoryExistsSync(dirPath: string): boolean { return false; } +/** Test whether a relative path exists */ +export function checkPathExistsSync(path: string, relativePath: string, isWindows: boolean, isWSL: boolean, isCompilerPath: boolean): { pathExists: boolean; path: string } { + let pathExists: boolean = true; + const existsWithExeAdded: (path: string) => boolean = (path: string) => isCompilerPath && isWindows && !isWSL && fs.existsSync(path + ".exe"); + if (!fs.existsSync(path)) { + if (existsWithExeAdded(path)) { + path += ".exe"; + } else if (!relativePath) { + pathExists = false; + } else { + // Check again for a relative path. + relativePath = relativePath + path; + if (!fs.existsSync(relativePath)) { + if (existsWithExeAdded(path)) { + path += ".exe"; + } else { + pathExists = false; + } + } else { + path = relativePath; + } + } + } + return { pathExists, path }; +} + /** Read the files in a directory */ export function readDir(dirPath: string): Promise { return new Promise((resolve) => { From 3ca675fd582509a7a0a6917072047baa11523de2 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson <49173979+Colengms@users.noreply.github.com> Date: Wed, 21 Apr 2021 12:12:55 -0700 Subject: [PATCH 27/48] Add action workflows for 'enhancement' label (#7398) --- .../enhancement-closer-no-milestone.yml | 30 ++++++++++++++++++ .../workflows/enhancement-closer-triage.yml | 30 ++++++++++++++++++ .github/workflows/enhancement-reopener.yml | 31 +++++++++++++++++++ 3 files changed, 91 insertions(+) create mode 100644 .github/workflows/enhancement-closer-no-milestone.yml create mode 100644 .github/workflows/enhancement-closer-triage.yml create mode 100644 .github/workflows/enhancement-reopener.yml diff --git a/.github/workflows/enhancement-closer-no-milestone.yml b/.github/workflows/enhancement-closer-no-milestone.yml new file mode 100644 index 0000000000..d60cdc05e0 --- /dev/null +++ b/.github/workflows/enhancement-closer-no-milestone.yml @@ -0,0 +1,30 @@ +name: Enhancement Closer (no milestone) +on: + schedule: + - cron: 50 11 * * * # Run at 11:50 AM UTC (3:50 AM PST, 4:50 AM PDT) + workflow_dispatch: + inputs: + readonly: + description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub" + default: false + +jobs: + main: + runs-on: ubuntu-latest + steps: + - name: Checkout Actions + uses: actions/checkout@v2 + - name: Install Actions + run: cd ./.github/actions && npm install --production && cd ../.. + - name: Stale Closer + uses: ./.github/actions/StaleCloser + with: + readonly: ${{ github.event.inputs.readonly }} + labels: enhancement + ignoreLabels: debugger,internal,Feature Request + addLabels: more votes needed + closeDays: 60 + maximumVotes: 2 + closeComment: "This feature request is being closed due to insufficient upvotes. When enough upvotes are received, this issue will be eligible for our backlog." + setMilestoneId: 30 + ignoreMilestoneNames: "*" diff --git a/.github/workflows/enhancement-closer-triage.yml b/.github/workflows/enhancement-closer-triage.yml new file mode 100644 index 0000000000..cda38dc32c --- /dev/null +++ b/.github/workflows/enhancement-closer-triage.yml @@ -0,0 +1,30 @@ +name: Enhancement Closer (Triage) +on: + schedule: + - cron: 40 11 * * * # Run at 11:40 AM UTC (3:40 AM PST, 4:40 AM PDT) + workflow_dispatch: + inputs: + readonly: + description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub" + default: false + +jobs: + main: + runs-on: ubuntu-latest + steps: + - name: Checkout Actions + uses: actions/checkout@v2 + - name: Install Actions + run: cd ./.github/actions && npm install --production && cd ../.. + - name: Stale Closer + uses: ./.github/actions/StaleCloser + with: + readonly: ${{ github.event.inputs.readonly }} + labels: enhancement + ignoreLabels: debugger,internal,Feature Request + addLabels: more votes needed + closeDays: 60 + maximumVotes: 2 + closeComment: "This feature request is being closed due to insufficient upvotes. When enough upvotes are received, this issue will be eligible for our backlog." + milestoneName: Triage + milestoneId: 30 diff --git a/.github/workflows/enhancement-reopener.yml b/.github/workflows/enhancement-reopener.yml new file mode 100644 index 0000000000..28fe260a2e --- /dev/null +++ b/.github/workflows/enhancement-reopener.yml @@ -0,0 +1,31 @@ +name: Enhancement Reopener +on: + schedule: + - cron: 20 12 * * * # Run at 12:20 PM UTC (4:20 AM PST, 5:20 AM PDT) + workflow_dispatch: + inputs: + readonly: + description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub" + default: false + +jobs: + main: + runs-on: ubuntu-latest + steps: + - name: Checkout Actions + uses: actions/checkout@v2 + - name: Install Actions + run: cd ./.github/actions && npm install --production && cd ../.. + - name: Run Reopener + uses: ./.github/actions/Reopener + with: + readonly: ${{ github.event.inputs.readonly }} + alsoApplyToOpenIssues: true + reopenComment: This feature request has received enough votes to be added to our backlog. + labels: enhancement + minimumVotes: 3 + ignoreLabels: debugger,internal,Feature Request + milestoneId: 30 + milestoneName: Triage + setMilestoneId: 28 + removeLabels: more votes needed From ce9ab284891f3bff7db6714b57b586da2abe0665 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson <49173979+Colengms@users.noreply.github.com> Date: Wed, 21 Apr 2021 12:22:49 -0700 Subject: [PATCH 28/48] Remove VSIX binary compat warning on some platform/arch combos (#7397) --- Extension/src/main.ts | 76 ++++++++++++++++++------------------------- 1 file changed, 31 insertions(+), 45 deletions(-) diff --git a/Extension/src/main.ts b/Extension/src/main.ts index 8af94840a8..3c8dc722bf 100644 --- a/Extension/src/main.ts +++ b/Extension/src/main.ts @@ -75,8 +75,6 @@ export async function activate(context: vscode.ExtensionContext): Promise = new PersistentState("CPP.promptForMacArchictureMismatch", true); - // Read archictures of binaries from install.lock const fileContents: string = await util.readFileText(util.getInstallLockPath()); // Assume current platform if install.lock is empty. @@ -94,54 +92,42 @@ export async function activate(context: vscode.ExtensionContext): Promise { - if (selection === downloadLink) { - vscode.env.openExternal(vscode.Uri.parse(releaseDownloadUrl)); - } - }); + errMsg = localize("native.binaries.not.supported", "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", GetOSName(installedPlatformAndArchitecture.platform), installedPlatformAndArchitecture.architecture, vsixName); + vscode.window.showErrorMessage(errMsg, downloadLink).then(async (selection) => { + if (selection === downloadLink) { + vscode.env.openExternal(vscode.Uri.parse(releaseDownloadUrl)); } - } else { - // Reset the persistent boolean tracking whether to warn the user of architecture mismatch on OSX. - promptForMacArchictureMismatch.Value = true; - errMsg = localize("native.binaries.not.supported", "This {0} {1} version of the extension is incompatible with your OS. Please download and install the \"{2}\" version of the extension.", GetOSName(installedPlatformAndArchitecture.platform), installedPlatformAndArchitecture.architecture, vsixName); - vscode.window.showErrorMessage(errMsg, downloadLink).then(async (selection) => { - if (selection === downloadLink) { - vscode.env.openExternal(vscode.Uri.parse(releaseDownloadUrl)); - } - }); - } - } else { - // Reset the persistent boolean tracking whether to warn the user of architecture mismatch on OSX. - promptForMacArchictureMismatch.Value = true; - if (!(await util.checkInstallBinariesExist())) { - errMsg = localize("extension.installation.failed", "The C/C++ extension failed to install successfully. You will need to repair or reinstall the extension for C/C++ language features to function properly."); - const reload: string = localize("remove.extension", "Attempt to Repair"); - vscode.window.showErrorMessage(errMsg, reload).then(async (value?: string) => { - if (value === reload) { - await util.removeInstallLockFile(); - vscode.commands.executeCommand("workbench.action.reloadWindow"); - } - }); - } else if (!(await util.checkInstallJsonsExist())) { - // Check the Json files to declare if the extension has been installed successfully. - errMsg = localize("jason.files.missing", "The C/C++ extension failed to install successfully. You will need to reinstall the extension for C/C++ language features to function properly."); - const downloadLink: string = localize("download.button", "Go to Download Page"); - vscode.window.showErrorMessage(errMsg, downloadLink).then(async (selection) => { - if (selection === downloadLink) { - vscode.env.openExternal(vscode.Uri.parse(releaseDownloadUrl)); - } - }); - } + }); + } else if (!(await util.checkInstallBinariesExist())) { + errMsg = localize("extension.installation.failed", "The C/C++ extension failed to install successfully. You will need to repair or reinstall the extension for C/C++ language features to function properly."); + const reload: string = localize("remove.extension", "Attempt to Repair"); + vscode.window.showErrorMessage(errMsg, reload).then(async (value?: string) => { + if (value === reload) { + await util.removeInstallLockFile(); + vscode.commands.executeCommand("workbench.action.reloadWindow"); + } + }); + } else if (!(await util.checkInstallJsonsExist())) { + // Check the Json files to declare if the extension has been installed successfully. + errMsg = localize("jason.files.missing", "The C/C++ extension failed to install successfully. You will need to reinstall the extension for C/C++ language features to function properly."); + const downloadLink: string = localize("download.button", "Go to Download Page"); + vscode.window.showErrorMessage(errMsg, downloadLink).then(async (selection) => { + if (selection === downloadLink) { + vscode.env.openExternal(vscode.Uri.parse(releaseDownloadUrl)); + } + }); } return cppTools; From b00eaa2670f51f3f3ea2e9240c99532642b0f7b2 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson <49173979+Colengms@users.noreply.github.com> Date: Fri, 23 Apr 2021 13:42:20 -0700 Subject: [PATCH 29/48] Some cleanup of use of zipfile (#7410) --- Extension/src/LanguageServer/extension.ts | 25 ++++--- Extension/src/packageManager.ts | 91 +++++++++++++++++------ 2 files changed, 82 insertions(+), 34 deletions(-) diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index b51a4e2449..11efb88d2f 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -60,23 +60,26 @@ let vcpkgDbPromise: Promise; function initVcpkgDatabase(): Promise { return new Promise((resolve, reject) => { yauzl.open(util.getExtensionFilePath('VCPkgHeadersDatabase.zip'), { lazyEntries: true }, (err? : Error, zipfile?: yauzl.ZipFile) => { + // Resolves with an empty database instead of rejecting on failure. + const database: vcpkgDatabase = {}; if (err || !zipfile) { - resolve({}); + resolve(database); return; } - zipfile.readEntry(); - let dbFound: boolean = false; + // Waits until the input file is closed before resolving. + zipfile.on('close', () => { + resolve(database); + }); zipfile.on('entry', entry => { if (entry.fileName !== 'VCPkgHeadersDatabase.txt') { + zipfile.readEntry(); return; } - dbFound = true; zipfile.openReadStream(entry, (err?: Error, stream?: Readable) => { if (err || !stream) { - resolve({}); + zipfile.close(); return; } - const database: vcpkgDatabase = {}; const reader: rd.ReadLine = rd.createInterface(stream); reader.on('line', (lineText: string) => { const portFilePair: string[] = lineText.split(':'); @@ -94,15 +97,13 @@ function initVcpkgDatabase(): Promise { database[relativeHeader].push(portName); }); reader.on('close', () => { - resolve(database); + // We found the one file we wanted. + // It's OK to close instead of progressing through more files in the zip. + zipfile.close(); }); }); }); - zipfile.on('end', () => { - if (!dbFound) { - resolve({}); - } - }); + zipfile.readEntry(); }); }); } diff --git a/Extension/src/packageManager.ts b/Extension/src/packageManager.ts index 5657e29377..7c9d900371 100644 --- a/Extension/src/packageManager.ts +++ b/Extension/src/packageManager.ts @@ -364,17 +364,31 @@ export class PackageManager { return reject(new PackageManagerError('Downloaded file unavailable', localize("downloaded.unavailable", 'Downloaded file unavailable'), 'InstallPackage', pkg)); } - yauzl.fromFd(pkg.tmpFile.fd, { lazyEntries: true }, (err, zipfile) => { + yauzl.fromFd(pkg.tmpFile.fd, { lazyEntries: true, autoClose: true }, (err, zipfile) => { if (err || !zipfile) { return reject(new PackageManagerError('Zip file error', localize("zip.file.error", 'Zip file error'), 'InstallPackage', pkg, err)); } // setup zip file events - zipfile.on('end', resolve); - zipfile.on('error', err => reject(new PackageManagerError('Zip file error', localize("zip.file.error", 'Zip file error'), 'InstallPackage', pkg, err, err.code))); + // Keep track of any error that occurs, but don't resolve or reject the promise until the file is closed. + let pendingError: Error | undefined; + zipfile.on('close', () => { + if (!pendingError) { + resolve(); + } else { + reject(pendingError); + } + }); - zipfile.readEntry(); + zipfile.on('error', err => { + // Don't call reject() a second time. + // Errors can also arise from readStream and writeStream. + if (!pendingError) { + pendingError = new PackageManagerError('Zip file error', localize("zip.file.error", 'Zip file error'), 'InstallPackage', pkg, err, err.code); + zipfile.close(); + } + }); zipfile.on('entry', (entry: yauzl.Entry) => { const absoluteEntryPath: string = util.getExtensionFilePath(entry.fileName); @@ -383,7 +397,9 @@ export class PackageManager { // Directory - create it mkdirp(absoluteEntryPath, { mode: 0o775 }, (err) => { if (err) { - return reject(new PackageManagerError('Error creating directory', localize("create.directory.error", 'Error creating directory'), 'InstallPackage', pkg, err, err.code)); + pendingError = new PackageManagerError('Error creating directory', localize("create.directory.error", 'Error creating directory'), 'InstallPackage', pkg, err, err.code); + zipfile.close(); + return; } zipfile.readEntry(); @@ -394,25 +410,28 @@ export class PackageManager { // File - extract it zipfile.openReadStream(entry, (err, readStream: Readable | undefined) => { if (err || !readStream) { - return reject(new PackageManagerError('Error reading zip stream', localize("zip.stream.error", 'Error reading zip stream'), 'InstallPackage', pkg, err)); + pendingError = new PackageManagerError('Error reading zip stream', localize("zip.stream.error", 'Error reading zip stream'), 'InstallPackage', pkg, err); + zipfile.close(); + return; } - readStream.on('error', (err) => - reject(new PackageManagerError('Error in readStream', localize("read.stream.error", 'Error in read stream'), 'InstallPackage', pkg, err))); - mkdirp(path.dirname(absoluteEntryPath), { mode: 0o775 }, async (err) => { if (err) { - return reject(new PackageManagerError('Error creating directory', localize("create.directory.error", 'Error creating directory'), 'InstallPackage', pkg, err, err.code)); + pendingError = new PackageManagerError('Error creating directory', localize("create.directory.error", 'Error creating directory'), 'InstallPackage', pkg, err, err.code); + zipfile.close(); + return; } // Create as a .tmp file to avoid partially unzipped files // counting as completed files. const absoluteEntryTempFile: string = absoluteEntryPath + ".tmp"; - if (fs.existsSync(absoluteEntryTempFile)) { + if (await util.checkFileExists(absoluteEntryTempFile)) { try { await util.unlinkAsync(absoluteEntryTempFile); } catch (err) { - return reject(new PackageManagerError(`Error unlinking file ${absoluteEntryTempFile}`, localize("unlink.error", "Error unlinking file {0}", absoluteEntryTempFile), 'InstallPackage', pkg, err)); + pendingError = new PackageManagerError(`Error unlinking file ${absoluteEntryTempFile}`, localize("unlink.error", "Error unlinking file {0}", absoluteEntryTempFile), 'InstallPackage', pkg, err); + zipfile.close(); + return; } } @@ -421,19 +440,45 @@ export class PackageManager { const writeStream: fs.WriteStream = fs.createWriteStream(absoluteEntryTempFile, { mode: fileMode }); writeStream.on('close', async () => { - try { - // Remove .tmp extension from the file. - await util.renameAsync(absoluteEntryTempFile, absoluteEntryPath); - } catch (err) { - return reject(new PackageManagerError(`Error renaming file ${absoluteEntryTempFile}`, localize("rename.error", "Error renaming file {0}", absoluteEntryTempFile), 'InstallPackage', pkg, err)); + // Remove .tmp extension from the file, if there was no error. + // Otherwise, delete it. + // Don't move on to the next entry, if we've already called reject(), in + // which case zipfile.close() will already have been called. + if (!pendingError) { + try { + await util.renameAsync(absoluteEntryTempFile, absoluteEntryPath); + } catch (err) { + pendingError = new PackageManagerError(`Error renaming file ${absoluteEntryTempFile}`, localize("rename.error", "Error renaming file {0}", absoluteEntryTempFile), 'InstallPackage', pkg, err); + zipfile.close(); + return; + } + // Wait until output is done writing before reading the next zip entry. + // Otherwise, it's possible to try to launch the .exe before it is done being created. + zipfile.readEntry(); + } else { + try { + await util.unlinkAsync(absoluteEntryTempFile); + } catch (err) { + // Ignore failure to delete temp file. We already have an error to return. + } + } + }); + + readStream.on('error', (err) => { + // Don't call reject() a second time. + if (!pendingError) { + pendingError = new PackageManagerError('Error in readStream', localize("read.stream.error", 'Error in read stream'), 'InstallPackage', pkg, err); + zipfile.close(); } - // Wait till output is done writing before reading the next zip entry. - // Otherwise, it's possible to try to launch the .exe before it is done being created. - zipfile.readEntry(); }); - writeStream.on('error', (err) => - reject(new PackageManagerError('Error in writeStream', localize("write.stream.error", 'Error in write stream'), 'InstallPackage', pkg, err))); + writeStream.on('error', (err) => { + // Don't call reject() a second time. + if (!pendingError) { + pendingError = new PackageManagerError('Error in writeStream', localize("write.stream.error", 'Error in write stream'), 'InstallPackage', pkg, err); + zipfile.close(); + } + }); readStream.pipe(writeStream); }); @@ -448,6 +493,8 @@ export class PackageManager { }); } }); + + zipfile.readEntry(); }); }).then(() => { // Clean up temp file From 740c1418879fc4de750ccfa5bd421d9d6bf25561 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Fri, 23 Apr 2021 14:22:42 -0700 Subject: [PATCH 30/48] Update common.json. (#7416) --- Extension/bin/common.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Extension/bin/common.json b/Extension/bin/common.json index bf6e470e33..ae5b8b3ebf 100644 --- a/Extension/bin/common.json +++ b/Extension/bin/common.json @@ -26,8 +26,8 @@ "replace": "--using_directory\n$1" }, { - "match": "^/dE--header_only_fallback", - "replace": "--header_only_fallback" + "match": "^/dE--(.*)", + "replace": "--$1" } ] } \ No newline at end of file From 76f22333e63505f7ac5e0af59f34ac7fb7713e21 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Fri, 23 Apr 2021 14:48:30 -0700 Subject: [PATCH 31/48] Update environement description. (#7417) --- Extension/package.nls.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Extension/package.nls.json b/Extension/package.nls.json index e65c5588bc..ac66730354 100644 --- a/Extension/package.nls.json +++ b/Extension/package.nls.json @@ -203,7 +203,7 @@ "c_cpp.debuggers.cppdbg.visualizerFile.description": ".natvis file to be used when debugging this process. This option is not compatible with GDB pretty printing. Please also see \"showDisplayString\" if using this setting.", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": ".natvis file to be used when debugging this process.", "c_cpp.debuggers.showDisplayString.description": "When a visualizerFile is specified, showDisplayString will enable the display string. Turning this option on can cause slower performance during debugging.", - "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"squid\", \"value\": \"clam\" } ].", + "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", "c_cpp.debuggers.envFile.description": "Absolute path to a file containing environment variable definitions. This file has key value pairs separated by an equals sign per line. E.g. KEY=VALUE", "c_cpp.debuggers.additionalSOLibSearchPath.description": "Semicolon separated list of directories to use to search for .so files. Example: \"c:\\dir1;c:\\dir2\".", "c_cpp.debuggers.MIMode.description": "Indicates the console debugger that the MIDebugEngine will connect to. Allowed values are \"gdb\" \"lldb\".", From 38e90ce750f52ba88f867327223db9037edc5926 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Fri, 30 Apr 2021 16:35:47 -0700 Subject: [PATCH 32/48] Update fwlinks for clang-format 12 (#7447) * Update fwlinks for clang-format. * Update hashes. --- Extension/package.json | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/Extension/package.json b/Extension/package.json index 4432f12816..2a7f90d660 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -2598,7 +2598,7 @@ }, { "description": "ClangFormat (Linux / x86_64)", - "url": "https://go.microsoft.com/fwlink/?LinkID=2152861", + "url": "https://go.microsoft.com/fwlink/?LinkID=2162325", "platforms": [ "linux" ], @@ -2608,11 +2608,11 @@ "binaries": [ "./LLVM/bin/clang-format" ], - "integrity": "B29779E4FE3D03094655FD24CC17B55B41518EDDCCB1E3DF3F4665F9685152E0" + "integrity": "3F10BAD92274A07DB5DE0FD922C0CEDA034DECDB9E73DC477DD43CF30B500A7B" }, { "description": "ClangFormat (Linux / armhf)", - "url": "https://go.microsoft.com/fwlink/?LinkID=2152860", + "url": "https://go.microsoft.com/fwlink/?LinkID=2162327", "platforms": [ "linux" ], @@ -2622,11 +2622,11 @@ "binaries": [ "./LLVM/bin/clang-format" ], - "integrity": "F1CD21F581715A2C2A3B10C8D33FF81E5CBCD58856AA73CA56A88B5F085EA0D7" + "integrity": "1098291D78FB3E9411C445218BE14D1A96E7242E0B70549DA499C6551D8CA538" }, { "description": "ClangFormat (Linux / aarch64)", - "url": "https://go.microsoft.com/fwlink/?LinkID=2152922", + "url": "https://go.microsoft.com/fwlink/?LinkID=2162412", "platforms": [ "linux" ], @@ -2636,11 +2636,11 @@ "binaries": [ "./LLVM/bin/clang-format" ], - "integrity": "97B2A5A274F53FBB37485A383AD379CD556E85413BF843F0F0FD10536A0D705D" + "integrity": "CD5578A21C8D515D15C0611621E44C03DE4E667EFB4EE1A0DE18B08FD9B96794" }, { "description": "ClangFormat (OS X)", - "url": "https://go.microsoft.com/fwlink/?LinkID=2152859", + "url": "https://go.microsoft.com/fwlink/?LinkID=2162416", "platforms": [ "darwin" ], @@ -2650,11 +2650,11 @@ "binaries": [ "./LLVM/bin/clang-format.darwin" ], - "integrity": "7AA436BA25E3404DC658A137188BEC65FF2532D1FEB314ABBBC5EBC9AAF5CCF7" + "integrity": "62A2ECB43511129F920D87BAE9230A803B54712038BCCB485F8F10B84B1A2000" }, { "description": "ClangFormat (OS X arm64)", - "url": "https://go.microsoft.com/fwlink/?LinkID=2160917", + "url": "https://go.microsoft.com/fwlink/?LinkID=2162413", "platforms": [ "darwin" ], @@ -2664,11 +2664,11 @@ "binaries": [ "./LLVM/bin/clang-format.darwin" ], - "integrity": "BF5357714856AC08A69FAD4231C9EFBE47E97497D8E227E1506FCAA1C89D11E0" + "integrity": "90AD3B05EC9C0A706C440B99AC39000F97EFE8BBAB9A000834E18F8112468147" }, { "description": "ClangFormat (Windows x86)", - "url": "https://go.microsoft.com/fwlink/?LinkID=2152921", + "url": "https://go.microsoft.com/fwlink/?LinkID=2162326", "platforms": [ "win32" ], @@ -2678,11 +2678,11 @@ "binaries": [ "./LLVM/bin/clang-format.exe" ], - "integrity": "993A65F61F4BF6CA6FEF6F9C1B6EB4341CE63F30A72272CABA65392695764DA7" + "integrity": "928AF7C36F0E148537D8DF4D7AEEAD8A18DF9E4CA5C8BF23E49776EFBE078453" }, { "description": "ClangFormat (Windows x64)", - "url": "https://go.microsoft.com/fwlink/?LinkID=2152923", + "url": "https://go.microsoft.com/fwlink/?LinkID=2162415", "platforms": [ "win32" ], @@ -2692,11 +2692,11 @@ "binaries": [ "./LLVM/bin/clang-format.exe" ], - "integrity": "5E271FD44792B3675136A34466F67A876174B7818533CF37486372E43E014E62" + "integrity": "7977B82D6BD88C1AEB5071146EDCB45976D1EA66E312EEF9156957CAD0702F35" }, { "description": "ClangFormat (Windows arm64)", - "url": "https://go.microsoft.com/fwlink/?LinkID=2152862", + "url": "https://go.microsoft.com/fwlink/?LinkID=2162414", "platforms": [ "win32" ], @@ -2706,7 +2706,7 @@ "binaries": [ "./LLVM/bin/clang-format.exe" ], - "integrity": "9944827F70A8C53127B1A7860401923DED2DB7FBAD75E7A8106636891C11F832" + "integrity": "6756365C82B5BD90C6A40C13CF8E3599E4A1DB50628111FFDB3A76FF85256BA4" }, { "description": "Mono Framework Assemblies", From 19db7fe4b5bc515ee01162a08911feb2a76a6dd3 Mon Sep 17 00:00:00 2001 From: Philip Craig <689193+philipcraig@users.noreply.github.com> Date: Sat, 1 May 2021 00:53:51 +0100 Subject: [PATCH 33/48] Fix typo "apline" to "alpine" (#7438) --- Extension/i18n/chs/src/main.i18n.json | 2 +- Extension/i18n/cht/src/main.i18n.json | 2 +- Extension/i18n/csy/src/main.i18n.json | 2 +- Extension/i18n/deu/src/main.i18n.json | 2 +- Extension/i18n/esn/src/main.i18n.json | 2 +- Extension/i18n/fra/src/main.i18n.json | 2 +- Extension/i18n/ita/src/main.i18n.json | 2 +- Extension/i18n/jpn/src/main.i18n.json | 2 +- Extension/i18n/kor/src/main.i18n.json | 2 +- Extension/i18n/plk/src/main.i18n.json | 2 +- Extension/i18n/ptb/src/main.i18n.json | 2 +- Extension/i18n/rus/src/main.i18n.json | 2 +- Extension/i18n/trk/src/main.i18n.json | 2 +- Extension/src/main.ts | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Extension/i18n/chs/src/main.i18n.json b/Extension/i18n/chs/src/main.i18n.json index 878b99fd6e..a99c1f9611 100644 --- a/Extension/i18n/chs/src/main.i18n.json +++ b/Extension/i18n/chs/src/main.i18n.json @@ -5,7 +5,7 @@ // Do not edit this file. It is machine generated. { "architecture.not.supported": "体系结构 {0} 不受支持。", - "apline.containers.not.supported": "Alpine 容器不受支持。", + "alpine.containers.not.supported": "Alpine 容器不受支持。", "download.button": "转到下载页", "native.binaries.mismatch.osx": "MacOS Intel 版本的扩展已安装。 由于你使用的是 Apple Silicon Mac,我们建议你安装 Apple Silicon 版本的扩展。", "native.binaries.not.supported": "此 {0} {1} 版本的扩展与你的 OS 不兼容,请下载并安装 \"{2}\" 版本的扩展。", diff --git a/Extension/i18n/cht/src/main.i18n.json b/Extension/i18n/cht/src/main.i18n.json index 4b831466d1..9c15a4f47d 100644 --- a/Extension/i18n/cht/src/main.i18n.json +++ b/Extension/i18n/cht/src/main.i18n.json @@ -5,7 +5,7 @@ // Do not edit this file. It is machine generated. { "architecture.not.supported": "不支援架構 {0}。 ", - "apline.containers.not.supported": "不支援 Alpine 容器。", + "alpine.containers.not.supported": "不支援 Alpine 容器。", "download.button": "前往 [下載\ 頁面", "native.binaries.mismatch.osx": "已安裝 macOS Intel 版延伸模組。因為您使用的是 Apple Silicon Mac,建議您安裝 Apple Silicon 版延伸模組。", "native.binaries.not.supported": "此 {0} {1} 版延伸模組與您的作業系統不相容。請下載並安裝 \"{2}\" 版延伸模組。", diff --git a/Extension/i18n/csy/src/main.i18n.json b/Extension/i18n/csy/src/main.i18n.json index 8a605834f5..a859d2c8c5 100644 --- a/Extension/i18n/csy/src/main.i18n.json +++ b/Extension/i18n/csy/src/main.i18n.json @@ -5,7 +5,7 @@ // Do not edit this file. It is machine generated. { "architecture.not.supported": "Architektura {0} se nepodporuje. ", - "apline.containers.not.supported": "Kontejnery Alpine se nepodporují.", + "alpine.containers.not.supported": "Kontejnery Alpine se nepodporují.", "download.button": "Přejít na stránku stahování", "native.binaries.mismatch.osx": "Verze rozšíření macOSu pro Intel se nainstalovala. Vzhledem k tomu, že používáte Apple Silicon Mac, doporučujeme nainstalovat verzi rozšíření Apple Silicon.", "native.binaries.not.supported": "Tato verze rozšíření pro {0} {1} není kompatibilní s vaším operačním systémem. Stáhněte a nainstalujte si prosím verzi rozšíření {2}.", diff --git a/Extension/i18n/deu/src/main.i18n.json b/Extension/i18n/deu/src/main.i18n.json index fa0c34ebe4..3a2188ce2a 100644 --- a/Extension/i18n/deu/src/main.i18n.json +++ b/Extension/i18n/deu/src/main.i18n.json @@ -5,7 +5,7 @@ // Do not edit this file. It is machine generated. { "architecture.not.supported": "Die Architektur \"{0}\" wird nicht unterstützt. ", - "apline.containers.not.supported": "Alpine-Container werden nicht unterstützt.", + "alpine.containers.not.supported": "Alpine-Container werden nicht unterstützt.", "download.button": "Gehe zu Downloadseite", "native.binaries.mismatch.osx": "Die macOS Intel-Version der Erweiterung wurde installiert. Da Sie sich auf einem Apple Silicon Mac befinden, empfehlen wir die Installation der Apple Silicon-Version der Erweiterung.", "native.binaries.not.supported": "Diese Version {0} {1} der Erweiterung ist nicht mit Ihrem Betriebssystem kompatibel. Laden Sie Version \"{2}\" der Erweiterung herunter, und installieren Sie sie.", diff --git a/Extension/i18n/esn/src/main.i18n.json b/Extension/i18n/esn/src/main.i18n.json index af379f4659..706cb7ebe9 100644 --- a/Extension/i18n/esn/src/main.i18n.json +++ b/Extension/i18n/esn/src/main.i18n.json @@ -5,7 +5,7 @@ // Do not edit this file. It is machine generated. { "architecture.not.supported": "La arquitectura {0} no se admite. ", - "apline.containers.not.supported": "Los contenedores de Alpine no se admiten.", + "alpine.containers.not.supported": "Los contenedores de Alpine no se admiten.", "download.button": "Ir a la página de descarga", "native.binaries.mismatch.osx": "Se ha instalado la versión de Intel de macOS de la extensión. Como se trata de un equipo multiusuario de Apple Silicon, se recomienda instalar la versión de Apple Silicon de la extensión.", "native.binaries.not.supported": "La versión para {0} {1} de la extensión no es compatible con el sistema operativo. Descargue la versión \"{2}\" de la extensión e instálela.", diff --git a/Extension/i18n/fra/src/main.i18n.json b/Extension/i18n/fra/src/main.i18n.json index 5ddbe41155..43e8609f9e 100644 --- a/Extension/i18n/fra/src/main.i18n.json +++ b/Extension/i18n/fra/src/main.i18n.json @@ -5,7 +5,7 @@ // Do not edit this file. It is machine generated. { "architecture.not.supported": "L'architecture {0} n'est pas prise en charge. ", - "apline.containers.not.supported": "Les conteneurs Alpine ne sont pas pris en charge.", + "alpine.containers.not.supported": "Les conteneurs Alpine ne sont pas pris en charge.", "download.button": "Accéder à la page de téléchargement", "native.binaries.mismatch.osx": "La version macOS Intel de l’extension a été installée. Dans la mesure où vous êtes sur Apple Silicon Mac, nous vous recommandons d’installer la version Apple Silicon de l’extension.", "native.binaries.not.supported": "Cette version {0} {1} de l'extension est incompatible avec votre système d'exploitation. Téléchargez et installez la version {2} de l'extension.", diff --git a/Extension/i18n/ita/src/main.i18n.json b/Extension/i18n/ita/src/main.i18n.json index 717ed2fc0d..adbc7958ca 100644 --- a/Extension/i18n/ita/src/main.i18n.json +++ b/Extension/i18n/ita/src/main.i18n.json @@ -5,7 +5,7 @@ // Do not edit this file. It is machine generated. { "architecture.not.supported": "L'architettura {0} non è supportata. ", - "apline.containers.not.supported": "I contenitori Alpine non sono supportati.", + "alpine.containers.not.supported": "I contenitori Alpine non sono supportati.", "download.button": "Vai alla pagina di download", "native.binaries.mismatch.osx": "La versione per macOS Intel dell'estensione è stata installata. Dal momento che stai usando una Mac Apple Silicon, ti raccomandiamo di installare la versione per Apple Silicon dell'estensione.", "native.binaries.not.supported": "La versione {0} {1} dell'estensione non è compatibile con il sistema operativo. Scaricare e installare la versione \"{2}\" dell'estensione.", diff --git a/Extension/i18n/jpn/src/main.i18n.json b/Extension/i18n/jpn/src/main.i18n.json index 18461bed2c..23f99c2acb 100644 --- a/Extension/i18n/jpn/src/main.i18n.json +++ b/Extension/i18n/jpn/src/main.i18n.json @@ -5,7 +5,7 @@ // Do not edit this file. It is machine generated. { "architecture.not.supported": "アーキテクチャ {0} はサポートされていません。", - "apline.containers.not.supported": "Alpine コンテナーはサポートされていません。", + "alpine.containers.not.supported": "Alpine コンテナーはサポートされていません。", "download.button": "ダウンロード ページへ移動", "native.binaries.mismatch.osx": "MacOS Intel 版の拡張機能がインストールされました。Apple Silicon Mac を使用しているため、拡張機能の Apple Silicon バージョンをインストールすることをお勧めします。", "native.binaries.not.supported": "この {0} {1} バージョンの拡張機能は、お使いの OS と互換性がありません。拡張機能の \"{2}\" バージョンをダウンロードしてインストールしてください。", diff --git a/Extension/i18n/kor/src/main.i18n.json b/Extension/i18n/kor/src/main.i18n.json index 26261429f1..284979f1a1 100644 --- a/Extension/i18n/kor/src/main.i18n.json +++ b/Extension/i18n/kor/src/main.i18n.json @@ -5,7 +5,7 @@ // Do not edit this file. It is machine generated. { "architecture.not.supported": "{0} 아키텍처는 지원되지 않습니다. ", - "apline.containers.not.supported": "Alpine 컨테이너는 지원되지 않습니다.", + "alpine.containers.not.supported": "Alpine 컨테이너는 지원되지 않습니다.", "download.button": "다운로드 페이지로 이동", "native.binaries.mismatch.osx": "macOS Intel 버전의 확장이 설치되었습니다. Apple Silicon Mac을 사용 중이므로 Apple Silicon 버전의 확장을 설치하는 것이 좋습니다.", "native.binaries.not.supported": "이 확장의 {0} {1} 버전은 OS와 호환되지 않습니다. 확장의 \"{2}\" 버전을 다운로드하여 설치하세요.", diff --git a/Extension/i18n/plk/src/main.i18n.json b/Extension/i18n/plk/src/main.i18n.json index a9b501678e..3b8d650932 100644 --- a/Extension/i18n/plk/src/main.i18n.json +++ b/Extension/i18n/plk/src/main.i18n.json @@ -5,7 +5,7 @@ // Do not edit this file. It is machine generated. { "architecture.not.supported": "Architektura {0} nie jest obsługiwana.", - "apline.containers.not.supported": "Kontenery Alpine nie są obsługiwane.", + "alpine.containers.not.supported": "Kontenery Alpine nie są obsługiwane.", "download.button": "Przejdź do strony pobierania", "native.binaries.mismatch.osx": "Zainstalowano wersję rozszerzenia systemu macOS Intel. Zalecamy zainstalowanie wersji rozszerzania systemu Apple Silicon Mac, ponieważ używasz wersji systemu Apple Silicon Mac.", "native.binaries.not.supported": "Ta wersja rozszerzenia systemu {0} {1} jest niezgodna z Twoim systemem operacyjnym. Pobierz i zainstaluj wersję rozszerzenia „{2}”.", diff --git a/Extension/i18n/ptb/src/main.i18n.json b/Extension/i18n/ptb/src/main.i18n.json index 72da33c7b0..5c324bc188 100644 --- a/Extension/i18n/ptb/src/main.i18n.json +++ b/Extension/i18n/ptb/src/main.i18n.json @@ -5,7 +5,7 @@ // Do not edit this file. It is machine generated. { "architecture.not.supported": "Não há suporte para a arquitetura {0}. ", - "apline.containers.not.supported": "Não há suporte para os contêineres do Alpine.", + "alpine.containers.not.supported": "Não há suporte para os contêineres do Alpine.", "download.button": "Ir para a Página de Download", "native.binaries.mismatch.osx": "A versão macOS Intel da extensão foi instalada. Como você está em um Apple Silicon Mac, recomendamos instalar a versão Apple Silicon da extensão.", "native.binaries.not.supported": "Esta versão {0} {1} da extensão é incompatível com seu sistema operacional. Baixe e instale a versão \"{2}\" da extensão.", diff --git a/Extension/i18n/rus/src/main.i18n.json b/Extension/i18n/rus/src/main.i18n.json index 6f5f53e9e0..1562c30c2c 100644 --- a/Extension/i18n/rus/src/main.i18n.json +++ b/Extension/i18n/rus/src/main.i18n.json @@ -5,7 +5,7 @@ // Do not edit this file. It is machine generated. { "architecture.not.supported": "Архитектура {0} не поддерживается. ", - "apline.containers.not.supported": "Контейнеры Alpine не поддерживаются.", + "alpine.containers.not.supported": "Контейнеры Alpine не поддерживаются.", "download.button": "Перейти к странице скачивания", "native.binaries.mismatch.osx": "Установлена версия расширения для macOS Intel. Так как вы используете компьютер Apple Silicon Mac, рекомендуется установить версию расширения для Apple Silicon.", "native.binaries.not.supported": "Версия расширения для {0} {1} несовместима с вашей ОС. Скачайте и установите версию расширения \"{2}\".", diff --git a/Extension/i18n/trk/src/main.i18n.json b/Extension/i18n/trk/src/main.i18n.json index 8933d18172..92c1059296 100644 --- a/Extension/i18n/trk/src/main.i18n.json +++ b/Extension/i18n/trk/src/main.i18n.json @@ -5,7 +5,7 @@ // Do not edit this file. It is machine generated. { "architecture.not.supported": "{0} mimarisi desteklemiyor.", - "apline.containers.not.supported": "Alpine kapsayıcıları desteklenmiyor.", + "alpine.containers.not.supported": "Alpine kapsayıcıları desteklenmiyor.", "download.button": "İndirmeler Sayfasına Git", "native.binaries.mismatch.osx": "Uzantının macOS Intel sürümü yüklendi. Bir Apple Silicon Mac bilgisayar kullandığınızdan, uzantının Apple Silicon sürümünü yüklemenizi öneririz.", "native.binaries.not.supported": "Uzantının bu {0} {1} sürümü, işletim sisteminizle uyumlu değil. Lütfen uzantının \"{2}\" sürümünü indirip yükleyin.", diff --git a/Extension/src/main.ts b/Extension/src/main.ts index 3c8dc722bf..5169d20921 100644 --- a/Extension/src/main.ts +++ b/Extension/src/main.ts @@ -41,7 +41,7 @@ export async function activate(context: vscode.ExtensionContext): Promise Date: Fri, 30 Apr 2021 17:07:03 -0700 Subject: [PATCH 34/48] Add embedded debugging support options (#7449) * Add stopAtConnect and hardwareBreakpoints options * Run yarn generateOptionsSchema Co-authored-by: Andrew Wang --- Extension/package.json | 22 ++++++++++++++++++++++ Extension/package.nls.json | 4 ++++ Extension/tools/OptionsSchema.json | 27 +++++++++++++++++++++++++++ 3 files changed, 53 insertions(+) diff --git a/Extension/package.json b/Extension/package.json index 2a7f90d660..64379b3baf 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -1680,6 +1680,28 @@ "default": "" } } + }, + "stopAtConnect": { + "type": "boolean", + "description": "%c_cpp.debuggers.stopAtConnect.description%", + "default": false + }, + "hardwareBreakpoints": { + "description": "%c_cpp.debuggers.hardwareBreakpoints.description%", + "default": {}, + "type": "object", + "properties": { + "require": { + "type": "boolean", + "description": "%c_cpp.debuggers.hardwareBreakpoints.require.description%", + "default": false + }, + "limit": { + "type": "integer", + "description": "%c_cpp.debuggers.hardwareBreakpoints.limit.description%", + "default": 0 + } + } } } }, diff --git a/Extension/package.nls.json b/Extension/package.nls.json index ac66730354..e8a2010018 100644 --- a/Extension/package.nls.json +++ b/Extension/package.nls.json @@ -235,6 +235,10 @@ "c_cpp.debuggers.symbolLoadInfo.loadAll.description": "If true, symbols for all libs will be loaded, otherwise no solib symbols will be loaded. Default value is true.", "c_cpp.debuggers.symbolLoadInfo.exceptionList.description": "List of filenames (wildcards allowed) separated by semicolons ';'. Modifies behavior of LoadAll. If LoadAll is true then don't load symbols for libs that match any name in the list. Otherwise only load symbols for libs that match. Example: \"foo.so;bar.so\"", "c_cpp.debuggers.requireExactSource.description": "Optional flag to require current source code to match the pdb.", + "c_cpp.debuggers.stopAtConnect.description": "If true, the debugger should stop after connecting to the target. If false, the debugger will continue after connecting. Defaults to false.", + "c_cpp.debuggers.hardwareBreakpoints.description": "Explicit control of hardware breakpoint behavior for remote targets.", + "c_cpp.debuggers.hardwareBreakpoints.require.description": "If true, always use hardware breakpoints. Defaults to false.", + "c_cpp.debuggers.hardwareBreakpoints.limit.description": "Optional limit on the number of available hardware breakpoints to use. Only enforced when \"require\" is true and \"limit\" is greater than 0. Defaults to 0.", "c_cpp.taskDefinitions.name.description": "The name of the task", "c_cpp.taskDefinitions.command.description": "The path to either a compiler or script that performs compilation", "c_cpp.taskDefinitions.args.description": "Additional arguments to pass to the compiler or compilation script", diff --git a/Extension/tools/OptionsSchema.json b/Extension/tools/OptionsSchema.json index 8b4290e74f..b2926f19a0 100644 --- a/Extension/tools/OptionsSchema.json +++ b/Extension/tools/OptionsSchema.json @@ -176,6 +176,23 @@ } } }, + "HardwareBreakpoints": { + "type": "object", + "description": "%c_cpp.debuggers.hardwareBreakpoints.description%", + "default": {}, + "properties": { + "require": { + "type": "boolean", + "description": "%c_cpp.debuggers.hardwareBreakpoints.require.description%", + "default": false + }, + "limit": { + "type": "integer", + "description": "%c_cpp.debuggers.hardwareBreakpoints.limit.description%", + "default": 0 + } + } + }, "CppdbgLaunchOptions": { "type": "object", "default": {}, @@ -360,6 +377,16 @@ "symbolLoadInfo": { "$ref": "#/definitions/SymbolLoadInfo", "description": "%c_cpp.debuggers.symbolLoadInfo.description%" + }, + "stopAtConnect": { + "type": "boolean", + "description": "%c_cpp.debuggers.stopAtConnect.description%", + "default": false + }, + "hardwareBreakpoints": { + "$ref": "#/definitions/HardwareBreakpoints", + "description": "%c_cpp.debuggers.hardwareBreakpoints.description%", + "default": {} } } }, From 5dae2109335c8f0e4a53443d42a4fe7e783b6d7a Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Mon, 3 May 2021 10:53:32 -0700 Subject: [PATCH 35/48] Fix squiggle on empty compilerPath. (#7457) --- Extension/src/LanguageServer/configurations.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Extension/src/LanguageServer/configurations.ts b/Extension/src/LanguageServer/configurations.ts index 115521653c..895ec47900 100644 --- a/Extension/src/LanguageServer/configurations.ts +++ b/Extension/src/LanguageServer/configurations.ts @@ -1627,7 +1627,7 @@ export class CppProperties { && compilerPathAndArgs.compilerPath.includes(" "); compilerPath = compilerPathAndArgs.compilerPath; // Don't squiggle if compiler path is resolving with environment path. - if (compilerPathNeedsQuotes || !compilerPath || !which.sync(compilerPath, { nothrow: true })) { + if (compilerPathNeedsQuotes || (compilerPath && !which.sync(compilerPath, { nothrow: true }))) { if (compilerPathNeedsQuotes) { compilerMessage = localize("path.with.spaces", 'Compiler path with spaces and arguments is missing double quotes " around the path.'); newSquiggleMetrics.CompilerPathMissingQuotes++; From 64c9e5f67aa80f02506b7165888c65055632048c Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Mon, 3 May 2021 11:10:05 -0700 Subject: [PATCH 36/48] Fix policheck issues. (#7458) * Fix policheck issues. --- Extension/CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index 87678ec3c9..35a18dd429 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -464,7 +464,7 @@ * Fix `compile_commands.json` prompt appearing when a configuration provider is used. [#3972](https://github.com/microsoft/vscode-cpptools/issues/3972) * Improve IntelliSense performance with range-v3. [#4414](https://github.com/microsoft/vscode-cpptools/issues/4414) * Fix template members not being nested under the template type in the Outline view. [#4466](https://github.com/microsoft/vscode-cpptools/issues/4466) -* Fix an issue in which failure to invoke a compiler could result in a hang on Linux and Mac. [#4627](https://github.com/microsoft/vscode-cpptools/issues/4627) +* Fix an issue in which failure to invoke a compiler could result in a loss of functionality on Linux and Mac. [#4627](https://github.com/microsoft/vscode-cpptools/issues/4627) * Fix custom configurations sometimes not being applied to headers. [#4649](https://github.com/microsoft/vscode-cpptools/issues/4649) * Fix headers opening into header-only TU's instead of TU's for candidate source files. [#4696](https://github.com/microsoft/vscode-cpptools/issues/4696) * Fix the missing description of `C_Cpp.clang_format_style`. @@ -495,7 +495,7 @@ * Fix child process creation when the Windows code page is set to a language with non-ASCII characters and there are non-ASCII characters in the extension's install path. [#1560](https://github.com/microsoft/vscode-cpptools/issues/1560) * Fix path canonicalization of UNC paths to avoid duplicate files opening with different casing. [#2528](https://github.com/microsoft/vscode-cpptools/issues/2528), [#3980](https://github.com/microsoft/vscode-cpptools/issues/3980) * Fix header opening without IntelliSense due to creation of a TU from a source file that includes the header in an inactive region. [#4320](https://github.com/microsoft/vscode-cpptools/issues/4320) -* Fix a hang in the extension process that can occur when using a scope named 'interface'. [#4470](https://github.com/microsoft/vscode-cpptools/issues/4470) +* Fix an infinite loop in the extension process that can occur when using a scope named 'interface'. [#4470](https://github.com/microsoft/vscode-cpptools/issues/4470) * Fix an issue with the Rename UI that could cause the rename to not be applied. [#4504](https://github.com/microsoft/vscode-cpptools/issues/4504) * Show an error message when a Rename fails due to the symbol not being found. [#4510](https://github.com/microsoft/vscode-cpptools/issues/4510) * Fix `launch.json` creation due to localized strings containing quotes. [#4526](https://github.com/microsoft/vscode-cpptools/issues/4526) @@ -512,7 +512,7 @@ ### Bug Fixes * Fix `launch.json` creation when using non-English display languages. [#4464](https://github.com/microsoft/vscode-cpptools/issues/4464) * Fix CHS translation. [#4422](https://github.com/microsoft/vscode-cpptools/issues/4422) -* Fix debugging hang when Windows 10 Beta Unicode (UTF-8) support is enabled. [#1527](https://github.com/microsoft/vscode-cpptools/issues/1527) +* Fix debugging not working when Windows 10 Beta Unicode (UTF-8) support is enabled. [#1527](https://github.com/microsoft/vscode-cpptools/issues/1527) ## Version 0.26.0: October 15, 2019 ### New Features @@ -918,7 +918,7 @@ * Fix `Go to Definition` bug (missing symbols outside the workspace). [#2281](https://github.com/Microsoft/vscode-cpptools/issues/2281) * Fix incorrect hover in enum definitions. [#2286](https://github.com/Microsoft/vscode-cpptools/issues/2286) * Add a setting to silence configuration provider warnings. [#2292](https://github.com/Microsoft/vscode-cpptools/issues/2292) -* Fix debugging async Visual C++ causing debugger to hang. +* Fix debugging async Visual C++ causing the debugger to stop responding. * Fix `main` snippet. ## Version 0.17.6: July 2, 2018 @@ -1186,8 +1186,8 @@ * Add `Edit Configurations...` command to the `Select a Configuration...` dropdown. * Update Microsoft Visual C++ debugger to Visual Studio 2017 released components. * Fix issue with showing wrong thread. [#550](https://github.com/Microsoft/vscode-cpptools/issues/550) - * Fix issue with binaries compiled with /FASTLINK causing debugger to hang. [#484](https://github.com/Microsoft/vscode-cpptools/issues/484) -* Fix issue in MinGW/Cygwin debugging where stop debugging causes VS Code to hang. [PR Microsoft/MIEngine#636](https://github.com/Microsoft/MIEngine/pull/636) + * Fix issue with binaries compiled with /FASTLINK causing the debugger to stop responding. [#484](https://github.com/Microsoft/vscode-cpptools/issues/484) +* Fix issue in MinGW/Cygwin debugging where stop debugging causes VS Code to stop responding. [PR Microsoft/MIEngine#636](https://github.com/Microsoft/MIEngine/pull/636) ## Version 0.12.0: June 26, 2017 * The default IntelliSense engine now provides semantic-aware autocomplete suggestions for `.`, `->`, and `::` operators. [#13](https://github.com/Microsoft/vscode-cpptools/issues/13) From 8b36869283e4a03edbaab1df0a1019f6783c4f76 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson <49173979+Colengms@users.noreply.github.com> Date: Mon, 3 May 2021 13:41:03 -0700 Subject: [PATCH 37/48] Switch to new localization pipeline (#7441) --- Build/loc/LocProject.json | 13 ++++++ Build/loc/TranslationsExport.yml | 37 +++++++++++++++ Build/loc/TranslationsImport.yml | 37 +++++++++++++++ Extension/package.json | 3 +- Extension/package.nls.json | 2 +- Extension/translations_auto_pr.js | 77 ++++++++++++++++++++++++------- Extension/yarn.lock | 18 ++++++++ 7 files changed, 169 insertions(+), 18 deletions(-) create mode 100644 Build/loc/LocProject.json create mode 100644 Build/loc/TranslationsExport.yml create mode 100644 Build/loc/TranslationsImport.yml diff --git a/Build/loc/LocProject.json b/Build/loc/LocProject.json new file mode 100644 index 0000000000..70fad52ac7 --- /dev/null +++ b/Build/loc/LocProject.json @@ -0,0 +1,13 @@ +{ + "Projects": [ + { + "LanguangeSet": "VS_Main_Languages", + "LocItems": [ + { + "SourceFile": "vscode-extensions-localization-export\\vscode-extensions\\vscode-cpptools.xlf", + "Languages": "cs;de;es;fr;it;ja;ko;pl;pt-BR;ru;tr;zh-Hans;zh-Hant" + } + ] + } + ] +} \ No newline at end of file diff --git a/Build/loc/TranslationsExport.yml b/Build/loc/TranslationsExport.yml new file mode 100644 index 0000000000..b934637682 --- /dev/null +++ b/Build/loc/TranslationsExport.yml @@ -0,0 +1,37 @@ +# ================================================================================== +# Pipeline for VsCodeExtension-Localization build definition +# Runs OneLocBuild task to localize xlf file +# ================================================================================== + +resources: + repositories: + - repository: self + clean: true + +trigger: none +pr: none + +pool: + vmImage: 'windows-latest' + +steps: +- task: CmdLine@2 + inputs: + script: 'cd ./Extension && yarn run translations-export && cd ..' + +- task: OneLocBuild@1 + env: + SYSTEM_ACCESSTOKEN: $(System.AccessToken) + inputs: + locProj: 'Build/loc/LocProject.json' + outDir: '$(Build.ArtifactStagingDirectory)' + isCreatePrSelected: false + prSourceBranchPrefix: 'locfiles' + packageSourceAuth: 'patAuth' + patVariable: '$(OneLocBuildPat)' + +- task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: '$(Build.ArtifactStagingDirectory)' + ArtifactName: 'drop' + publishLocation: 'Container' diff --git a/Build/loc/TranslationsImport.yml b/Build/loc/TranslationsImport.yml new file mode 100644 index 0000000000..6d917cbcf0 --- /dev/null +++ b/Build/loc/TranslationsImport.yml @@ -0,0 +1,37 @@ +# ================================================================================== +# Pipeline for VsCodeExtension-Localization build definition +# Gets translated files from VSCodeExt and creates a PR for vscode-cpptools +# +# Triggered only by daily schedule +# ================================================================================== + +trigger: none +pr: none +schedules: +- cron: "0 7 * * *" + displayName: Daily 7 AM + branches: + include: + - main + +pool: + vmImage: 'windows-latest' + +steps: +- checkout: self + path: s/vscode-cpptools + +- task: CmdLine@2 + inputs: + script: 'git clone $(LocRepoUri) ..\VSCodeExt' + workingDirectory: '$(Build.SourcesDirectory)' + +- task: CmdLine@2 + inputs: + script: 'cd Extension && yarn install' + workingDirectory: '$(Build.SourcesDirectory)' + +- task: CmdLine@2 + inputs: + script: 'cd Extension && node ./translations_auto_pr.js microsoft vscode-cpptools cpptools csigs $(csigsPat) csigs csigs@users.noreply.github.com $(Build.SourcesDirectory)/../VSCodeExt' + workingDirectory: '$(Build.SourcesDirectory)' diff --git a/Extension/package.json b/Extension/package.json index 64379b3baf..c7ba6a96d5 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -2477,6 +2477,7 @@ "http-proxy-agent": "^2.1.0", "minimist": "^1.2.5", "mocha": "^8.3.2", + "parse-git-config": "^3.0.0", "parse5": "^5.1.0", "parse5-traverse": "^1.0.3", "ts-loader": "^8.1.0", @@ -2838,4 +2839,4 @@ "integrity": "52C4234976D527A7BF02EB2E8844F3C605DC4BD1D3847F83C8675CD23967BAB3" } ] -} \ No newline at end of file +} diff --git a/Extension/package.nls.json b/Extension/package.nls.json index e8a2010018..24ea39dd14 100644 --- a/Extension/package.nls.json +++ b/Extension/package.nls.json @@ -178,7 +178,7 @@ "c_cpp.debuggers.pipeTransport.pipeProgram.description": "The fully qualified pipe command to execute.", "c_cpp.debuggers.pipeTransport.pipeArgs.description": "Command line arguments passed to the pipe program to configure the connection.", "c_cpp.debuggers.pipeTransport.pipeEnv.description": "Environment variables passed to the pipe program.", - "c_cpp.debuggers.pipeTransport.quoteArgs.description": "If the pipeProgram's individual arguments contain characters (such as spaces or tabs), should it be quoted? If 'false', the debugger command will no longer be automatically quoted. \nDefault is 'true'.", + "c_cpp.debuggers.pipeTransport.quoteArgs.description": "If the pipeProgram's individual arguments contain characters (such as spaces or tabs), should it be quoted? If 'false', the debugger command will no longer be automatically quoted. Default is 'true'.", "c_cpp.debuggers.logging.description": "Optional flags to determine what types of messages should be logged to the Debug Console.", "c_cpp.debuggers.logging.exceptions.description": "Optional flag to determine whether exception messages should be logged to the Debug Console. Defaults to true.", "c_cpp.debuggers.logging.moduleLoad.description": "Optional flag to determine whether module load events should be logged to the Debug Console. Defaults to true.", diff --git a/Extension/translations_auto_pr.js b/Extension/translations_auto_pr.js index 3dc53ca466..11b78438da 100644 --- a/Extension/translations_auto_pr.js +++ b/Extension/translations_auto_pr.js @@ -4,6 +4,7 @@ const fs = require("fs-extra"); const cp = require("child_process"); const Octokit = require('@octokit/rest') const path = require('path'); +const parseGitConfig = require('parse-git-config'); const branchName = 'localization'; const mergeTo = 'main'; @@ -15,9 +16,12 @@ let repoName = process.argv[3]; let locProjectName = process.argv[4]; let authUser = process.argv[5]; let authToken = process.argv[6]; +let userFullName = process.argv[7]; +let userEmail = process.argv[8]; +let locRepoPath = process.argv[9]; -if (!repoOwner || !repoName || !locProjectName || !authUser || !authToken) { - console.error(`ERROR: Usage: ${path.parse(process.argv[0]).base} ${path.parse(process.argv[1]).base} repo_owner repo_name loc_project_name auth_user auth_token`); +if (!repoOwner || !repoName || !locProjectName || !authUser || !authToken || !userFullName || !userEmail || !locRepoPath) { + console.error(`ERROR: Usage: ${path.parse(process.argv[0]).base} ${path.parse(process.argv[1]).base} repo_owner repo_name loc_project_name auth_user auth_token user_full_name user_email loc_repo_path`); return; } @@ -26,6 +30,7 @@ console.log(`repoName=${repoName}`); console.log(`locProjectName=${locProjectName}`); console.log(`authUser=${authUser}`); console.log(`authToken=${authToken}`); +console.log(`locRepoPath=${locRepoPath}`); function hasBranch(branchName) { console.log(`Checking for existance of branch "${branchName}" (git branch --list ${branchName})`); @@ -66,19 +71,12 @@ function sleep(ms) { console.log("This script is potentially DESTRUCTIVE! Cancel now, or it will proceed in 10 seconds."); sleep(10000); -console.log("Looking for latest localization drop"); -let latestTxt = fs.readFileSync("\\\\simpleloc\\drops\\Drops\\vscode-extensions_2432\\Latest.txt") -let exp = /Build No:\s*(.*)(?!=\n)/gm; -let match = exp.exec(latestTxt.toString()); -let versionString = match[1]; - -console.log("Copying XLF files to vscode-translations-import directory"); -let rootSourcePath = `\\\\simpleloc\\drops\\Drops\\vscode-extensions_2432\\${versionString}\\Localization\\locdrop\\bin`; -let directories = fs.readdirSync(rootSourcePath); +let rootSourcePath = `${locRepoPath}\\Src\\VSCodeExt`; +let directories = fs.readdirSync(rootSourcePath, { withFileTypes: true }).filter(dirent => dirent.isDirectory()).map(dirent => dirent.name); directories.forEach(folderName => { - let sourcePath = `${rootSourcePath}\\${folderName}\\Projects\\Src\\vscode-extensions\\vscode-${locProjectName}.${folderName}.xlf`; + let sourcePath = `${rootSourcePath}\\${folderName}\\vscode-cpptools.xlf`; let destinationPath = `../vscode-translations-import/${folderName}/vscode-extensions/vscode-${locProjectName}.xlf`; - console.log(`Copying "${sourcePath}$" to "${destinationPath}"`); + console.log(`Copying "${sourcePath}" to "${destinationPath}"`); fs.copySync(sourcePath, destinationPath); }); @@ -115,14 +113,61 @@ if (!hasAnyChanges()) { return; } -// Commit changes files. -console.log(`Commiting changes (git commit -m "${commitComment}")`); -cp.execSync(`git commit -m "${commitComment}"`); +// Set up user and permissions + +// Save existing user name and email, in case already set. +var existingUserName; +var existingUserEmail; +var gitConfigPath = path.resolve(process.cwd(), '../.git/config'); +var config = parseGitConfig.sync({ path: gitConfigPath }); + +if (typeof config === 'object' && config.hasOwnProperty('user')) { + existingUserName = config.user.name; + existingUserEmail = config.user.email; +} +if (existingUserName === undefined) { + console.log(`Existing user name: undefined`); +} else { + console.log(`Existing user name: "${existingUserName}"`); + cp.execSync(`git config --local --unset user.name`); +} +if (existingUserEmail === undefined) { + console.log(`Existing user email: undefined`); +} else { + console.log(`Existing user email: "${existingUserEmail}"`); + cp.execSync(`git config --local --unset user.email`); +} + +console.log(`Setting local user name to: "${userFullName}"`); +cp.execSync(`git config --local user.name "${userFullName}"`); + +console.log(`Setting local user email to: "${userEmail}"`); +cp.execSync(`git config --local user.email "${userEmail}"`); console.log(`Configuring git with permission to push and to create pull requests (git remote remove origin && git remote add origin https://${authUser}:${authToken}@github.com/${repoOwner}/${repoName}.git`); cp.execSync('git remote remove origin'); cp.execSync(`git remote add origin https://${authUser}:${authToken}@github.com/${repoOwner}/${repoName}.git`); +// Commit changed files. +console.log(`Commiting changes (git commit -m "${commitComment}")`); +cp.execSync(`git commit -m "${commitComment}"`); + +if (existingUserName === undefined) { + console.log(`Restoring original user name: undefined`); + cp.execSync(`git config --local --unset user.name`); +} else { + console.log(`Restoring original user name: "${existingUserName}"`); + cp.execSync(`git config --local user.name "${existingUserName}"`); +} + +if (existingUserEmail === undefined) { + console.log(`Restoring original user email: undefined`); + cp.execSync(`git config --local --unset user.email`); +} else { + console.log(`Restoring original user email: "${existingUserEmail}"`); + cp.execSync(`git config --local user.email "${existingUserEmail}"`); +} + console.log(`pushing to remove branch (git push -f origin ${branchName})`); cp.execSync(`git push -f origin ${branchName}`); diff --git a/Extension/yarn.lock b/Extension/yarn.lock index b97393ded7..bcd14c037e 100644 --- a/Extension/yarn.lock +++ b/Extension/yarn.lock @@ -2247,6 +2247,11 @@ get-value@^2.0.3, get-value@^2.0.6: resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= +git-config-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/git-config-path/-/git-config-path-2.0.0.tgz#62633d61af63af4405a5024efd325762f58a181b" + integrity sha512-qc8h1KIQbJpp+241id3GuAtkdyJ+IK+LIVtkiFTRKRrmddDzs3SI9CvP1QYmWBFvm1I/PWRwj//of8bgAc0ltA== + glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" @@ -2618,6 +2623,11 @@ ini@^1.3.4: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== +ini@^1.3.5: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + inquirer@^7.0.0: version "7.0.4" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" @@ -3748,6 +3758,14 @@ parse-filepath@^1.0.1: map-cache "^0.2.0" path-root "^0.1.1" +parse-git-config@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/parse-git-config/-/parse-git-config-3.0.0.tgz#4a2de08c7b74a2555efa5ae94d40cd44302a6132" + integrity sha512-wXoQGL1D+2COYWCD35/xbiKma1Z15xvZL8cI25wvxzled58V51SJM04Urt/uznS900iQor7QO04SgdfT/XlbuA== + dependencies: + git-config-path "^2.0.0" + ini "^1.3.5" + parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" From 618c9c7d0ce8a310dd0831f7b719bad82883f6dc Mon Sep 17 00:00:00 2001 From: Elaheh Rashedi Date: Mon, 3 May 2021 15:33:01 -0700 Subject: [PATCH 38/48] refactoring async/await (#7277) refactor with --- Extension/src/Debugger/attachQuickPick.ts | 66 ++- Extension/src/Debugger/attachToProcess.ts | 174 ++++--- .../src/Debugger/configurationProvider.ts | 2 +- .../Debugger/debugAdapterDescriptorFactory.ts | 44 +- Extension/src/Debugger/extension.ts | 82 ++-- Extension/src/Debugger/nativeAttach.ts | 51 ++- .../documentFormattingEditProvider.ts | 86 ++-- .../documentRangeFormattingEditProvider.ts | 86 ++-- .../Providers/documentSymbolProvider.ts | 10 +- .../Providers/findAllReferencesProvider.ts | 101 ++-- .../Providers/foldingRangeProvider.ts | 65 ++- .../Providers/onTypeFormattingEditProvider.ts | 98 ++-- .../Providers/renameProvider.ts | 99 ++-- .../Providers/semanticTokensProvider.ts | 63 ++- .../Providers/workspaceSymbolProvider.ts | 44 +- Extension/src/LanguageServer/client.ts | 431 +++++++++--------- .../src/LanguageServer/configurations.ts | 177 +++---- Extension/src/LanguageServer/extension.ts | 137 +++--- .../src/LanguageServer/protocolFilter.ts | 8 +- Extension/src/LanguageServer/settings.ts | 19 +- Extension/src/LanguageServer/ui.ts | 49 +- Extension/src/abTesting.ts | 21 +- Extension/src/common.ts | 54 ++- Extension/src/githubAPI.ts | 151 +++--- Extension/src/logger.ts | 3 + Extension/src/main.ts | 16 +- Extension/src/packageManager.ts | 67 +-- Extension/src/platform.ts | 19 +- 28 files changed, 1075 insertions(+), 1148 deletions(-) diff --git a/Extension/src/Debugger/attachQuickPick.ts b/Extension/src/Debugger/attachQuickPick.ts index ba966b7ace..677e87bb9a 100644 --- a/Extension/src/Debugger/attachQuickPick.ts +++ b/Extension/src/Debugger/attachQuickPick.ts @@ -30,44 +30,42 @@ export interface AttachItem extends vscode.QuickPickItem { id?: string; } -export function showQuickPick(getAttachItems: () => Promise): Promise { - return getAttachItems().then(processEntries => - new Promise((resolve, reject) => { - const quickPick: vscode.QuickPick = vscode.window.createQuickPick(); - quickPick.title = localize("attach.to.process", "Attach to process"); - quickPick.canSelectMany = false; - quickPick.matchOnDescription = true; - quickPick.matchOnDetail = true; - quickPick.placeholder = localize("select.process.attach", "Select the process to attach to"); - quickPick.items = processEntries; - quickPick.buttons = [new RefreshButton()]; - - const disposables: vscode.Disposable[] = []; - - quickPick.onDidTriggerButton(button => { - getAttachItems().then(processEntries => quickPick.items = processEntries); - }, undefined, disposables); - - quickPick.onDidAccept(() => { - if (quickPick.selectedItems.length !== 1) { - reject(new Error(localize("process.not.selected", "Process not selected."))); - } +// We should not await on this function. +export async function showQuickPick(getAttachItems: () => Promise): Promise { + const processEntries: AttachItem[] = await getAttachItems(); + return new Promise((resolve, reject) => { + const quickPick: vscode.QuickPick = vscode.window.createQuickPick(); + quickPick.title = localize("attach.to.process", "Attach to process"); + quickPick.canSelectMany = false; + quickPick.matchOnDescription = true; + quickPick.matchOnDetail = true; + quickPick.placeholder = localize("select.process.attach", "Select the process to attach to"); + quickPick.buttons = [new RefreshButton()]; + quickPick.items = processEntries; + const disposables: vscode.Disposable[] = []; + + quickPick.onDidTriggerButton(async () => { quickPick.items = await getAttachItems(); }, undefined, disposables); + + quickPick.onDidAccept(() => { + if (quickPick.selectedItems.length !== 1) { + reject(new Error(localize("process.not.selected", "Process not selected."))); + } - const selectedId: string | undefined = quickPick.selectedItems[0].id; + const selectedId: string | undefined = quickPick.selectedItems[0].id; - disposables.forEach(item => item.dispose()); - quickPick.dispose(); + disposables.forEach(item => item.dispose()); + quickPick.dispose(); - resolve(selectedId); - }, undefined, disposables); + resolve(selectedId); + }, undefined, disposables); - quickPick.onDidHide(() => { - disposables.forEach(item => item.dispose()); - quickPick.dispose(); + quickPick.onDidHide(() => { + disposables.forEach(item => item.dispose()); + quickPick.dispose(); - reject(new Error(localize("process.not.selected", "Process not selected."))); - }, undefined, disposables); + reject(new Error(localize("process.not.selected", "Process not selected."))); + }, undefined, disposables); - quickPick.show(); - })); + quickPick.show(); + }); } diff --git a/Extension/src/Debugger/attachToProcess.ts b/Extension/src/Debugger/attachToProcess.ts index aaca23a63c..0d827c049e 100644 --- a/Extension/src/Debugger/attachToProcess.ts +++ b/Extension/src/Debugger/attachToProcess.ts @@ -8,7 +8,6 @@ import { AttachItem, showQuickPick } from './attachQuickPick'; import { CppSettings } from '../LanguageServer/settings'; import * as debugUtils from './utils'; -import * as fs from 'fs'; import * as os from 'os'; import * as path from 'path'; import * as util from '../common'; @@ -25,14 +24,13 @@ export interface AttachItemsProvider { export class AttachPicker { constructor(private attachItemsProvider: AttachItemsProvider) { } - public ShowAttachEntries(): Promise { - return util.isExtensionReady().then(ready => { - if (!ready) { - util.displayExtensionNotReadyPrompt(); - } else { - return showQuickPick(() => this.attachItemsProvider.getAttachItems()); - } - }); + // We should not await on this function. + public async ShowAttachEntries(): Promise { + if (!await util.isExtensionReady()) { + util.displayExtensionNotReadyPrompt(); + } else { + return showQuickPick(() => this.attachItemsProvider.getAttachItems()); + } } } @@ -43,66 +41,66 @@ export class RemoteAttachPicker { private _channel: vscode.OutputChannel; - public ShowAttachEntries(config: any): Promise { - return util.isExtensionReady().then(ready => { - if (!ready) { - util.displayExtensionNotReadyPrompt(); - } else { - this._channel.clear(); + public async ShowAttachEntries(config: any): Promise { + if (!await util.isExtensionReady()) { + util.displayExtensionNotReadyPrompt(); + } else { + this._channel.clear(); - const pipeTransport: any = config ? config.pipeTransport : undefined; + const pipeTransport: any = config ? config.pipeTransport : undefined; - if (!pipeTransport) { - return Promise.reject(new Error(localize("no.pipetransport", "Chosen debug configuration does not contain {0}", "pipeTransport"))); - } + if (!pipeTransport) { + throw new Error(localize("no.pipetransport", "Chosen debug configuration does not contain {0}", "pipeTransport")); + } - let pipeProgram: string | undefined; + let pipeProgram: string | undefined; - if (os.platform() === 'win32' && - pipeTransport.pipeProgram && - !fs.existsSync(pipeTransport.pipeProgram)) { - const pipeProgramStr: string = pipeTransport.pipeProgram.toLowerCase().trim(); - const expectedArch: debugUtils.ArchType = debugUtils.ArchType[process.arch as keyof typeof debugUtils.ArchType]; + if (os.platform() === 'win32' && + pipeTransport.pipeProgram && + !await util.checkFileExists(pipeTransport.pipeProgram)) { + const pipeProgramStr: string = pipeTransport.pipeProgram.toLowerCase().trim(); + const expectedArch: debugUtils.ArchType = debugUtils.ArchType[process.arch as keyof typeof debugUtils.ArchType]; - // Check for pipeProgram - if (!fs.existsSync(config.pipeTransport.pipeProgram)) { - pipeProgram = debugUtils.ArchitectureReplacer.checkAndReplaceWSLPipeProgram(pipeProgramStr, expectedArch); - } + // Check for pipeProgram + if (!await util.checkFileExists(config.pipeTransport.pipeProgram)) { + pipeProgram = debugUtils.ArchitectureReplacer.checkAndReplaceWSLPipeProgram(pipeProgramStr, expectedArch); + } - // If pipeProgram does not get replaced and there is a pipeCwd, concatenate with pipeProgramStr and attempt to replace. - if (!pipeProgram && config.pipeTransport.pipeCwd) { - const pipeCwdStr: string = config.pipeTransport.pipeCwd.toLowerCase().trim(); - const newPipeProgramStr: string = path.join(pipeCwdStr, pipeProgramStr); + // If pipeProgram does not get replaced and there is a pipeCwd, concatenate with pipeProgramStr and attempt to replace. + if (!pipeProgram && config.pipeTransport.pipeCwd) { + const pipeCwdStr: string = config.pipeTransport.pipeCwd.toLowerCase().trim(); + const newPipeProgramStr: string = path.join(pipeCwdStr, pipeProgramStr); - if (!fs.existsSync(newPipeProgramStr)) { - pipeProgram = debugUtils.ArchitectureReplacer.checkAndReplaceWSLPipeProgram(newPipeProgramStr, expectedArch); - } + if (!await util.checkFileExists(newPipeProgramStr)) { + pipeProgram = debugUtils.ArchitectureReplacer.checkAndReplaceWSLPipeProgram(newPipeProgramStr, expectedArch); } } + } - if (!pipeProgram) { - pipeProgram = pipeTransport.pipeProgram; - } + if (!pipeProgram) { + pipeProgram = pipeTransport.pipeProgram; + } - const pipeArgs: string[] = pipeTransport.pipeArgs; + const pipeArgs: string[] = pipeTransport.pipeArgs; - const argList: string = RemoteAttachPicker.createArgumentList(pipeArgs); + const argList: string = RemoteAttachPicker.createArgumentList(pipeArgs); - const pipeCmd: string = `"${pipeProgram}" ${argList}`; + const pipeCmd: string = `"${pipeProgram}" ${argList}`; - return this.getRemoteOSAndProcesses(pipeCmd) - .then(processes => { - const attachPickOptions: vscode.QuickPickOptions = { - matchOnDetail: true, - matchOnDescription: true, - placeHolder: localize("select.process.attach", "Select the process to attach to") - }; + const processes: AttachItem[]= await this.getRemoteOSAndProcesses(pipeCmd); + const attachPickOptions: vscode.QuickPickOptions = { + matchOnDetail: true, + matchOnDescription: true, + placeHolder: localize("select.process.attach", "Select the process to attach to") + }; - return vscode.window.showQuickPick(processes, attachPickOptions) - .then(item => item ? item.id : Promise.reject(new Error(localize("process.not.selected", "Process not selected.")))); - }); + const item: AttachItem | undefined = await vscode.window.showQuickPick(processes, attachPickOptions); + if (item) { + return item.id; + } else { + throw new Error(localize("process.not.selected", "Process not selected.")); } - }); + } } // Creates a string to run on the host machine which will execute a shell script on the remote machine to retrieve OS and processes @@ -132,51 +130,49 @@ export class RemoteAttachPicker { `then ${PsProcessParser.psDarwinCommand}; fi${innerQuote}${outerQuote}`; } - private getRemoteOSAndProcesses(pipeCmd: string): Promise { + private async getRemoteOSAndProcesses(pipeCmd: string): Promise { // Do not add any quoting in execCommand. const execCommand: string = `${pipeCmd} ${this.getRemoteProcessCommand()}`; - return util.execChildProcess(execCommand, undefined, this._channel).then(output => { - // OS will be on first line - // Processes will follow if listed - const lines: string[] = output.split(/\r?\n/); + const output: string = await util.execChildProcess(execCommand, undefined, this._channel); + // OS will be on first line + // Processes will follow if listed + const lines: string[] = output.split(/\r?\n/); + if (lines.length === 0) { + throw new Error(localize("pipe.failed", "Pipe transport failed to get OS and processes.")); + } else { + const remoteOS: string = lines[0].replace(/[\r\n]+/g, ''); + + if (remoteOS !== "Linux" && remoteOS !== "Darwin") { + throw new Error(`Operating system "${remoteOS}" not supported.`); + } - if (lines.length === 0) { - return Promise.reject(new Error(localize("pipe.failed", "Pipe transport failed to get OS and processes."))); + // Only got OS from uname + if (lines.length === 1) { + throw new Error(localize("no.process.list", "Transport attach could not obtain processes list.")); } else { - const remoteOS: string = lines[0].replace(/[\r\n]+/g, ''); - - if (remoteOS !== "Linux" && remoteOS !== "Darwin") { - return Promise.reject(new Error(`Operating system "${remoteOS}" not supported.`)); - } - - // Only got OS from uname - if (lines.length === 1) { - return Promise.reject(new Error(localize("no.process.list", "Transport attach could not obtain processes list."))); - } else { - const processes: string[] = lines.slice(1); - return PsProcessParser.ParseProcessFromPsArray(processes) - .sort((a, b) => { - if (a.name === undefined) { - if (b.name === undefined) { - return 0; - } - return 1; - } + const processes: string[] = lines.slice(1); + return PsProcessParser.ParseProcessFromPsArray(processes) + .sort((a, b) => { + if (a.name === undefined) { if (b.name === undefined) { - return -1; - } - const aLower: string = a.name.toLowerCase(); - const bLower: string = b.name.toLowerCase(); - if (aLower === bLower) { return 0; } - return aLower < bLower ? -1 : 1; - }) - .map(p => p.toAttachItem()); - } + return 1; + } + if (b.name === undefined) { + return -1; + } + const aLower: string = a.name.toLowerCase(); + const bLower: string = b.name.toLowerCase(); + if (aLower === bLower) { + return 0; + } + return aLower < bLower ? -1 : 1; + }) + .map(p => p.toAttachItem()); } - }); + } } private static createArgumentList(args: string[]): string { diff --git a/Extension/src/Debugger/configurationProvider.ts b/Extension/src/Debugger/configurationProvider.ts index 0e13093e21..90b70ff6df 100644 --- a/Extension/src/Debugger/configurationProvider.ts +++ b/Extension/src/Debugger/configurationProvider.ts @@ -83,7 +83,7 @@ export class QuickPickConfigurationProvider implements vscode.DebugConfiguration try { await cppBuildTaskProvider.ensureBuildTaskExists(selection.configuration.preLaunchTask); if (selection.configuration.miDebuggerPath) { - if (!fs.existsSync(selection.configuration.miDebuggerPath)) { + if (!await util.checkFileExists(selection.configuration.miDebuggerPath)) { vscode.window.showErrorMessage(localize("miDebuggerPath.not.available", "miDebuggerPath does not exist: {0}. Has a debugger been installed?", selection.configuration.miDebuggerPath)); throw new Error(); } diff --git a/Extension/src/Debugger/debugAdapterDescriptorFactory.ts b/Extension/src/Debugger/debugAdapterDescriptorFactory.ts index f0a0dff3ea..b69306d31d 100644 --- a/Extension/src/Debugger/debugAdapterDescriptorFactory.ts +++ b/Extension/src/Debugger/debugAdapterDescriptorFactory.ts @@ -33,21 +33,19 @@ export class CppdbgDebugAdapterDescriptorFactory extends AbstractDebugAdapterDes super(context); } - createDebugAdapterDescriptor(session: vscode.DebugSession, executable?: vscode.DebugAdapterExecutable): vscode.ProviderResult { - return util.isExtensionReady().then(ready => { - if (ready) { - let command: string = path.join(this.context.extensionPath, './debugAdapters/OpenDebugAD7'); + async createDebugAdapterDescriptor(session: vscode.DebugSession, executable?: vscode.DebugAdapterExecutable): Promise { + if (await util.isExtensionReady()) { + let command: string = path.join(this.context.extensionPath, './debugAdapters/OpenDebugAD7'); - // Windows has the exe in debugAdapters/bin. - if (os.platform() === 'win32') { - command = path.join(this.context.extensionPath, "./debugAdapters/bin/OpenDebugAD7.exe"); - } - - return new vscode.DebugAdapterExecutable(command, []); - } else { - throw new Error(util.extensionNotReadyString); + // Windows has the exe in debugAdapters/bin. + if (os.platform() === 'win32') { + command = path.join(this.context.extensionPath, "./debugAdapters/bin/OpenDebugAD7.exe"); } - }); + + return new vscode.DebugAdapterExecutable(command, []); + } else { + throw new Error(util.extensionNotReadyString); + } } } @@ -58,21 +56,19 @@ export class CppvsdbgDebugAdapterDescriptorFactory extends AbstractDebugAdapterD super(context); } - createDebugAdapterDescriptor(session: vscode.DebugSession, executable?: vscode.DebugAdapterExecutable): vscode.ProviderResult { + async createDebugAdapterDescriptor(session: vscode.DebugSession, executable?: vscode.DebugAdapterExecutable): Promise { if (os.platform() !== 'win32') { vscode.window.showErrorMessage(localize("debugger.not.available", "Debugger type '{0}' is not avaliable for non-Windows machines.", "cppvsdbg")); return null; } else { - return util.isExtensionReady().then(ready => { - if (ready) { - return new vscode.DebugAdapterExecutable( - path.join(this.context.extensionPath, './debugAdapters/vsdbg/bin/vsdbg.exe'), - ['--interpreter=vscode'] - ); - } else { - throw new Error(util.extensionNotReadyString); - } - }); + if (await util.isExtensionReady()) { + return new vscode.DebugAdapterExecutable( + path.join(this.context.extensionPath, './debugAdapters/vsdbg/bin/vsdbg.exe'), + ['--interpreter=vscode'] + ); + } else { + throw new Error(util.extensionNotReadyString); + } } } } diff --git a/Extension/src/Debugger/extension.ts b/Extension/src/Debugger/extension.ts index 012c1d2563..02f00416e9 100644 --- a/Extension/src/Debugger/extension.ts +++ b/Extension/src/Debugger/extension.ts @@ -76,55 +76,55 @@ export function initialize(context: vscode.ExtensionContext): void { const items: MenuItem[] = configs.map(config => ({ label: config.name, configuration: config, description: config.detail })); - vscode.window.showQuickPick(items, { placeHolder: (items.length === 0 ? localize("no.compiler.found", "No compiler found") : localize("select.configuration", "Select a configuration")) }).then(async selection => { - if (!selection) { - return; // User canceled it. - } - if (selection.label.startsWith("cl.exe")) { - if (!process.env.DevEnvDir || process.env.DevEnvDir.length === 0) { - vscode.window.showErrorMessage(localize("cl.exe.not.available", '{0} build and debug is only usable when VS Code is run from the Developer Command Prompt for VS.', "cl.exe")); - return; - } + const selection: MenuItem | undefined = await vscode.window.showQuickPick(items, { + placeHolder: (items.length === 0 ? localize("no.compiler.found", "No compiler found") : localize("select.configuration", "Select a configuration")) }); + if (!selection) { + return; // User canceled it. + } + if (selection.label.startsWith("cl.exe")) { + if (!process.env.DevEnvDir || process.env.DevEnvDir.length === 0) { + vscode.window.showErrorMessage(localize("cl.exe.not.available", '{0} build and debug is only usable when VS Code is run from the Developer Command Prompt for VS.', "cl.exe")); + return; } - if (selection.configuration.preLaunchTask) { - if (folder) { - try { - await cppBuildTaskProvider.ensureBuildTaskExists(selection.configuration.preLaunchTask); - Telemetry.logDebuggerEvent("buildAndDebug", { "success": "false" }); - } catch (e) { - if (e && e.message === util.failedToParseJson) { - vscode.window.showErrorMessage(util.failedToParseJson); - } - return Promise.resolve(); + } + if (selection.configuration.preLaunchTask) { + if (folder) { + try { + await cppBuildTaskProvider.ensureBuildTaskExists(selection.configuration.preLaunchTask); + Telemetry.logDebuggerEvent("buildAndDebug", { "success": "false" }); + } catch (e) { + if (e && e.message === util.failedToParseJson) { + vscode.window.showErrorMessage(util.failedToParseJson); } - } else { - return Promise.resolve(); - // TODO uncomment this when single file mode works correctly. - // const buildTasks: vscode.Task[] = await getBuildTasks(true); - // const task: vscode.Task = buildTasks.find(task => task.name === selection.configuration.preLaunchTask); - // await vscode.tasks.executeTask(task); - // delete selection.configuration.preLaunchTask; + return; } + } else { + return; + // TODO uncomment this when single file mode works correctly. + // const buildTasks: vscode.Task[] = await getBuildTasks(true); + // const task: vscode.Task = buildTasks.find(task => task.name === selection.configuration.preLaunchTask); + // await vscode.tasks.executeTask(task); + // delete selection.configuration.preLaunchTask; } + } - // Attempt to use the user's (possibly) modified configuration before using the generated one. + // Attempt to use the user's (possibly) modified configuration before using the generated one. + try { + await cppBuildTaskProvider.ensureDebugConfigExists(selection.configuration.name); try { - await cppBuildTaskProvider.ensureDebugConfigExists(selection.configuration.name); - try { - await vscode.debug.startDebugging(folder, selection.configuration.name); - Telemetry.logDebuggerEvent("buildAndDebug", { "success": "true" }); - } catch (e) { - Telemetry.logDebuggerEvent("buildAndDebug", { "success": "false" }); - } + await vscode.debug.startDebugging(folder, selection.configuration.name); + Telemetry.logDebuggerEvent("buildAndDebug", { "success": "true" }); } catch (e) { - try { - vscode.debug.startDebugging(folder, selection.configuration); - Telemetry.logDebuggerEvent("buildAndDebug", { "success": "true" }); - } catch (e) { - Telemetry.logDebuggerEvent("buildAndDebug", { "success": "false" }); - } + Telemetry.logDebuggerEvent("buildAndDebug", { "success": "false" }); } - }); + } catch (e) { + try { + await vscode.debug.startDebugging(folder, selection.configuration); + Telemetry.logDebuggerEvent("buildAndDebug", { "success": "true" }); + } catch (e) { + Telemetry.logDebuggerEvent("buildAndDebug", { "success": "false" }); + } + } })); configurationProvider.getConfigurationSnippets(); diff --git a/Extension/src/Debugger/nativeAttach.ts b/Extension/src/Debugger/nativeAttach.ts index 0180dbbd11..b4ee1aec1d 100644 --- a/Extension/src/Debugger/nativeAttach.ts +++ b/Extension/src/Debugger/nativeAttach.ts @@ -38,30 +38,29 @@ export class NativeAttachItemsProviderFactory { abstract class NativeAttachItemsProvider implements AttachItemsProvider { protected abstract getInternalProcessEntries(): Promise; - getAttachItems(): Promise { - return this.getInternalProcessEntries().then(processEntries => { - // localeCompare is significantly slower than < and > (2000 ms vs 80 ms for 10,000 elements) - // We can change to localeCompare if this becomes an issue - processEntries.sort((a, b) => { - if (a.name === undefined) { - if (b.name === undefined) { - return 0; - } - return 1; - } + async getAttachItems(): Promise { + const processEntries: Process[] = await this.getInternalProcessEntries(); + // localeCompare is significantly slower than < and > (2000 ms vs 80 ms for 10,000 elements) + // We can change to localeCompare if this becomes an issue + processEntries.sort((a, b) => { + if (a.name === undefined) { if (b.name === undefined) { - return -1; - } - const aLower: string = a.name.toLowerCase(); - const bLower: string = b.name.toLowerCase(); - if (aLower === bLower) { return 0; } - return aLower < bLower ? -1 : 1; - }); - const attachItems: AttachItem[] = processEntries.map(p => p.toAttachItem()); - return attachItems; + return 1; + } + if (b.name === undefined) { + return -1; + } + const aLower: string = a.name.toLowerCase(); + const bLower: string = b.name.toLowerCase(); + if (aLower === bLower) { + return 0; + } + return aLower < bLower ? -1 : 1; }); + const attachItems: AttachItem[] = processEntries.map(p => p.toAttachItem()); + return attachItems; } } @@ -90,7 +89,7 @@ export class PsAttachItemsProvider extends NativeAttachItemsProvider { // characters. 50 was chosen because that's the maximum length of a "label" in the // QuickPick UI in VSCode. - protected getInternalProcessEntries(): Promise { + protected async getInternalProcessEntries(): Promise { let processCmd: string = ''; switch (os.platform()) { case 'darwin': @@ -100,9 +99,10 @@ export class PsAttachItemsProvider extends NativeAttachItemsProvider { processCmd = PsProcessParser.psLinuxCommand; break; default: - return Promise.reject(new Error(localize("os.not.supported", 'Operating system "{0}" not supported.', os.platform()))); + throw new Error(localize("os.not.supported", 'Operating system "{0}" not supported.', os.platform())); } - return execChildProcess(processCmd, undefined).then(processes => PsProcessParser.ParseProcessFromPs(processes)); + const processes: string = await execChildProcess(processCmd, undefined); + return PsProcessParser.ParseProcessFromPs(processes); } } @@ -198,9 +198,10 @@ export class WmicAttachItemsProvider extends NativeAttachItemsProvider { // | 887 | 746 | // | 1308 | 1132 | - protected getInternalProcessEntries(): Promise { + protected async getInternalProcessEntries(): Promise { const wmicCommand: string = 'wmic process get Name,ProcessId,CommandLine /FORMAT:list'; - return execChildProcess(wmicCommand, undefined).then(processes => WmicProcessParser.ParseProcessFromWmic(processes)); + const processes: string = await execChildProcess(wmicCommand, undefined); + return WmicProcessParser.ParseProcessFromWmic(processes); } } diff --git a/Extension/src/LanguageServer/Providers/documentFormattingEditProvider.ts b/Extension/src/LanguageServer/Providers/documentFormattingEditProvider.ts index 077b7f1a6f..d17c3c0268 100644 --- a/Extension/src/LanguageServer/Providers/documentFormattingEditProvider.ts +++ b/Extension/src/LanguageServer/Providers/documentFormattingEditProvider.ts @@ -13,53 +13,49 @@ export class DocumentFormattingEditProvider implements vscode.DocumentFormatting this.client = client; } - public provideDocumentFormattingEdits(document: vscode.TextDocument, options: vscode.FormattingOptions, token: vscode.CancellationToken): Promise { - return new Promise((resolve, reject) => { - this.client.notifyWhenReady(() => { - const filePath: string = document.uri.fsPath; - const configCallBack = (editorConfigSettings: any | undefined) => { - const params: FormatParams = { - settings: { ...editorConfigSettings }, - uri: document.uri.toString(), - insertSpaces: options.insertSpaces, - tabSize: options.tabSize, - character: "", - range: { - start: { - character: 0, - line: 0 - }, - end: { - character: 0, - line: 0 - } - } - }; - return this.client.languageClient.sendRequest(FormatDocumentRequest, params) - .then((textEdits) => { - const result: vscode.TextEdit[] = []; - textEdits.forEach((textEdit) => { - result.push({ - range: new vscode.Range(textEdit.range.start.line, textEdit.range.start.character, textEdit.range.end.line, textEdit.range.end.character), - newText: textEdit.newText - }); - }); - resolve(result); - }); - }; - const settings: CppSettings = new CppSettings(); - if (settings.formattingEngine !== "vcFormat") { - configCallBack(undefined); - } else { - const editorConfigSettings: any = cachedEditorConfigSettings.get(filePath); - if (!editorConfigSettings) { - editorConfig.parse(filePath).then(configCallBack); - } else { - cachedEditorConfigSettings.set(filePath, editorConfigSettings); - configCallBack(editorConfigSettings); + public async provideDocumentFormattingEdits(document: vscode.TextDocument, options: vscode.FormattingOptions, token: vscode.CancellationToken): Promise { + await this.client.awaitUntilLanguageClientReady(); + const filePath: string = document.uri.fsPath; + const configCallBack = async (editorConfigSettings: any | undefined) => { + const params: FormatParams = { + settings: { ...editorConfigSettings }, + uri: document.uri.toString(), + insertSpaces: options.insertSpaces, + tabSize: options.tabSize, + character: "", + range: { + start: { + character: 0, + line: 0 + }, + end: { + character: 0, + line: 0 } } + }; + const textEdits: any = await this.client.languageClient.sendRequest(FormatDocumentRequest, params); + const results: vscode.TextEdit[] = []; + textEdits.forEach((textEdit: any) => { + results.push({ + range: new vscode.Range(textEdit.range.start.line, textEdit.range.start.character, textEdit.range.end.line, textEdit.range.end.character), + newText: textEdit.newText + }); }); - }); + return results; + }; + const settings: CppSettings = new CppSettings(); + if (settings.formattingEngine !== "vcFormat") { + return configCallBack(undefined); + } else { + const editorConfigSettings: any = cachedEditorConfigSettings.get(filePath); + if (!editorConfigSettings) { + await editorConfig.parse(filePath); + return configCallBack(undefined); + } else { + cachedEditorConfigSettings.set(filePath, editorConfigSettings); + return configCallBack(editorConfigSettings); + } + } } } diff --git a/Extension/src/LanguageServer/Providers/documentRangeFormattingEditProvider.ts b/Extension/src/LanguageServer/Providers/documentRangeFormattingEditProvider.ts index 786db25817..3e034732f5 100644 --- a/Extension/src/LanguageServer/Providers/documentRangeFormattingEditProvider.ts +++ b/Extension/src/LanguageServer/Providers/documentRangeFormattingEditProvider.ts @@ -13,53 +13,49 @@ export class DocumentRangeFormattingEditProvider implements vscode.DocumentRange this.client = client; } - public provideDocumentRangeFormattingEdits(document: vscode.TextDocument, range: vscode.Range, options: vscode.FormattingOptions, token: vscode.CancellationToken): Promise { - return new Promise((resolve, reject) => { - this.client.notifyWhenReady(() => { - const filePath: string = document.uri.fsPath; - const configCallBack = (editorConfigSettings: any | undefined) => { - const params: FormatParams = { - settings: { ...editorConfigSettings }, - uri: document.uri.toString(), - insertSpaces: options.insertSpaces, - tabSize: options.tabSize, - character: "", - range: { - start: { - character: range.start.character, - line: range.start.line - }, - end: { - character: range.end.character, - line: range.end.line - } - } - }; - return this.client.languageClient.sendRequest(FormatRangeRequest, params) - .then((textEdits) => { - const result: vscode.TextEdit[] = []; - textEdits.forEach((textEdit) => { - result.push({ - range: new vscode.Range(textEdit.range.start.line, textEdit.range.start.character, textEdit.range.end.line, textEdit.range.end.character), - newText: textEdit.newText - }); - }); - resolve(result); - }); - }; - const settings: CppSettings = new CppSettings(); - if (settings.formattingEngine !== "vcFormat") { - configCallBack(undefined); - } else { - const editorConfigSettings: any = cachedEditorConfigSettings.get(filePath); - if (!editorConfigSettings) { - editorConfig.parse(filePath).then(configCallBack); - } else { - cachedEditorConfigSettings.set(filePath, editorConfigSettings); - configCallBack(editorConfigSettings); + public async provideDocumentRangeFormattingEdits(document: vscode.TextDocument, range: vscode.Range, options: vscode.FormattingOptions, token: vscode.CancellationToken): Promise { + await this.client.awaitUntilLanguageClientReady(); + const filePath: string = document.uri.fsPath; + const configCallBack = async (editorConfigSettings: any | undefined) => { + const params: FormatParams = { + settings: { ...editorConfigSettings }, + uri: document.uri.toString(), + insertSpaces: options.insertSpaces, + tabSize: options.tabSize, + character: "", + range: { + start: { + character: range.start.character, + line: range.start.line + }, + end: { + character: range.end.character, + line: range.end.line } } + }; + const textEdits: any = await this.client.languageClient.sendRequest(FormatRangeRequest, params); + const result: vscode.TextEdit[] = []; + textEdits.forEach((textEdit: any) => { + result.push({ + range: new vscode.Range(textEdit.range.start.line, textEdit.range.start.character, textEdit.range.end.line, textEdit.range.end.character), + newText: textEdit.newText + }); }); - }); + return result; + }; + const settings: CppSettings = new CppSettings(); + if (settings.formattingEngine !== "vcFormat") { + return configCallBack(undefined); + } else { + const editorConfigSettings: any = cachedEditorConfigSettings.get(filePath); + if (!editorConfigSettings) { + await editorConfig.parse(filePath); + return configCallBack(undefined); + } else { + cachedEditorConfigSettings.set(filePath, editorConfigSettings); + return configCallBack(editorConfigSettings); + } + } }; } diff --git a/Extension/src/LanguageServer/Providers/documentSymbolProvider.ts b/Extension/src/LanguageServer/Providers/documentSymbolProvider.ts index df70afd923..7fd2488cab 100644 --- a/Extension/src/LanguageServer/Providers/documentSymbolProvider.ts +++ b/Extension/src/LanguageServer/Providers/documentSymbolProvider.ts @@ -30,15 +30,13 @@ export class DocumentSymbolProvider implements vscode.DocumentSymbolProvider { if (!this.client.TrackedDocuments.has(document)) { processDelayedDidOpen(document); } - return this.client.requestWhenReady(() => { + return this.client.requestWhenReady(async () => { const params: GetDocumentSymbolRequestParams = { uri: document.uri.toString() }; - return this.client.languageClient.sendRequest(GetDocumentSymbolRequest, params) - .then((symbols) => { - const resultSymbols: vscode.DocumentSymbol[] = this.getChildrenSymbols(symbols); - return resultSymbols; - }); + const symbols: LocalizeDocumentSymbol[] = await this.client.languageClient.sendRequest(GetDocumentSymbolRequest, params); + const resultSymbols: vscode.DocumentSymbol[] = this.getChildrenSymbols(symbols); + return resultSymbols; }); } } diff --git a/Extension/src/LanguageServer/Providers/findAllReferencesProvider.ts b/Extension/src/LanguageServer/Providers/findAllReferencesProvider.ts index 019faffb40..e4dc81ab21 100644 --- a/Extension/src/LanguageServer/Providers/findAllReferencesProvider.ts +++ b/Extension/src/LanguageServer/Providers/findAllReferencesProvider.ts @@ -14,69 +14,68 @@ export class FindAllReferencesProvider implements vscode.ReferenceProvider { } public async provideReferences(document: vscode.TextDocument, position: vscode.Position, context: vscode.ReferenceContext, token: vscode.CancellationToken): Promise { return new Promise((resolve, reject) => { - const callback: () => void = () => { + const callback: () => Promise = async () => { const params: FindAllReferencesParams = { position: Position.create(position.line, position.character), textDocument: this.client.languageClient.code2ProtocolConverter.asTextDocumentIdentifier(document) }; DefaultClient.referencesParams = params; - this.client.notifyWhenReady(() => { - // The current request is represented by referencesParams. If a request detects - // referencesParams does not match the object used when creating the request, abort it. - if (params !== DefaultClient.referencesParams) { - // Complete with nothing instead of rejecting, to avoid an error message from VS Code - const locations: vscode.Location[] = []; + await this.client.awaitUntilLanguageClientReady(); + // The current request is represented by referencesParams. If a request detects + // referencesParams does not match the object used when creating the request, abort it. + if (params !== DefaultClient.referencesParams) { + // Complete with nothing instead of rejecting, to avoid an error message from VS Code + const locations: vscode.Location[] = []; + resolve(locations); + return; + } + DefaultClient.referencesRequestPending = true; + // Register a single-fire handler for the reply. + const resultCallback: refs.ReferencesResultCallback = (result: refs.ReferencesResult | null, doResolve: boolean) => { + DefaultClient.referencesRequestPending = false; + const locations: vscode.Location[] = []; + if (result) { + result.referenceInfos.forEach((referenceInfo: refs.ReferenceInfo) => { + if (referenceInfo.type === refs.ReferenceType.Confirmed) { + const uri: vscode.Uri = vscode.Uri.file(referenceInfo.file); + const range: vscode.Range = new vscode.Range(referenceInfo.position.line, referenceInfo.position.character, referenceInfo.position.line, referenceInfo.position.character + result.text.length); + locations.push(new vscode.Location(uri, range)); + } + }); + } + // If references were canceled while in a preview state, there is not an outstanding promise. + if (doResolve) { resolve(locations); - return; } - DefaultClient.referencesRequestPending = true; - // Register a single-fire handler for the reply. - const resultCallback: refs.ReferencesResultCallback = (result: refs.ReferencesResult | null, doResolve: boolean) => { - DefaultClient.referencesRequestPending = false; - const locations: vscode.Location[] = []; - if (result) { - result.referenceInfos.forEach((referenceInfo: refs.ReferenceInfo) => { - if (referenceInfo.type === refs.ReferenceType.Confirmed) { - const uri: vscode.Uri = vscode.Uri.file(referenceInfo.file); - const range: vscode.Range = new vscode.Range(referenceInfo.position.line, referenceInfo.position.character, referenceInfo.position.line, referenceInfo.position.character + result.text.length); - locations.push(new vscode.Location(uri, range)); - } - }); - } - // If references were canceled while in a preview state, there is not an outstanding promise. - if (doResolve) { - resolve(locations); - } - if (DefaultClient.referencesPendingCancellations.length > 0) { - while (DefaultClient.referencesPendingCancellations.length > 1) { - const pendingCancel: ReferencesCancellationState = DefaultClient.referencesPendingCancellations[0]; - DefaultClient.referencesPendingCancellations.pop(); - pendingCancel.reject(); - } + if (DefaultClient.referencesPendingCancellations.length > 0) { + while (DefaultClient.referencesPendingCancellations.length > 1) { const pendingCancel: ReferencesCancellationState = DefaultClient.referencesPendingCancellations[0]; DefaultClient.referencesPendingCancellations.pop(); - pendingCancel.callback(); + pendingCancel.reject(); } - }; - if (!workspaceReferences.referencesRefreshPending) { - workspaceReferences.setResultsCallback(resultCallback); - workspaceReferences.startFindAllReferences(params); + const pendingCancel: ReferencesCancellationState = DefaultClient.referencesPendingCancellations[0]; + DefaultClient.referencesPendingCancellations.pop(); + pendingCancel.callback(); + } + }; + if (!workspaceReferences.referencesRefreshPending) { + workspaceReferences.setResultsCallback(resultCallback); + workspaceReferences.startFindAllReferences(params); + } else { + // We are responding to a refresh (preview or final result) + workspaceReferences.referencesRefreshPending = false; + if (workspaceReferences.lastResults) { + // This is a final result + const lastResults: refs.ReferencesResult = workspaceReferences.lastResults; + workspaceReferences.lastResults = null; + resultCallback(lastResults, true); } else { - // We are responding to a refresh (preview or final result) - workspaceReferences.referencesRefreshPending = false; - if (workspaceReferences.lastResults) { - // This is a final result - const lastResults: refs.ReferencesResult = workspaceReferences.lastResults; - workspaceReferences.lastResults = null; - resultCallback(lastResults, true); - } else { - // This is a preview (2nd or later preview) - workspaceReferences.referencesRequestPending = true; - workspaceReferences.setResultsCallback(resultCallback); - this.client.languageClient.sendNotification(RequestReferencesNotification, false); - } + // This is a preview (2nd or later preview) + workspaceReferences.referencesRequestPending = true; + workspaceReferences.setResultsCallback(resultCallback); + this.client.languageClient.sendNotification(RequestReferencesNotification, false); } - }); + } token.onCancellationRequested(e => { if (params === DefaultClient.referencesParams) { this.client.cancelReferences(); diff --git a/Extension/src/LanguageServer/Providers/foldingRangeProvider.ts b/Extension/src/LanguageServer/Providers/foldingRangeProvider.ts index e79a996644..bdd2bdbfa9 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 } from '../client'; +import { DefaultClient, GetFoldingRangesParams, GetFoldingRangesRequest, FoldingRangeKind, GetFoldingRangesResult } from '../client'; export class FoldingRangeProvider implements vscode.FoldingRangeProvider { private client: DefaultClient; @@ -13,47 +13,42 @@ export class FoldingRangeProvider implements vscode.FoldingRangeProvider { this.client = client; this.onDidChangeFoldingRanges = this.onDidChangeFoldingRangesEvent.event; } - provideFoldingRanges(document: vscode.TextDocument, context: vscode.FoldingContext, + async provideFoldingRanges(document: vscode.TextDocument, context: vscode.FoldingContext, token: vscode.CancellationToken): Promise { const id: number = ++DefaultClient.abortRequestId; const params: GetFoldingRangesParams = { id: id, uri: document.uri.toString() }; - return new Promise((resolve, reject) => { - this.client.notifyWhenReady(() => { - this.client.languageClient.sendRequest(GetFoldingRangesRequest, params) - .then((ranges) => { - if (ranges.canceled) { - reject(); - } else { - const result: vscode.FoldingRange[] = []; - ranges.ranges.forEach((r) => { - const foldingRange: vscode.FoldingRange = { - start: r.range.start.line, - end: r.range.end.line - }; - switch (r.kind) { - case FoldingRangeKind.Comment: - foldingRange.kind = vscode.FoldingRangeKind.Comment; - break; - case FoldingRangeKind.Imports: - foldingRange.kind = vscode.FoldingRangeKind.Imports; - break; - case FoldingRangeKind.Region: - foldingRange.kind = vscode.FoldingRangeKind.Region; - break; - default: - break; - } - result.push(foldingRange); - }); - resolve(result); - } - }); - token.onCancellationRequested(e => this.client.abortRequest(id)); + await this.client.awaitUntilLanguageClientReady(); + token.onCancellationRequested(e => this.client.abortRequest(id)); + const ranges: GetFoldingRangesResult = await this.client.languageClient.sendRequest(GetFoldingRangesRequest, params); + if (ranges.canceled) { + throw new Error('Request for providing folding ranges is cancelled.'); + } else { + const result: vscode.FoldingRange[] = []; + ranges.ranges.forEach((r) => { + const foldingRange: vscode.FoldingRange = { + start: r.range.start.line, + end: r.range.end.line + }; + switch (r.kind) { + case FoldingRangeKind.Comment: + foldingRange.kind = vscode.FoldingRangeKind.Comment; + break; + case FoldingRangeKind.Imports: + foldingRange.kind = vscode.FoldingRangeKind.Imports; + break; + case FoldingRangeKind.Region: + foldingRange.kind = vscode.FoldingRangeKind.Region; + break; + default: + break; + } + result.push(foldingRange); }); - }); + return result; + } } public refresh(): void { diff --git a/Extension/src/LanguageServer/Providers/onTypeFormattingEditProvider.ts b/Extension/src/LanguageServer/Providers/onTypeFormattingEditProvider.ts index 381796c34c..3466b07c1b 100644 --- a/Extension/src/LanguageServer/Providers/onTypeFormattingEditProvider.ts +++ b/Extension/src/LanguageServer/Providers/onTypeFormattingEditProvider.ts @@ -13,59 +13,55 @@ export class OnTypeFormattingEditProvider implements vscode.OnTypeFormattingEdit this.client = client; } - public provideOnTypeFormattingEdits(document: vscode.TextDocument, position: vscode.Position, ch: string, options: vscode.FormattingOptions, token: vscode.CancellationToken): Promise { - return new Promise((resolve, reject) => { - this.client.notifyWhenReady(() => { - const filePath: string = document.uri.fsPath; - const configCallBack = (editorConfigSettings: any | undefined) => { - const params: FormatParams = { - settings: { ...editorConfigSettings }, - uri: document.uri.toString(), - insertSpaces: options.insertSpaces, - tabSize: options.tabSize, - character: ch, - range: { - start: { - character: position.character, - line: position.line - }, - end: { - character: 0, - line: 0 - } - } - }; - return this.client.languageClient.sendRequest(FormatOnTypeRequest, params) - .then((textEdits) => { - const result: vscode.TextEdit[] = []; - textEdits.forEach((textEdit) => { - result.push({ - range: new vscode.Range(textEdit.range.start.line, textEdit.range.start.character, textEdit.range.end.line, textEdit.range.end.character), - newText: textEdit.newText - }); - }); - resolve(result); - }); - }; - const settings: CppSettings = new CppSettings(); - if (settings.formattingEngine !== "vcFormat") { - // If not using vcFormat, only process on-type requests for ';' - if (ch !== ';') { - const result: vscode.TextEdit[] = []; - resolve(result); - } else { - configCallBack(undefined); - } - } else { - const editorConfigSettings: any = cachedEditorConfigSettings.get(filePath); - if (!editorConfigSettings) { - editorConfig.parse(filePath).then(configCallBack); - } else { - cachedEditorConfigSettings.set(filePath, editorConfigSettings); - configCallBack(editorConfigSettings); + public async provideOnTypeFormattingEdits(document: vscode.TextDocument, position: vscode.Position, ch: string, options: vscode.FormattingOptions, token: vscode.CancellationToken): Promise { + await this.client.awaitUntilLanguageClientReady(); + const filePath: string = document.uri.fsPath; + const configCallBack = async (editorConfigSettings: any | undefined) => { + const params: FormatParams = { + settings: { ...editorConfigSettings }, + uri: document.uri.toString(), + insertSpaces: options.insertSpaces, + tabSize: options.tabSize, + character: ch, + range: { + start: { + character: position.character, + line: position.line + }, + end: { + character: 0, + line: 0 } } + }; + const textEdits: any[] = await this.client.languageClient.sendRequest(FormatOnTypeRequest, params); + const result: vscode.TextEdit[] = []; + textEdits.forEach((textEdit) => { + result.push({ + range: new vscode.Range(textEdit.range.start.line, textEdit.range.start.character, textEdit.range.end.line, textEdit.range.end.character), + newText: textEdit.newText + }); }); - }); + return result; + }; + const settings: CppSettings = new CppSettings(); + if (settings.formattingEngine !== "vcFormat") { + // If not using vcFormat, only process on-type requests for ';' + if (ch !== ';') { + const result: vscode.TextEdit[] = []; + return result; + } else { + return configCallBack(undefined); + } + } else { + const editorConfigSettings: any = cachedEditorConfigSettings.get(filePath); + if (!editorConfigSettings) { + await editorConfig.parse(filePath); + return configCallBack(undefined); + } else { + cachedEditorConfigSettings.set(filePath, editorConfigSettings); + return configCallBack(editorConfigSettings); + } + } } } diff --git a/Extension/src/LanguageServer/Providers/renameProvider.ts b/Extension/src/LanguageServer/Providers/renameProvider.ts index 6a62ce6ddd..661531b10b 100644 --- a/Extension/src/LanguageServer/Providers/renameProvider.ts +++ b/Extension/src/LanguageServer/Providers/renameProvider.ts @@ -23,7 +23,7 @@ export class RenameProvider implements vscode.RenameProvider { if (settings.renameRequiresIdentifier && !util.isValidIdentifier(newName)) { vscode.window.showErrorMessage(localize("invalid.identifier.for.rename", "Invalid identifier provided for the Rename Symbol operation.")); const workspaceEdit: vscode.WorkspaceEdit = new vscode.WorkspaceEdit(); - return Promise.resolve(workspaceEdit); + return workspaceEdit; } // Normally, VS Code considers rename to be an atomic operation. // If the user clicks anywhere in the document, it attempts to cancel it. @@ -33,67 +33,66 @@ export class RenameProvider implements vscode.RenameProvider { DefaultClient.renamePending = true; ++DefaultClient.renameRequestsPending; return new Promise((resolve, reject) => { - const callback: () => void = () => { + const callback: () => Promise = async () => { const params: RenameParams = { newName: newName, position: Position.create(position.line, position.character), textDocument: this.client.languageClient.code2ProtocolConverter.asTextDocumentIdentifier(document) }; DefaultClient.referencesParams = params; - this.client.notifyWhenReady(() => { - // The current request is represented by referencesParams. If a request detects - // referencesParams does not match the object used when creating the request, abort it. - if (params !== DefaultClient.referencesParams) { - if (--DefaultClient.renameRequestsPending === 0) { - DefaultClient.renamePending = false; - } - - // Complete with nothing instead of rejecting, to avoid an error message from VS Code - const workspaceEdit: vscode.WorkspaceEdit = new vscode.WorkspaceEdit(); - resolve(workspaceEdit); - return; + await this.client.awaitUntilLanguageClientReady(); + // The current request is represented by referencesParams. If a request detects + // referencesParams does not match the object used when creating the request, abort it. + if (params !== DefaultClient.referencesParams) { + if (--DefaultClient.renameRequestsPending === 0) { + DefaultClient.renamePending = false; } - DefaultClient.referencesRequestPending = true; - workspaceReferences.setResultsCallback((referencesResult: refs.ReferencesResult | null, doResolve: boolean) => { - DefaultClient.referencesRequestPending = false; - --DefaultClient.renameRequestsPending; - const workspaceEdit: vscode.WorkspaceEdit = new vscode.WorkspaceEdit(); - const cancelling: boolean = DefaultClient.referencesPendingCancellations.length > 0; - if (cancelling) { - while (DefaultClient.referencesPendingCancellations.length > 1) { - const pendingCancel: ReferencesCancellationState = DefaultClient.referencesPendingCancellations[0]; - DefaultClient.referencesPendingCancellations.pop(); - pendingCancel.reject(); - } + + // Complete with nothing instead of rejecting, to avoid an error message from VS Code + const workspaceEdit: vscode.WorkspaceEdit = new vscode.WorkspaceEdit(); + resolve(workspaceEdit); + return; + } + DefaultClient.referencesRequestPending = true; + workspaceReferences.setResultsCallback((referencesResult: refs.ReferencesResult | null, doResolve: boolean) => { + DefaultClient.referencesRequestPending = false; + --DefaultClient.renameRequestsPending; + const workspaceEdit: vscode.WorkspaceEdit = new vscode.WorkspaceEdit(); + const cancelling: boolean = DefaultClient.referencesPendingCancellations.length > 0; + if (cancelling) { + while (DefaultClient.referencesPendingCancellations.length > 1) { const pendingCancel: ReferencesCancellationState = DefaultClient.referencesPendingCancellations[0]; DefaultClient.referencesPendingCancellations.pop(); - pendingCancel.callback(); - } else { - if (DefaultClient.renameRequestsPending === 0) { - DefaultClient.renamePending = false; - } - // If rename UI was canceled, we will get a null result. - // If null, return an empty list to avoid Rename failure dialog. - if (referencesResult) { - for (const reference of referencesResult.referenceInfos) { - const uri: vscode.Uri = vscode.Uri.file(reference.file); - const range: vscode.Range = new vscode.Range(reference.position.line, reference.position.character, reference.position.line, reference.position.character + referencesResult.text.length); - const metadata: vscode.WorkspaceEditEntryMetadata = { - needsConfirmation: reference.type !== refs.ReferenceType.Confirmed, - label: refs.getReferenceTagString(reference.type, false, true), - iconPath: refs.getReferenceItemIconPath(reference.type, false) - }; - workspaceEdit.replace(uri, range, newName, metadata); - } - } + pendingCancel.reject(); } - if (referencesResult && (referencesResult.referenceInfos === null || referencesResult.referenceInfos.length === 0)) { - vscode.window.showErrorMessage(localize("unable.to.locate.selected.symbol", "A definition for the selected symbol could not be located.")); + const pendingCancel: ReferencesCancellationState = DefaultClient.referencesPendingCancellations[0]; + DefaultClient.referencesPendingCancellations.pop(); + pendingCancel.callback(); + } else { + if (DefaultClient.renameRequestsPending === 0) { + DefaultClient.renamePending = false; } - resolve(workspaceEdit); - }); - workspaceReferences.startRename(params); + // If rename UI was canceled, we will get a null result. + // If null, return an empty list to avoid Rename failure dialog. + if (referencesResult) { + for (const reference of referencesResult.referenceInfos) { + const uri: vscode.Uri = vscode.Uri.file(reference.file); + const range: vscode.Range = new vscode.Range(reference.position.line, reference.position.character, reference.position.line, reference.position.character + referencesResult.text.length); + const metadata: vscode.WorkspaceEditEntryMetadata = { + needsConfirmation: reference.type !== refs.ReferenceType.Confirmed, + label: refs.getReferenceTagString(reference.type, false, true), + iconPath: refs.getReferenceItemIconPath(reference.type, false) + }; + workspaceEdit.replace(uri, range, newName, metadata); + } + } + } + if (referencesResult && (referencesResult.referenceInfos === null || referencesResult.referenceInfos.length === 0)) { + vscode.window.showErrorMessage(localize("unable.to.locate.selected.symbol", "A definition for the selected symbol could not be located.")); + } + resolve(workspaceEdit); }); + workspaceReferences.startRename(params); }; if (DefaultClient.referencesRequestPending || workspaceReferences.symbolSearchInProgress) { diff --git a/Extension/src/LanguageServer/Providers/semanticTokensProvider.ts b/Extension/src/LanguageServer/Providers/semanticTokensProvider.ts index 0f142f811c..4d8f1d3a2d 100644 --- a/Extension/src/LanguageServer/Providers/semanticTokensProvider.ts +++ b/Extension/src/LanguageServer/Providers/semanticTokensProvider.ts @@ -3,7 +3,7 @@ * See 'LICENSE' in the project root for license information. * ------------------------------------------------------------------------------------------ */ import * as vscode from 'vscode'; -import { DefaultClient, GetSemanticTokensParams, GetSemanticTokensRequest, openFileVersions } from '../client'; +import { DefaultClient, GetSemanticTokensParams, GetSemanticTokensRequest, openFileVersions, GetSemanticTokensResult } from '../client'; export class SemanticTokensProvider implements vscode.DocumentSemanticTokensProvider { private client: DefaultClient; @@ -17,41 +17,36 @@ export class SemanticTokensProvider implements vscode.DocumentSemanticTokensProv } public async provideDocumentSemanticTokens(document: vscode.TextDocument, token: vscode.CancellationToken): Promise { - return new Promise((resolve, reject) => { - this.client.notifyWhenReady(() => { - const uriString: string = document.uri.toString(); - // First check the token cache to see if we already have results for that file and version - const cache: [number, vscode.SemanticTokens] | undefined = this.tokenCaches.get(uriString); - if (cache && cache[0] === document.version) { - resolve(cache[1]); + await this.client.awaitUntilLanguageClientReady(); + const uriString: string = document.uri.toString(); + // First check the token cache to see if we already have results for that file and version + const cache: [number, vscode.SemanticTokens] | undefined = this.tokenCaches.get(uriString); + if (cache && cache[0] === document.version) { + return cache[1]; + } else { + token.onCancellationRequested(_e => this.client.abortRequest(id)); + const id: number = ++DefaultClient.abortRequestId; + const params: GetSemanticTokensParams = { + id: id, + uri: uriString + }; + const tokensResult: GetSemanticTokensResult = await this.client.languageClient.sendRequest(GetSemanticTokensRequest, params); + if (tokensResult.canceled) { + throw new Error('Request for providing semantic tokens is cancelled.'); + } else { + if (tokensResult.fileVersion !== openFileVersions.get(uriString)) { + throw new Error('The semantic tokens are not related to the current version of the document.'); } else { - const id: number = ++DefaultClient.abortRequestId; - const params: GetSemanticTokensParams = { - id: id, - uri: uriString - }; - this.client.languageClient.sendRequest(GetSemanticTokensRequest, params) - .then((tokensResult) => { - if (tokensResult.canceled) { - reject(); - } else { - if (tokensResult.fileVersion !== openFileVersions.get(uriString)) { - reject(); - } else { - const builder: vscode.SemanticTokensBuilder = new vscode.SemanticTokensBuilder(this.client.semanticTokensLegend); - tokensResult.tokens.forEach((token) => { - builder.push(token.line, token.character, token.length, token.type, token.modifiers); - }); - const tokens: vscode.SemanticTokens = builder.build(); - this.tokenCaches.set(uriString, [tokensResult.fileVersion, tokens]); - resolve(tokens); - } - } - }); - token.onCancellationRequested(e => this.client.abortRequest(id)); + const builder: vscode.SemanticTokensBuilder = new vscode.SemanticTokensBuilder(this.client.semanticTokensLegend); + tokensResult.tokens.forEach((token) => { + builder.push(token.line, token.character, token.length, token.type, token.modifiers); + }); + const tokens: vscode.SemanticTokens = builder.build(); + this.tokenCaches.set(uriString, [tokensResult.fileVersion, tokens]); + return tokens; } - }); - }); + } + } } public invalidateFile(uri: string): void { diff --git a/Extension/src/LanguageServer/Providers/workspaceSymbolProvider.ts b/Extension/src/LanguageServer/Providers/workspaceSymbolProvider.ts index 31fa30680a..b2b8666946 100644 --- a/Extension/src/LanguageServer/Providers/workspaceSymbolProvider.ts +++ b/Extension/src/LanguageServer/Providers/workspaceSymbolProvider.ts @@ -3,7 +3,7 @@ * See 'LICENSE' in the project root for license information. * ------------------------------------------------------------------------------------------ */ import * as vscode from 'vscode'; -import { DefaultClient, GetSymbolInfoRequest, WorkspaceSymbolParams } from '../client'; +import { DefaultClient, GetSymbolInfoRequest, WorkspaceSymbolParams, LocalizeSymbolInformation } from '../client'; import * as util from '../../common'; export class WorkspaceSymbolProvider implements vscode.WorkspaceSymbolProvider { @@ -17,28 +17,26 @@ export class WorkspaceSymbolProvider implements vscode.WorkspaceSymbolProvider { query: query }; - return this.client.languageClient.sendRequest(GetSymbolInfoRequest, params) - .then((symbols) => { - const resultSymbols: vscode.SymbolInformation[] = []; + const symbols: LocalizeSymbolInformation[] = await this.client.languageClient.sendRequest(GetSymbolInfoRequest, params); + const resultSymbols: vscode.SymbolInformation[] = []; - // Convert to vscode.Command array - symbols.forEach((symbol) => { - const suffix: string = util.getLocalizedString(symbol.suffix); - let name: string = symbol.name; - if (suffix.length) { - name = name + ' (' + suffix + ')'; - } - const range: vscode.Range = new vscode.Range(symbol.location.range.start.line, symbol.location.range.start.character, symbol.location.range.end.line, symbol.location.range.end.character); - const uri: vscode.Uri = vscode.Uri.parse(symbol.location.uri.toString()); - const vscodeSymbol: vscode.SymbolInformation = new vscode.SymbolInformation( - name, - symbol.kind, - symbol.containerName, - new vscode.Location(uri, range) - ); - resultSymbols.push(vscodeSymbol); - }); - return resultSymbols; - }); + // Convert to vscode.Command array + symbols.forEach((symbol) => { + const suffix: string = util.getLocalizedString(symbol.suffix); + let name: string = symbol.name; + if (suffix.length) { + name = name + ' (' + suffix + ')'; + } + const range: vscode.Range = new vscode.Range(symbol.location.range.start.line, symbol.location.range.start.character, symbol.location.range.end.line, symbol.location.range.end.character); + const uri: vscode.Uri = vscode.Uri.parse(symbol.location.uri.toString()); + const vscodeSymbol: vscode.SymbolInformation = new vscode.SymbolInformation( + name, + symbol.kind, + symbol.containerName, + new vscode.Location(uri, range) + ); + resultSymbols.push(vscodeSymbol); + }); + return resultSymbols; } } diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index 43e733b7ce..4ed8073fbb 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -110,6 +110,10 @@ function logLocalized(params: LocalizeStringParams): void { log(output); } +/** Note: We should not await on the following functions, + * or any funstion that returns a promise acquired from them, + * vscode.window.showInformationMessage, vscode.window.showWarningMessage, vscode.window.showErrorMessage +*/ function showMessageWindow(params: ShowMessageWindowParams): void { const message: string = util.getLocalizedString(params.localizeStringParams); switch (params.type) { @@ -308,7 +312,7 @@ interface Location { range: Range; } -interface LocalizeSymbolInformation { +export interface LocalizeSymbolInformation { name: string; kind: vscode.SymbolKind; location: Location; @@ -362,7 +366,7 @@ interface FoldingRange { range: Range; } -interface GetFoldingRangesResult { +export interface GetFoldingRangesResult { canceled: boolean; ranges: FoldingRange[]; } @@ -384,7 +388,7 @@ interface SemanticToken { modifiers?: number; } -interface GetSemanticTokensResult { +export interface GetSemanticTokensResult { fileVersion: number; canceled: boolean; tokens: SemanticToken[]; @@ -578,7 +582,8 @@ export interface Client { takeOwnership(document: vscode.TextDocument): void; queueTask(task: () => Thenable): Thenable; requestWhenReady(request: () => Thenable): Thenable; - notifyWhenReady(notify: () => void): void; + notifyWhenLanguageClientReady(notify: () => void): void; + awaitUntilLanguageClientReady(): void; requestSwitchHeaderSource(rootPath: string, fileName: string): Thenable; activeDocumentChanged(document: vscode.TextDocument): void; activate(): void; @@ -709,7 +714,8 @@ export class DefaultClient implements Client { * All public methods on this class must be guarded by the "pendingTask" promise. Requests and notifications received before the task is * complete are executed after this promise is resolved. * @see requestWhenReady(request) - * @see notifyWhenReady(notify) + * @see notifyWhenLanguageClientReady(notify) + * @see awaitUntilLanguageClientReady() */ constructor(allClients: ClientCollection, workspaceFolder?: vscode.WorkspaceFolder) { @@ -749,8 +755,9 @@ export class DefaultClient implements Client { ui.bind(this); // requests/notifications are deferred until this.languageClient is set. - this.queueBlockingTask(() => languageClient.onReady().then( - () => { + this.queueBlockingTask(async () => { + await languageClient.onReady(); + try { const workspaceFolder: vscode.WorkspaceFolder | undefined = this.rootFolder; this.innerConfiguration = new configs.CppProperties(rootUri, workspaceFolder); this.innerConfiguration.ConfigurationsChanged((e) => this.onConfigurationsChanged(e)); @@ -769,7 +776,7 @@ export class DefaultClient implements Client { } public async provideCodeActions(document: vscode.TextDocument, range: vscode.Range | vscode.Selection, context: vscode.CodeActionContext, token: vscode.CancellationToken): Promise<(vscode.Command | vscode.CodeAction)[]> { - return this.client.requestWhenReady(() => { + return this.client.requestWhenReady(async () => { let r: Range; if (range instanceof vscode.Selection) { if (range.active.isBefore(range.anchor)) { @@ -786,26 +793,24 @@ export class DefaultClient implements Client { uri: document.uri.toString() }; - return this.client.languageClient.sendRequest(GetCodeActionsRequest, params) - .then((commands) => { - const resultCodeActions: vscode.CodeAction[] = []; - - // Convert to vscode.CodeAction array - commands.forEach((command) => { - const title: string = util.getLocalizedString(command.localizeStringParams); - const vscodeCodeAction: vscode.CodeAction = { - title: title, - command: { - title: title, - command: command.command, - arguments: command.arguments - } - }; - resultCodeActions.push(vscodeCodeAction); - }); - - return resultCodeActions; - }); + const commands: CodeActionCommand[] = await this.client.languageClient.sendRequest(GetCodeActionsRequest, params); + const resultCodeActions: vscode.CodeAction[] = []; + + // Convert to vscode.CodeAction array + commands.forEach((command) => { + const title: string = util.getLocalizedString(command.localizeStringParams); + const vscodeCodeAction: vscode.CodeAction = { + title: title, + command: { + title: title, + command: command.command, + arguments: command.arguments + } + }; + resultCodeActions.push(vscodeCodeAction); + }); + + return resultCodeActions; }); } } @@ -833,50 +838,48 @@ export class DefaultClient implements Client { // The configurations will not be sent to the language server until the default include paths and frameworks have been set. // The event handlers must be set before this happens. - return languageClient.sendRequest(QueryCompilerDefaultsRequest, {}).then((inputCompilerDefaults: configs.CompilerDefaults) => { - compilerDefaults = inputCompilerDefaults; - this.configuration.CompilerDefaults = compilerDefaults; - - // Only register file watchers, providers, and the real commands after the extension has finished initializing, - // e.g. prevents empty c_cpp_properties.json from generation. - registerCommands(); - - this.registerFileWatcher(); - - this.disposables.push(vscode.languages.registerRenameProvider(this.documentSelector, new RenameProvider(this))); - this.disposables.push(vscode.languages.registerReferenceProvider(this.documentSelector, new FindAllReferencesProvider(this))); - this.disposables.push(vscode.languages.registerWorkspaceSymbolProvider(new WorkspaceSymbolProvider(this))); - this.disposables.push(vscode.languages.registerDocumentSymbolProvider(this.documentSelector, new DocumentSymbolProvider(this), undefined)); - this.disposables.push(vscode.languages.registerCodeActionsProvider(this.documentSelector, new CodeActionProvider(this), undefined)); - const settings: CppSettings = new CppSettings(); - 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"); - } - if (settings.codeFolding) { - this.codeFoldingProvider = new FoldingRangeProvider(this); - this.codeFoldingProviderDisposable = vscode.languages.registerFoldingRangeProvider(this.documentSelector, this.codeFoldingProvider); - } - if (settings.enhancedColorization && this.semanticTokensLegend) { - this.semanticTokensProvider = new SemanticTokensProvider(this); - this.semanticTokensProviderDisposable = vscode.languages.registerDocumentSemanticTokensProvider(this.documentSelector, this.semanticTokensProvider, this.semanticTokensLegend); - } + const inputCompilerDefaults: configs.CompilerDefaults = await languageClient.sendRequest(QueryCompilerDefaultsRequest, {}); + compilerDefaults = inputCompilerDefaults; + this.configuration.CompilerDefaults = compilerDefaults; - // Listen for messages from the language server. - this.registerNotifications(); - }); + // Only register file watchers, providers, and the real commands after the extension has finished initializing, + // e.g. prevents empty c_cpp_properties.json from generation. + registerCommands(); + + this.registerFileWatcher(); + + this.disposables.push(vscode.languages.registerRenameProvider(this.documentSelector, new RenameProvider(this))); + this.disposables.push(vscode.languages.registerReferenceProvider(this.documentSelector, new FindAllReferencesProvider(this))); + this.disposables.push(vscode.languages.registerWorkspaceSymbolProvider(new WorkspaceSymbolProvider(this))); + this.disposables.push(vscode.languages.registerDocumentSymbolProvider(this.documentSelector, new DocumentSymbolProvider(this), undefined)); + this.disposables.push(vscode.languages.registerCodeActionsProvider(this.documentSelector, new CodeActionProvider(this), undefined)); + const settings: CppSettings = new CppSettings(); + 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"); + } + if (settings.codeFolding) { + this.codeFoldingProvider = new FoldingRangeProvider(this); + this.codeFoldingProviderDisposable = vscode.languages.registerFoldingRangeProvider(this.documentSelector, this.codeFoldingProvider); + } + if (settings.enhancedColorization && this.semanticTokensLegend) { + this.semanticTokensProvider = new SemanticTokensProvider(this); + this.semanticTokensProviderDisposable = vscode.languages.registerDocumentSemanticTokensProvider(this.documentSelector, this.semanticTokensProvider, this.semanticTokensLegend); + } + // Listen for messages from the language server. + this.registerNotifications(); } else { this.configuration.CompilerDefaults = compilerDefaults; } - }, - (err) => { + } catch (err) { this.isSupported = false; // Running on an OS we don't support yet. if (!failureMessageShown) { failureMessageShown = true; vscode.window.showErrorMessage(localize("unable.to.start", "Unable to start the C/C++ language server. IntelliSense features will be disabled. Error: {0}", String(err))); } - })); + } + }); } catch (err) { this.isSupported = false; // Running on an OS we don't support yet. if (!failureMessageShown) { @@ -1338,7 +1341,7 @@ export class DefaultClient implements Client { public sendDidChangeSettings(settings: any): void { // Send settings json to native side - this.notifyWhenReady(() => { + this.notifyWhenLanguageClientReady(() => { this.languageClient.sendNotification(DidChangeSettingsNotification, {settings, workspaceFolderUri: this.RootPath}); }); } @@ -1346,7 +1349,7 @@ export class DefaultClient implements Client { public onDidChangeSettings(event: vscode.ConfigurationChangeEvent, isFirstClient: boolean): { [key: string]: string } { this.sendAllSettings(); const changedSettings: { [key: string]: string } = this.settingsTracker.getChangedSettings(); - this.notifyWhenReady(() => { + this.notifyWhenLanguageClientReady(() => { if (Object.keys(changedSettings).length > 0) { if (isFirstClient) { if (changedSettings["commentContinuationPatterns"]) { @@ -1468,7 +1471,7 @@ export class DefaultClient implements Client { this.pauseParsing(); } }; - return this.notifyWhenReady(() => { + return this.notifyWhenLanguageClientReady(() => { if (this.registeredProviders.includes(provider)) { return; // Prevent duplicate processing. } @@ -1486,22 +1489,20 @@ export class DefaultClient implements Client { ask.Value = true; } if (ask.Value) { - ui.showConfigureCustomProviderMessage(() => { + ui.showConfigureCustomProviderMessage(async () => { const message: string = (vscode.workspace.workspaceFolders && vscode.workspace.workspaceFolders.length > 1) ? localize("provider.configure.folder", "{0} would like to configure IntelliSense for the '{1}' folder.", provider.name, this.Name) : localize("provider.configure.this.folder", "{0} would like to configure IntelliSense for this folder.", provider.name); const allow: string = localize("allow.button", "Allow"); const dontAllow: string = localize("dont.allow.button", "Don't Allow"); const askLater: string = localize("ask.me.later.button", "Ask Me Later"); - - return vscode.window.showInformationMessage(message, allow, dontAllow, askLater).then(result => { + return vscode.window.showInformationMessage(message, allow, dontAllow, askLater).then(async result => { switch (result) { case allow: { - this.configuration.updateCustomConfigurationProvider(provider.extensionId).then(() => { - onRegistered(); - ask.Value = false; - telemetry.logLanguageServerEvent("customConfigurationProvider", { "providerId": provider.extensionId }); - }); + await this.configuration.updateCustomConfigurationProvider(provider.extensionId); + onRegistered(); + ask.Value = false; + telemetry.logLanguageServerEvent("customConfigurationProvider", { "providerId": provider.extensionId }); return true; } case dontAllow: { @@ -1514,8 +1515,7 @@ export class DefaultClient implements Client { } return false; }); - }, - () => ask.Value = false); + }, () => ask.Value = false); } } else if (isSameProviderExtensionId(selectedProvider, provider.extensionId)) { onRegistered(); @@ -1528,7 +1528,7 @@ export class DefaultClient implements Client { } public updateCustomConfigurations(requestingProvider?: CustomConfigurationProvider1): Thenable { - return this.notifyWhenReady(() => { + return this.notifyWhenLanguageClientReady(() => { if (!this.configurationProvider) { this.clearCustomConfigurations(); return; @@ -1550,8 +1550,8 @@ export class DefaultClient implements Client { }); } - public updateCustomBrowseConfiguration(requestingProvider?: CustomConfigurationProvider1): Thenable { - return this.notifyWhenReady(() => { + public updateCustomBrowseConfiguration(requestingProvider?: CustomConfigurationProvider1): Promise { + return this.notifyWhenLanguageClientReady(() => { if (!this.configurationProvider) { return; } @@ -1671,7 +1671,7 @@ export class DefaultClient implements Client { } public async rescanFolder(): Promise { - await this.notifyWhenReady(() => this.languageClient.sendNotification(RescanFolderNotification)); + await this.notifyWhenLanguageClientReady(() => this.languageClient.sendNotification(RescanFolderNotification)); } public async provideCustomConfiguration(docUri: vscode.Uri, requestFile?: string): Promise { @@ -1683,16 +1683,16 @@ export class DefaultClient implements Client { const providerId: string | undefined = this.configurationProvider; if (!providerId) { onFinished(); - return Promise.resolve(); + return; } const provider: CustomConfigurationProvider1 | undefined = getCustomConfigProviders().get(providerId); if (!provider) { onFinished(); - return Promise.resolve(); + return; } if (!provider.isReady) { onFinished(); - return Promise.reject(`${this.configurationProvider} is not ready`); + throw new Error(`${this.configurationProvider} is not ready`); } return this.queueBlockingTask(async () => { const tokenSource: vscode.CancellationTokenSource = new vscode.CancellationTokenSource(); @@ -1708,7 +1708,7 @@ export class DefaultClient implements Client { if (!response.candidates || response.candidates.length === 0) { // If we didn't receive any candidates, no configuration is needed. onFinished(); - return Promise.resolve(); + return; } // Need to loop through candidates, to see if we can get a custom configuration from any of them. @@ -1734,43 +1734,42 @@ export class DefaultClient implements Client { } } }; - return this.callTaskWithTimeout(provideConfigurationAsync, configProviderTimeout, tokenSource).then( - (configs?: SourceFileConfigurationItem[] | null) => { - if (configs && configs.length > 0) { - this.sendCustomConfigurations(configs, provider.version); - } + const configs: SourceFileConfigurationItem[] | null | undefined = await this.callTaskWithTimeout(provideConfigurationAsync, configProviderTimeout, tokenSource); + try { + if (configs && configs.length > 0) { + this.sendCustomConfigurations(configs, provider.version); + } + onFinished(); + } catch (err) { + if (requestFile) { onFinished(); - }, - (err) => { - if (requestFile) { - onFinished(); + return; + } + const settings: CppSettings = new CppSettings(this.RootUri); + if (settings.configurationWarnings === "Enabled" && !this.isExternalHeader(docUri) && !vscode.debug.activeDebugSession) { + const dismiss: string = localize("dismiss.button", "Dismiss"); + const disable: string = localize("diable.warnings.button", "Disable Warnings"); + const configName: string | undefined = this.configuration.CurrentConfiguration?.name; + if (!configName) { return; } - const settings: CppSettings = new CppSettings(this.RootUri); - if (settings.configurationWarnings === "Enabled" && !this.isExternalHeader(docUri) && !vscode.debug.activeDebugSession) { - const dismiss: string = localize("dismiss.button", "Dismiss"); - const disable: string = localize("diable.warnings.button", "Disable Warnings"); - const configName: string | undefined = this.configuration.CurrentConfiguration?.name; - if (!configName) { - return; - } - let message: string = localize("unable.to.provide.configuraiton", - "{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) { - message += ` (${err})`; - } + let message: string = localize("unable.to.provide.configuraiton", + "{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) { + message += ` (${err})`; + } - vscode.window.showInformationMessage(message, dismiss, disable).then(response => { - switch (response) { - case disable: { - settings.toggleSetting("configurationWarnings", "Enabled", "Disabled"); - break; - } + vscode.window.showInformationMessage(message, dismiss, disable).then(response => { + switch (response) { + case disable: { + settings.toggleSetting("configurationWarnings", "Enabled", "Disabled"); + break; } - }); - } - }); + } + }); + } + } }); } @@ -1841,7 +1840,7 @@ export class DefaultClient implements Client { text: document.getText() } }; - this.notifyWhenReady(() => this.languageClient.sendNotification(DidOpenNotification, params)); + this.notifyWhenLanguageClientReady(() => this.languageClient.sendNotification(DidOpenNotification, params)); this.trackedDocuments.add(document); } @@ -1850,9 +1849,9 @@ export class DefaultClient implements Client { * before attempting to send messages or operate on the client. */ - public queueTask(task: () => Thenable): Thenable { + public async queueTask(task: () => Thenable): Promise { if (this.isSupported) { - const nextTask: () => Thenable = async () => { + const nextTask: () => Promise = async () => { try { return await task(); } catch (err) { @@ -1860,16 +1859,17 @@ export class DefaultClient implements Client { throw err; } }; - if (pendingTask && !pendingTask.Done) { // We don't want the queue to stall because of a rejected promise. - return pendingTask.getPromise().then(nextTask, nextTask); + try { + await pendingTask.getPromise(); + } catch (e) { } } else { pendingTask = undefined; - return nextTask(); } + return nextTask(); } else { - return Promise.reject(localize("unsupported.client", "Unsupported client")); + throw new Error(localize("unsupported.client", "Unsupported client")); } } @@ -1878,16 +1878,16 @@ export class DefaultClient implements Client { * during language client startup and for custom configuration providers. * @param task The task that blocks all future tasks */ - private queueBlockingTask(task: () => Thenable): Thenable { + private async queueBlockingTask(task: () => Thenable): Promise { if (this.isSupported) { pendingTask = new util.BlockingTask(task, pendingTask); return pendingTask.getPromise(); } else { - return Promise.reject(localize("unsupported.client", "Unsupported client")); + throw new Error (localize("unsupported.client", "Unsupported client")); } } - private callTaskWithTimeout(task: () => Thenable, ms: number, cancelToken?: vscode.CancellationTokenSource): Thenable { + private callTaskWithTimeout(task: () => Thenable, ms: number, cancelToken?: vscode.CancellationTokenSource): Promise { let timer: NodeJS.Timer; // Create a promise that rejects in milliseconds const timeout: () => Promise = () => new Promise((resolve, reject) => { @@ -1916,13 +1916,20 @@ export class DefaultClient implements Client { return this.queueTask(request); } - public notifyWhenReady(notify: () => T): Thenable { - const task: () => Thenable = () => new Promise(resolve => { + public notifyWhenLanguageClientReady(notify: () => T): Promise { + const task: () => Promise = () => new Promise(resolve => { resolve(notify()); }); return this.queueTask(task); } + public awaitUntilLanguageClientReady(): Thenable { + const task: () => Thenable = () => new Promise(resolve => { + resolve(); + }); + return this.queueTask(task); + } + /** * listen for notifications from the language server. */ @@ -2116,30 +2123,29 @@ export class DefaultClient implements Client { if (!client.configuration.CurrentConfiguration?.configurationProvider) { const showIntelliSenseFallbackMessage: PersistentState = new PersistentState("CPP.showIntelliSenseFallbackMessage", true); if (showIntelliSenseFallbackMessage.Value) { - ui.showConfigureIncludePathMessage(() => { + ui.showConfigureIncludePathMessage(async () => { const configJSON: string = localize("configure.json.button", "Configure (JSON)"); const configUI: string = localize("configure.ui.button", "Configure (UI)"); const dontShowAgain: string = localize("dont.show.again", "Don't Show Again"); const fallbackMsg: string = client.configuration.VcpkgInstalled ? localize("update.your.intellisense.settings", "Update your IntelliSense settings or use Vcpkg to install libraries to help find missing headers.") : localize("configure.your.intellisense.settings", "Configure your IntelliSense settings to help find missing headers."); - return vscode.window.showInformationMessage(fallbackMsg, configJSON, configUI, dontShowAgain).then((value) => { + return vscode.window.showInformationMessage(fallbackMsg, configJSON, configUI, dontShowAgain).then(async (value) => { + let commands: string[]; switch (value) { case configJSON: - vscode.commands.getCommands(true).then((commands: string[]) => { - if (commands.indexOf("workbench.action.problems.focus") >= 0) { - vscode.commands.executeCommand("workbench.action.problems.focus"); - } - }); + commands = await vscode.commands.getCommands(true); + if (commands.indexOf("workbench.action.problems.focus") >= 0) { + vscode.commands.executeCommand("workbench.action.problems.focus"); + } client.handleConfigurationEditJSONCommand(); telemetry.logLanguageServerEvent("SettingsCommand", { "toast": "json" }, undefined); break; case configUI: - vscode.commands.getCommands(true).then((commands: string[]) => { - if (commands.indexOf("workbench.action.problems.focus") >= 0) { - vscode.commands.executeCommand("workbench.action.problems.focus"); - } - }); + commands = await vscode.commands.getCommands(true); + if (commands.indexOf("workbench.action.problems.focus") >= 0) { + vscode.commands.executeCommand("workbench.action.problems.focus"); + } client.handleConfigurationEditUICommand(); telemetry.logLanguageServerEvent("SettingsCommand", { "toast": "ui" }, undefined); break; @@ -2149,8 +2155,7 @@ export class DefaultClient implements Client { } return true; }); - }, - () => showIntelliSenseFallbackMessage.Value = false); + }, () => showIntelliSenseFallbackMessage.Value = false); } } } @@ -2241,7 +2246,7 @@ export class DefaultClient implements Client { ? localize("auto-configure.intellisense.folder", "Would you like to use {0} to auto-configure IntelliSense for the '{1}' folder?", compileCommandStr, client.Name) : localize("auto-configure.intellisense.this.folder", "Would you like to use {0} to auto-configure IntelliSense for this folder?", compileCommandStr); - ui.showConfigureCompileCommandsMessage(() => { + ui.showConfigureCompileCommandsMessage(async () => { const yes: string = localize("yes.button", "Yes"); const no: string = localize("no.button", "No"); const askLater: string = localize("ask.me.later.button", "Ask Me Later"); @@ -2285,7 +2290,7 @@ export class DefaultClient implements Client { * notifications to the language server */ public activeDocumentChanged(document: vscode.TextDocument): void { - this.notifyWhenReady(() => { + this.notifyWhenLanguageClientReady(() => { this.languageClient.sendNotification(ActiveDocumentChangeNotification, this.languageClient.code2ProtocolConverter.asTextDocumentIdentifier(document)); }); } @@ -2299,13 +2304,13 @@ export class DefaultClient implements Client { } public selectionChanged(selection: Range): void { - this.notifyWhenReady(() => { + this.notifyWhenLanguageClientReady(() => { this.languageClient.sendNotification(TextEditorSelectionChangeNotification, selection); }); } public resetDatabase(): void { - this.notifyWhenReady(() => this.languageClient.sendNotification(ResetDatabaseNotification)); + this.notifyWhenLanguageClientReady(() => this.languageClient.sendNotification(ResetDatabaseNotification)); } /** @@ -2316,11 +2321,11 @@ export class DefaultClient implements Client { } public pauseParsing(): void { - this.notifyWhenReady(() => this.languageClient.sendNotification(PauseParsingNotification)); + this.notifyWhenLanguageClientReady(() => this.languageClient.sendNotification(PauseParsingNotification)); } public resumeParsing(): void { - this.notifyWhenReady(() => this.languageClient.sendNotification(ResumeParsingNotification)); + this.notifyWhenLanguageClientReady(() => this.languageClient.sendNotification(ResumeParsingNotification)); } private doneInitialCustomBrowseConfigurationCheck: Boolean = false; @@ -2381,7 +2386,7 @@ export class DefaultClient implements Client { currentConfiguration: index, workspaceFolderUri: this.RootPath }; - this.notifyWhenReady(() => { + this.notifyWhenLanguageClientReady(() => { this.languageClient.sendNotification(ChangeSelectedSettingNotification, params); let configName: string = ""; if (this.configuration.ConfigurationNames) { @@ -2397,7 +2402,7 @@ export class DefaultClient implements Client { uri: vscode.Uri.file(path).toString(), workspaceFolderUri: this.RootPath }; - this.notifyWhenReady(() => this.languageClient.sendNotification(ChangeCompileCommandsNotification, params)); + this.notifyWhenLanguageClientReady(() => this.languageClient.sendNotification(ChangeCompileCommandsNotification, params)); } private isSourceFileConfigurationItem(input: any, providerVersion: Version): input is SourceFileConfigurationItem { @@ -2560,7 +2565,7 @@ export class DefaultClient implements Client { const params: WorkspaceFolderParams = { workspaceFolderUri: this.RootPath }; - this.notifyWhenReady(() => this.languageClient.sendNotification(ClearCustomConfigurationsNotification, params)); + this.notifyWhenLanguageClientReady(() => this.languageClient.sendNotification(ClearCustomConfigurationsNotification, params)); } private clearCustomBrowseConfiguration(): void { @@ -2568,81 +2573,70 @@ export class DefaultClient implements Client { const params: WorkspaceFolderParams = { workspaceFolderUri: this.RootPath }; - this.notifyWhenReady(() => this.languageClient.sendNotification(ClearCustomBrowseConfigurationNotification, params)); + this.notifyWhenLanguageClientReady(() => this.languageClient.sendNotification(ClearCustomBrowseConfigurationNotification, params)); } /** * command handlers */ - public handleConfigurationSelectCommand(): void { - this.notifyWhenReady(() => { - const configNames: string[] | undefined = this.configuration.ConfigurationNames; - if (configNames) { - ui.showConfigurations(configNames) - .then((index: number) => { - if (index < 0) { - return; - } - this.configuration.select(index); - }); + public async handleConfigurationSelectCommand(): Promise { + await this.awaitUntilLanguageClientReady(); + const configNames: string[] | undefined = this.configuration.ConfigurationNames; + if (configNames) { + const index: number = await ui.showConfigurations(configNames); + if (index < 0) { + return; } - }); + this.configuration.select(index); + } } - public handleConfigurationProviderSelectCommand(): void { - this.notifyWhenReady(() => { - ui.showConfigurationProviders(this.configuration.CurrentConfigurationProvider) - .then(extensionId => { - if (extensionId === undefined) { - // operation was canceled. - return; - } - this.configuration.updateCustomConfigurationProvider(extensionId) - .then(() => { - if (extensionId) { - const provider: CustomConfigurationProvider1 | undefined = getCustomConfigProviders().get(extensionId); - this.updateCustomBrowseConfiguration(provider); - this.updateCustomConfigurations(provider); - telemetry.logLanguageServerEvent("customConfigurationProvider", { "providerId": extensionId }); - } else { - this.clearCustomConfigurations(); - this.clearCustomBrowseConfiguration(); - } - }); - }); - }); + public async handleConfigurationProviderSelectCommand(): Promise { + await this.awaitUntilLanguageClientReady(); + const extensionId: string | undefined = await ui.showConfigurationProviders(this.configuration.CurrentConfigurationProvider); + if (extensionId === undefined) { + // operation was canceled. + return; + } + await this.configuration.updateCustomConfigurationProvider(extensionId); + if (extensionId) { + const provider: CustomConfigurationProvider1 | undefined = getCustomConfigProviders().get(extensionId); + this.updateCustomBrowseConfiguration(provider); + this.updateCustomConfigurations(provider); + telemetry.logLanguageServerEvent("customConfigurationProvider", { "providerId": extensionId }); + } else { + this.clearCustomConfigurations(); + this.clearCustomBrowseConfiguration(); + } } - public handleShowParsingCommands(): void { - this.notifyWhenReady(() => { - ui.showParsingCommands() - .then((index: number) => { - if (index === 0) { - this.pauseParsing(); - } else if (index === 1) { - this.resumeParsing(); - } - }); - }); + public async handleShowParsingCommands(): Promise { + await this.awaitUntilLanguageClientReady(); + const index: number = await ui.showParsingCommands(); + if (index === 0) { + this.pauseParsing(); + } else if (index === 1) { + this.resumeParsing(); + } } public handleConfigurationEditCommand(): void { - this.notifyWhenReady(() => this.configuration.handleConfigurationEditCommand(undefined, vscode.window.showTextDocument)); + this.notifyWhenLanguageClientReady(() => this.configuration.handleConfigurationEditCommand(undefined, vscode.window.showTextDocument)); } public handleConfigurationEditJSONCommand(): void { - this.notifyWhenReady(() => this.configuration.handleConfigurationEditJSONCommand(undefined, vscode.window.showTextDocument)); + this.notifyWhenLanguageClientReady(() => this.configuration.handleConfigurationEditJSONCommand(undefined, vscode.window.showTextDocument)); } public handleConfigurationEditUICommand(): void { - this.notifyWhenReady(() => this.configuration.handleConfigurationEditUICommand(undefined, vscode.window.showTextDocument)); + this.notifyWhenLanguageClientReady(() => this.configuration.handleConfigurationEditUICommand(undefined, vscode.window.showTextDocument)); } public handleAddToIncludePathCommand(path: string): void { - this.notifyWhenReady(() => this.configuration.addToIncludePathCommand(path)); + this.notifyWhenLanguageClientReady(() => this.configuration.addToIncludePathCommand(path)); } - public handleGoToDirectiveInGroup(next: boolean): void { + public async handleGoToDirectiveInGroup(next: boolean): Promise { const editor: vscode.TextEditor | undefined = vscode.window.activeTextEditor; if (editor) { const params: GoToDirectiveInGroupParams = { @@ -2651,26 +2645,24 @@ export class DefaultClient implements Client { next: next }; - this.languageClient.sendRequest(GoToDirectiveInGroupRequest, params) - .then((response) => { - if (response) { - const p: vscode.Position = new vscode.Position(response.line, response.character); - const r: vscode.Range = new vscode.Range(p, p); - - // 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.revealRange(r); - } - } - }); + const response: Position | undefined = await this.languageClient.sendRequest(GoToDirectiveInGroupRequest, params); + if (response) { + const p: vscode.Position = new vscode.Position(response.line, response.character); + const r: vscode.Range = new vscode.Range(p, p); + + // 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.revealRange(r); + } + } } } public onInterval(): void { // These events can be discarded until the language client is ready. - // Don't queue them up with this.notifyWhenReady calls. + // Don't queue them up with this.notifyWhenLanguageClientReady calls. if (this.innerLanguageClient !== undefined && this.configuration !== undefined) { this.languageClient.sendNotification(IntervalTimerNotification); this.configuration.checkCppProperties(); @@ -2709,7 +2701,7 @@ export class DefaultClient implements Client { } public handleReferencesIcon(): void { - this.notifyWhenReady(() => { + this.notifyWhenLanguageClientReady(() => { const cancelling: boolean = DefaultClient.referencesPendingCancellations.length > 0; if (!cancelling) { workspaceReferences.UpdateProgressUICounter(this.model.referencesCommandMode.Value); @@ -2817,7 +2809,8 @@ class NullClient implements Client { takeOwnership(document: vscode.TextDocument): void {} queueTask(task: () => Thenable): Thenable { return task(); } requestWhenReady(request: () => Thenable): Thenable { return request(); } - notifyWhenReady(notify: () => void): void {} + notifyWhenLanguageClientReady(notify: () => void): void {} + awaitUntilLanguageClientReady(): void {} requestSwitchHeaderSource(rootPath: string, fileName: string): Thenable { return Promise.resolve(""); } activeDocumentChanged(document: vscode.TextDocument): void {} activate(): void {} diff --git a/Extension/src/LanguageServer/configurations.ts b/Extension/src/LanguageServer/configurations.ts index 895ec47900..2323946bc6 100644 --- a/Extension/src/LanguageServer/configurations.ts +++ b/Extension/src/LanguageServer/configurations.ts @@ -436,9 +436,13 @@ export class CppProperties { private async readNodeAddonIncludeLocations(rootPath: string): Promise { let error: Error | undefined; let pdjFound: boolean = false; - const package_json: any = await fs.promises.readFile(path.join(rootPath, "package.json"), "utf8") - .then(pdj => {pdjFound = true; return JSON.parse(pdj); }) - .catch(e => (error = e)); + let packageJson: any; + try { + packageJson = JSON.parse(await fs.promises.readFile(path.join(rootPath, "package.json"), "utf8")); + pdjFound = true; + } catch (err) { + error = err; + } if (!error) { try { @@ -457,35 +461,37 @@ export class CppProperties { } for (const [dep, execCmd] of nodeAddonMap) { - if (dep in package_json.dependencies) { - let stdout: string | void = await util.execChildProcess(execCmd, rootPath) - .catch((error) => console.log('readNodeAddonIncludeLocations', error.message)); - if (!stdout) { - continue; - } - - // cleanup newlines - if (stdout[stdout.length - 1] === "\n") { - stdout = stdout.slice(0, -1); - } - // node-addon-api returns a quoted string, e.g., '"/home/user/dir/node_modules/node-addon-api"'. - if (stdout[0] === "\"" && stdout[stdout.length - 1] === "\"") { - stdout = stdout.slice(1, -1); - } + if (dep in packageJson.dependencies) { + try { + let stdout: string | void = await util.execChildProcess(execCmd, rootPath); + if (!stdout) { + continue; + } + // cleanup newlines + if (stdout[stdout.length - 1] === "\n") { + stdout = stdout.slice(0, -1); + } + // node-addon-api returns a quoted string, e.g., '"/home/user/dir/node_modules/node-addon-api"'. + if (stdout[0] === "\"" && stdout[stdout.length - 1] === "\"") { + stdout = stdout.slice(1, -1); + } - // at this time both node-addon-api and nan return their own directory so this test is not really - // needed. but it does future proof the code. - if (!await util.checkDirectoryExists(stdout)) { - // nan returns a path relative to rootPath causing the previous check to fail because this code - // is executing in vscode's working directory. - stdout = path.join(rootPath, stdout); + // at this time both node-addon-api and nan return their own directory so this test is not really + // needed. but it does future proof the code. if (!await util.checkDirectoryExists(stdout)) { - error = new Error(`${dep} directory ${stdout} doesn't exist`); - stdout = ''; + // nan returns a path relative to rootPath causing the previous check to fail because this code + // is executing in vscode's working directory. + stdout = path.join(rootPath, stdout); + if (!await util.checkDirectoryExists(stdout)) { + error = new Error(`${dep} directory ${stdout} doesn't exist`); + stdout = ''; + } } - } - if (stdout) { - this.nodeAddonIncludes.push(stdout); + if (stdout) { + this.nodeAddonIncludes.push(stdout); + } + } catch (err) { + console.log('readNodeAddonIncludeLocations', err.message); } } } @@ -918,21 +924,19 @@ export class CppProperties { } // onBeforeOpen will be called after c_cpp_properties.json have been created (if it did not exist), but before the document is opened. - public handleConfigurationEditJSONCommand(onBeforeOpen: (() => void) | undefined, showDocument: (document: vscode.TextDocument) => void): void { - this.ensurePropertiesFile().then(() => { - console.assert(this.propertiesFile); - if (onBeforeOpen) { - onBeforeOpen(); - } - // Directly open the json file - if (this.propertiesFile) { - vscode.workspace.openTextDocument(this.propertiesFile).then((document: vscode.TextDocument) => { - if (showDocument) { - showDocument(document); - } - }); + public async handleConfigurationEditJSONCommand(onBeforeOpen: (() => void) | undefined, showDocument: (document: vscode.TextDocument) => void): Promise { + await this.ensurePropertiesFile(); + console.assert(this.propertiesFile); + if (onBeforeOpen) { + onBeforeOpen(); + } + // Directly open the json file + if (this.propertiesFile) { + const document: vscode.TextDocument = await vscode.workspace.openTextDocument(this.propertiesFile); + if (showDocument) { + showDocument(document); } - }); + } } private ensureSettingsPanelInitlialized(): void { @@ -949,58 +953,55 @@ export class CppProperties { } // onBeforeOpen will be called after c_cpp_properties.json have been created (if it did not exist), but before the document is opened. - public handleConfigurationEditUICommand(onBeforeOpen: (() => void) | undefined, showDocument: (document: vscode.TextDocument) => void): void { - this.ensurePropertiesFile().then(() => { - if (this.propertiesFile) { - if (onBeforeOpen) { - onBeforeOpen(); - } - if (this.parsePropertiesFile()) { - this.ensureSettingsPanelInitlialized(); - if (this.settingsPanel) { - const configNames: string[] | undefined = this.ConfigurationNames; - if (configNames && this.configurationJson) { - // Use the active configuration as the default selected configuration to load on UI editor - this.settingsPanel.selectedConfigIndex = this.CurrentConfigurationIndex; - this.settingsPanel.createOrShow(configNames, - this.configurationJson.configurations[this.settingsPanel.selectedConfigIndex], - this.getErrorsForConfigUI(this.settingsPanel.selectedConfigIndex)); - } + public async handleConfigurationEditUICommand(onBeforeOpen: (() => void) | undefined, showDocument: (document: vscode.TextDocument) => void): Promise { + await this.ensurePropertiesFile(); + if (this.propertiesFile) { + if (onBeforeOpen) { + onBeforeOpen(); + } + if (this.parsePropertiesFile()) { + this.ensureSettingsPanelInitlialized(); + if (this.settingsPanel) { + const configNames: string[] | undefined = this.ConfigurationNames; + if (configNames && this.configurationJson) { + // Use the active configuration as the default selected configuration to load on UI editor + this.settingsPanel.selectedConfigIndex = this.CurrentConfigurationIndex; + this.settingsPanel.createOrShow(configNames, + this.configurationJson.configurations[this.settingsPanel.selectedConfigIndex], + this.getErrorsForConfigUI(this.settingsPanel.selectedConfigIndex)); } - } else { - // Parse failed, open json file - vscode.workspace.openTextDocument(this.propertiesFile).then((document: vscode.TextDocument) => { - if (showDocument) { - showDocument(document); - } - }); + } + } else { + // Parse failed, open json file + const document: vscode.TextDocument = await vscode.workspace.openTextDocument(this.propertiesFile); + if (showDocument) { + showDocument(document); } } - }); + } } - private onSettingsPanelActivated(): void { + private async onSettingsPanelActivated(): Promise { if (this.configurationJson) { - this.ensurePropertiesFile().then(() => { - if (this.propertiesFile) { - if (this.parsePropertiesFile()) { - const configNames: string[] | undefined = this.ConfigurationNames; - if (configNames && this.settingsPanel && this.configurationJson) { - // The settings UI became visible or active. - // Ensure settingsPanel has copy of latest current configuration - if (this.settingsPanel.selectedConfigIndex >= this.configurationJson.configurations.length) { - this.settingsPanel.selectedConfigIndex = this.CurrentConfigurationIndex; - } - this.settingsPanel.updateConfigUI(configNames, - this.configurationJson.configurations[this.settingsPanel.selectedConfigIndex], - this.getErrorsForConfigUI(this.settingsPanel.selectedConfigIndex)); - } else { - // Parse failed, open json file - vscode.workspace.openTextDocument(this.propertiesFile); + await this.ensurePropertiesFile(); + if (this.propertiesFile) { + if (this.parsePropertiesFile()) { + const configNames: string[] | undefined = this.ConfigurationNames; + if (configNames && this.settingsPanel && this.configurationJson) { + // The settings UI became visible or active. + // Ensure settingsPanel has copy of latest current configuration + if (this.settingsPanel.selectedConfigIndex >= this.configurationJson.configurations.length) { + this.settingsPanel.selectedConfigIndex = this.CurrentConfigurationIndex; } + this.settingsPanel.updateConfigUI(configNames, + this.configurationJson.configurations[this.settingsPanel.selectedConfigIndex], + this.getErrorsForConfigUI(this.settingsPanel.selectedConfigIndex)); + } else { + // Parse failed, open json file + vscode.workspace.openTextDocument(this.propertiesFile); } } - }); + } } } @@ -1078,11 +1079,11 @@ export class CppProperties { } private async ensurePropertiesFile(): Promise { - if (this.propertiesFile && fs.existsSync(this.propertiesFile.fsPath)) { + if (this.propertiesFile && await util.checkFileExists(this.propertiesFile.fsPath)) { return; } else { try { - if (!fs.existsSync(this.configFolder)) { + if (!await util.checkFileExists(this.configFolder)) { fs.mkdirSync(this.configFolder); } diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index 11efb88d2f..28cef26fee 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -151,7 +151,7 @@ function isMissingIncludeDiagnostic(diagnostic: vscode.Diagnostic): boolean { /** * activate: set up the extension for language services */ -export function activate(activationEventOccurred: boolean): void { +export async function activate(activationEventOccurred: boolean): Promise { if (realActivationOccurred) { return; // Occurs if multiple delayed commands occur before the real commands are registered. } @@ -173,11 +173,10 @@ export function activate(activationEventOccurred: boolean): void { if (vscode.workspace.workspaceFolders && vscode.workspace.workspaceFolders.length > 0) { for (let i: number = 0; i < vscode.workspace.workspaceFolders.length; ++i) { const config: string = path.join(vscode.workspace.workspaceFolders[i].uri.fsPath, ".vscode/c_cpp_properties.json"); - if (fs.existsSync(config)) { + if (await util.checkFileExists(config)) { cppPropertiesExists = true; - vscode.workspace.openTextDocument(config).then((doc: vscode.TextDocument) => { - vscode.languages.setTextDocumentLanguage(doc, "jsonc"); - }); + const doc: vscode.TextDocument = await vscode.workspace.openTextDocument(config); + vscode.languages.setTextDocumentLanguage(doc, "jsonc"); } } } @@ -355,8 +354,7 @@ function realActivation(): void { } } }); - - clients.ActiveClient.notifyWhenReady(() => { + clients.ActiveClient.notifyWhenLanguageClientReady(() => { intervalTimer = global.setInterval(onInterval, 2500); }); } @@ -442,7 +440,7 @@ export function processDelayedDidOpen(document: vscode.TextDocument): void { client.TrackedDocuments.add(document); const finishDidOpen = (doc: vscode.TextDocument) => { client.provideCustomConfiguration(doc.uri, undefined); - client.notifyWhenReady(() => { + client.notifyWhenLanguageClientReady(() => { client.takeOwnership(doc); client.onDidOpenTextDocument(doc); }); @@ -488,7 +486,7 @@ function onInterval(): void { * Install a VSIX package. This helper function will exist until VSCode offers a command to do so. * @param updateChannel The user's updateChannel setting. */ -function installVsix(vsixLocation: string): Thenable { +async function installVsix(vsixLocation: string): Promise { const userVersion: PackageVersion = new PackageVersion(vscode.version); // 1.33.0 introduces workbench.extensions.installExtension. 1.32.3 was immediately prior. @@ -500,7 +498,7 @@ function installVsix(vsixLocation: string): Thenable { // Get the path to the VSCode command -- replace logic later when VSCode allows calling of // workbench.extensions.action.installVSIX from TypeScript w/o instead popping up a file dialog return PlatformInformation.GetPlatformInformation().then((platformInfo) => { - const vsCodeScriptPath: string | undefined = function(platformInfo): string | undefined { + const getVsCodeScriptPath = (platformInfo: any): string => { if (platformInfo.platform === 'win32') { const vsCodeBinName: string = path.basename(process.execPath); let cmdFile: string; // Windows VS Code Insiders/Exploration breaks VS Code naming conventions @@ -518,14 +516,13 @@ function installVsix(vsixLocation: string): Thenable { 'Resources', 'app', 'bin', 'code'); } else { const vsCodeBinName: string = path.basename(process.execPath); - try { - return which.sync(vsCodeBinName); - } catch (error) { - return undefined; - } + return which.sync(vsCodeBinName); } - }(platformInfo); - if (!vsCodeScriptPath) { + }; + let vsCodeScriptPath: string; + try { + vsCodeScriptPath = getVsCodeScriptPath(platformInfo); + } catch (err) { return Promise.reject(new Error('Failed to find VS Code script')); } @@ -632,22 +629,24 @@ async function suggestInsidersChannel(): Promise { const yes: string = localize("yes.button", "Yes"); const askLater: string = localize("ask.me.later.button", "Ask Me Later"); const dontShowAgain: string = localize("dont.show.again.button", "Don't Show Again"); - const selection: string | undefined = await vscode.window.showInformationMessage(message, yes, askLater, dontShowAgain); - switch (selection) { - case yes: - // Cache buildInfo. - buildInfoCache = buildInfo; - // It will call onDidChangeSettings. - vscode.workspace.getConfiguration("C_Cpp").update("updateChannel", "Insiders", vscode.ConfigurationTarget.Global); - break; - case dontShowAgain: - suggestInsiders.Value = false; - break; - case askLater: - break; - default: - break; - } + vscode.window.showInformationMessage(message, yes, askLater, dontShowAgain).then((selection) => { + switch (selection) { + case yes: + // Cache buildInfo. + buildInfoCache = buildInfo; + // It will call onDidChangeSettings. + vscode.workspace.getConfiguration("C_Cpp").update("updateChannel", "Insiders", vscode.ConfigurationTarget.Global); + break; + case dontShowAgain: + suggestInsiders.Value = false; + break; + case askLater: + break; + default: + break; + } + }); + } async function applyUpdate(buildInfo: BuildInfo): Promise { @@ -783,7 +782,7 @@ export function registerCommands(): void { getTemporaryCommandRegistrarInstance().executeDelayedCommands(); } -function onSwitchHeaderSource(): void { +async function onSwitchHeaderSource(): Promise { onActivationEvent(); const activeEditor: vscode.TextEditor | undefined = vscode.window.activeTextEditor; if (!activeEditor || !activeEditor.document) { @@ -801,53 +800,49 @@ function onSwitchHeaderSource(): void { rootPath = path.dirname(fileName); // When switching without a folder open. } - clients.ActiveClient.requestSwitchHeaderSource(rootPath, fileName).then((targetFileName: string) => { - // If the targetFileName has a path that is a symlink target of a workspace folder, - // then replace the RootRealPath with the RootPath (the symlink path). - let targetFileNameReplaced: boolean = false; - clients.forEach(client => { - if (!targetFileNameReplaced && client.RootRealPath && client.RootPath !== client.RootRealPath - && targetFileName.indexOf(client.RootRealPath) === 0) { - targetFileName = client.RootPath + targetFileName.substr(client.RootRealPath.length); - targetFileNameReplaced = true; - } - }); - vscode.workspace.openTextDocument(targetFileName).then((document: vscode.TextDocument) => { - let foundEditor: boolean = false; - // If the document is already visible in another column, open it there. - vscode.window.visibleTextEditors.forEach((editor, index, array) => { - if (editor.document === document && !foundEditor) { - foundEditor = true; - vscode.window.showTextDocument(document, editor.viewColumn); - } - }); - - if (!foundEditor) { - vscode.window.showTextDocument(document); - } - }); + let targetFileName: string = await clients.ActiveClient.requestSwitchHeaderSource(rootPath, fileName); + // If the targetFileName has a path that is a symlink target of a workspace folder, + // then replace the RootRealPath with the RootPath (the symlink path). + let targetFileNameReplaced: boolean = false; + clients.forEach(client => { + if (!targetFileNameReplaced && client.RootRealPath && client.RootPath !== client.RootRealPath + && targetFileName.indexOf(client.RootRealPath) === 0) { + targetFileName = client.RootPath + targetFileName.substr(client.RootRealPath.length); + targetFileNameReplaced = true; + } }); + const document: vscode.TextDocument = await vscode.workspace.openTextDocument(targetFileName); + let foundEditor: boolean = false; + // If the document is already visible in another column, open it there. + vscode.window.visibleTextEditors.forEach((editor, index, array) => { + if (editor.document === document && !foundEditor) { + foundEditor = true; + vscode.window.showTextDocument(document, editor.viewColumn); + } + }); + if (!foundEditor) { + vscode.window.showTextDocument(document); + } } /** * Allow the user to select a workspace when multiple workspaces exist and get the corresponding Client back. * The resulting client is used to handle some command that was previously invoked. */ -function selectClient(): Thenable { +async function selectClient(): Promise { if (clients.Count === 1) { - return Promise.resolve(clients.ActiveClient); + return clients.ActiveClient; } else { - return ui.showWorkspaces(clients.Names).then(key => { - if (key !== "") { - const client: Client | undefined = clients.get(key); - if (client) { - return client; - } else { - console.assert("client not found"); - } + const key: string = await ui.showWorkspaces(clients.Names); + if (key !== "") { + const client: Client | undefined = clients.get(key); + if (client) { + return client; + } else { + console.assert("client not found"); } - return Promise.reject(localize("client.not.found", "client not found")); - }); + } + throw new Error(localize("client.not.found", "client not found")); } } diff --git a/Extension/src/LanguageServer/protocolFilter.ts b/Extension/src/LanguageServer/protocolFilter.ts index eee0cb54ec..687733e61d 100644 --- a/Extension/src/LanguageServer/protocolFilter.ts +++ b/Extension/src/LanguageServer/protocolFilter.ts @@ -14,7 +14,7 @@ import { onDidChangeActiveTextEditor, processDelayedDidOpen } from './extension' export function createProtocolFilter(clients: ClientCollection): Middleware { // Disabling lint for invoke handlers - const defaultHandler: (data: any, callback: (data: any) => void) => void = (data, callback: (data: any) => void) => { clients.ActiveClient.notifyWhenReady(() => callback(data)); }; + const defaultHandler: (data: any, callback: (data: any) => void) => void = (data, callback: (data: any) => void) => { clients.ActiveClient.notifyWhenLanguageClientReady(() => callback(data)); }; // let invoke1 = (a, callback: (a) => any) => { if (clients.ActiveClient === me) { return me.requestWhenReady(() => callback(a)); } return null; }; const invoke2 = (a: any, b: any, callback: (a: any, b: any) => any) => clients.ActiveClient.requestWhenReady(() => callback(a, b)); const invoke3 = (a: any, b: any, c: any, callback: (a: any, b: any, c: any) => any) => clients.ActiveClient.requestWhenReady(() => callback(a, b, c)); @@ -37,7 +37,7 @@ export function createProtocolFilter(clients: ClientCollection): Middleware { me.TrackedDocuments.add(document); const finishDidOpen = (doc: vscode.TextDocument) => { me.provideCustomConfiguration(doc.uri, undefined); - me.notifyWhenReady(() => { + me.notifyWhenLanguageClientReady(() => { sendMessage(doc); me.onDidOpenTextDocument(doc); if (editor && editor === vscode.window.activeTextEditor) { @@ -80,7 +80,7 @@ export function createProtocolFilter(clients: ClientCollection): Middleware { processDelayedDidOpen(textDocumentChangeEvent.document); } me.onDidChangeTextDocument(textDocumentChangeEvent); - me.notifyWhenReady(() => sendMessage(textDocumentChangeEvent)); + me.notifyWhenLanguageClientReady(() => sendMessage(textDocumentChangeEvent)); }, willSave: defaultHandler, willSaveWaitUntil: (event, sendMessage) => { @@ -96,7 +96,7 @@ export function createProtocolFilter(clients: ClientCollection): Middleware { if (me.TrackedDocuments.has(document)) { me.onDidCloseTextDocument(document); me.TrackedDocuments.delete(document); - me.notifyWhenReady(() => sendMessage(document)); + me.notifyWhenLanguageClientReady(() => sendMessage(document)); } }, diff --git a/Extension/src/LanguageServer/settings.ts b/Extension/src/LanguageServer/settings.ts index e3fd42451f..89f2cd5f03 100644 --- a/Extension/src/LanguageServer/settings.ts +++ b/Extension/src/LanguageServer/settings.ts @@ -691,18 +691,21 @@ function populateEditorConfig(rootUri: vscode.Uri | undefined, document: vscode. vscode.workspace.applyEdit(edits).then(() => vscode.window.showTextDocument(document)); } -export function generateEditorConfig(rootUri?: vscode.Uri): void { - if (rootUri !== undefined) { +export async function generateEditorConfig(rootUri?: vscode.Uri): Promise { + let document: vscode.TextDocument; + if (rootUri) { // If a folder is open and '.editorconfig' exists at the root, use that. const uri: vscode.Uri = vscode.Uri.joinPath(rootUri, ".editorconfig"); const edits: vscode.WorkspaceEdit = new vscode.WorkspaceEdit(); edits.createFile(uri, { ignoreIfExists: true, overwrite: false }); - vscode.workspace.applyEdit(edits).then(() => { - vscode.workspace.openTextDocument(uri).then( - (document) => populateEditorConfig(rootUri, document), - () => vscode.workspace.openTextDocument().then((document) => populateEditorConfig(rootUri, document))); - }, () => vscode.workspace.openTextDocument().then((document) => populateEditorConfig(rootUri, document))); + try { + await vscode.workspace.applyEdit(edits); + document = await vscode.workspace.openTextDocument(uri); + } catch (e) { + document = await vscode.workspace.openTextDocument(); + } } else { - vscode.workspace.openTextDocument().then((document) => populateEditorConfig(rootUri, document)); + document = await vscode.workspace.openTextDocument(); } + populateEditorConfig(rootUri, document); } diff --git a/Extension/src/LanguageServer/ui.ts b/Extension/src/LanguageServer/ui.ts index 9aa16af1d8..383040370d 100644 --- a/Extension/src/LanguageServer/ui.ts +++ b/Extension/src/LanguageServer/ui.ts @@ -30,7 +30,7 @@ enum ConfigurationPriority { CustomProvider = 3, } -interface ConfigurationResult { +interface ConfigurationStatus { configured: boolean; priority: ConfigurationPriority; } @@ -40,7 +40,7 @@ export class UI { private browseEngineStatusBarItem: vscode.StatusBarItem; private intelliSenseStatusBarItem: vscode.StatusBarItem; private referencesStatusBarItem: vscode.StatusBarItem; - private configurationUIPromise?: Thenable; + private curConfigurationStatus?: Promise; private readonly referencesPreviewTooltip: string = ` (${localize("click.to.preview", "click to preview results")})`; constructor() { @@ -191,7 +191,7 @@ export class UI { client.ActiveConfigChanged(value => { this.ActiveConfig = value; }); } - public showConfigurations(configurationNames: string[]): Thenable { + public async showConfigurations(configurationNames: string[]): Promise { const options: vscode.QuickPickOptions = {}; options.placeHolder = localize("select.a.configuration", "Select a Configuration..."); @@ -202,11 +202,11 @@ export class UI { items.push({ label: localize("edit.configuration.ui", "Edit Configurations (UI)"), description: "", index: configurationNames.length }); items.push({ label: localize("edit.configuration.json", "Edit Configurations (JSON)"), description: "", index: configurationNames.length + 1 }); - return vscode.window.showQuickPick(items, options) - .then(selection => (selection) ? selection.index : -1); + const selection: IndexableQuickPickItem | undefined = await vscode.window.showQuickPick(items, options); + return (selection) ? selection.index : -1; } - public showConfigurationProviders(currentProvider?: string): Thenable { + public async showConfigurationProviders(currentProvider?: string): Promise { const options: vscode.QuickPickOptions = {}; options.placeHolder = localize("select.configuration.provider", "Select a Configuration Provider..."); const providers: CustomConfigurationProviderCollection = getCustomConfigProviders(); @@ -221,11 +221,11 @@ export class UI { }); items.push({ label: `(${localize("none", "none")})`, description: localize("disable.configuration.provider", "Disable the active configuration provider, if applicable."), key: "" }); - return vscode.window.showQuickPick(items, options) - .then(selection => (selection) ? selection.key : undefined); + const selection: KeyedQuickPickItem | undefined = await vscode.window.showQuickPick(items, options); + return (selection) ? selection.key : undefined; } - public showCompileCommands(paths: string[]): Thenable { + public async showCompileCommands(paths: string[]): Promise { const options: vscode.QuickPickOptions = {}; options.placeHolder = localize("select.compile.commands", "Select a compile_commands.json..."); @@ -234,22 +234,22 @@ export class UI { items.push({label: paths[i], description: "", index: i}); } - return vscode.window.showQuickPick(items, options) - .then(selection => (selection) ? selection.index : -1); + const selection: IndexableQuickPickItem | undefined = await vscode.window.showQuickPick(items, options); + return (selection) ? selection.index : -1; } - public showWorkspaces(workspaceNames: { name: string; key: string }[]): Thenable { + public async showWorkspaces(workspaceNames: { name: string; key: string }[]): Promise { const options: vscode.QuickPickOptions = {}; options.placeHolder = localize("select.workspace", "Select a workspace folder..."); const items: KeyedQuickPickItem[] = []; workspaceNames.forEach(name => items.push({ label: name.name, description: "", key: name.key })); - return vscode.window.showQuickPick(items, options) - .then(selection => (selection) ? selection.key : ""); + const selection: KeyedQuickPickItem | undefined = await vscode.window.showQuickPick(items, options); + return (selection) ? selection.key : ""; } - public showParsingCommands(): Thenable { + public async showParsingCommands(): Promise { const options: vscode.QuickPickOptions = {}; options.placeHolder = localize("select.parsing.command", "Select a parsing command..."); @@ -259,29 +259,28 @@ export class UI { } else { items.push({ label: localize("pause.parsing", "Pause Parsing"), description: "", index: 0 }); } - - return vscode.window.showQuickPick(items, options) - .then(selection => (selection) ? selection.index : -1); + const selection: IndexableQuickPickItem | undefined = await vscode.window.showQuickPick(items, options); + return (selection) ? selection.index : -1; } - public showConfigureIncludePathMessage(prompt: () => Thenable, onSkip: () => void): void { + public showConfigureIncludePathMessage(prompt: () => Promise, onSkip: () => void): void { setTimeout(() => { this.showConfigurationPrompt(ConfigurationPriority.IncludePath, prompt, onSkip); }, 10000); } - public showConfigureCompileCommandsMessage(prompt: () => Thenable, onSkip: () => void): void { + public showConfigureCompileCommandsMessage(prompt: () => Promise, onSkip: () => void): void { setTimeout(() => { this.showConfigurationPrompt(ConfigurationPriority.CompileCommands, prompt, onSkip); }, 5000); } - public showConfigureCustomProviderMessage(prompt: () => Thenable, onSkip: () => void): void { + public showConfigureCustomProviderMessage(prompt: () => Promise, onSkip: () => void): void { this.showConfigurationPrompt(ConfigurationPriority.CustomProvider, prompt, onSkip); } private showConfigurationPrompt(priority: ConfigurationPriority, prompt: () => Thenable, onSkip: () => void): void { - const showPrompt: () => Thenable = async () => { + const showPrompt: () => Promise = async () => { const configured: boolean = await prompt(); return Promise.resolve({ priority: priority, @@ -289,8 +288,8 @@ export class UI { }); }; - if (this.configurationUIPromise) { - this.configurationUIPromise = this.configurationUIPromise.then(result => { + if (this.curConfigurationStatus) { + this.curConfigurationStatus = this.curConfigurationStatus.then(result => { if (priority > result.priority) { return showPrompt(); } else if (!result.configured) { @@ -303,7 +302,7 @@ export class UI { }); }); } else { - this.configurationUIPromise = showPrompt(); + this.curConfigurationStatus = showPrompt(); } } diff --git a/Extension/src/abTesting.ts b/Extension/src/abTesting.ts index 95052c8dc8..74a2d202c9 100644 --- a/Extension/src/abTesting.ts +++ b/Extension/src/abTesting.ts @@ -99,21 +99,20 @@ export class ABTestSettings { } } - private downloadCpptoolsJsonPkgAsync(): Promise { + private async downloadCpptoolsJsonPkgAsync(): Promise { let hasError: boolean = false; const telemetryProperties: { [key: string]: string } = {}; const localConfigPath: string = util.getExtensionFilePath(localConfigFile); // Download the latest cpptools.json. - return 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; - }) - .then(() => { - this.updateSettings(); - telemetryProperties['success'] = (!hasError).toString(); - Telemetry.logDebuggerEvent("cpptoolsJsonDownload", telemetryProperties); - }); + 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); } } diff --git a/Extension/src/common.ts b/Extension/src/common.ts index ccb12bead3..6cd186eff6 100644 --- a/Extension/src/common.ts +++ b/Extension/src/common.ts @@ -753,33 +753,29 @@ export function isExecutable(file: string): Promise { }); } -export function allowExecution(file: string): Promise { - return new Promise((resolve, reject) => { - if (process.platform !== 'win32') { - checkFileExists(file).then((exists: boolean) => { - if (exists) { - isExecutable(file).then((isExec: boolean) => { - if (isExec) { - resolve(); - } else { - fs.chmod(file, '755', (err: NodeJS.ErrnoException | null) => { - if (err) { - reject(err); - return; - } - resolve(); - }); - } - }); - } else { - getOutputChannelLogger().appendLine(""); - getOutputChannelLogger().appendLine(localize("warning.file.missing", "Warning: Expected file {0} is missing.", file)); - resolve(); - } - }); +export async function allowExecution(file: string): Promise { + if (process.platform !== 'win32') { + const exists: boolean = await checkFileExists(file); + if (exists) { + const isExec: boolean = await isExecutable(file); + if (!isExec) { + await chmodAsync(file, '755'); + } } else { - resolve(); + getOutputChannelLogger().appendLine(""); + getOutputChannelLogger().appendLine(localize("warning.file.missing", "Warning: Expected file {0} is missing.", file)); } + } +} + +export async function chmodAsync(path: fs.PathLike, mode: fs.Mode): Promise { + return new Promise((resolve, reject) => { + fs.chmod(path, mode, (err: NodeJS.ErrnoException | null) => { + if (err) { + return reject(err); + } + return resolve(); + }); }); } @@ -1292,3 +1288,11 @@ export async function checkCuda(): Promise { const langs: string[] = await vscode.languages.getLanguages(); supportCuda = langs.findIndex((s) => s === "cuda-cpp") !== -1; } + +// Sequentially Resolve Promises. +export function sequentialResolve(items: T[], promiseBuilder: (item: T) => Promise): Promise { + return items.reduce(async (previousPromise, nextItem) => { + await previousPromise; + return promiseBuilder(nextItem); + }, Promise.resolve()); +} diff --git a/Extension/src/githubAPI.ts b/Extension/src/githubAPI.ts index 0ae6cd1a9a..321c0262e4 100644 --- a/Extension/src/githubAPI.ts +++ b/Extension/src/githubAPI.ts @@ -159,42 +159,35 @@ export interface BuildInfo { * does not need to update, resolves to undefined. */ export async function getTargetBuildInfo(updateChannel: string, isFromSettingsChange: boolean): Promise { - return getReleaseJson() - .then(builds => { - if (!builds || builds.length === 0) { - return undefined; - } + const builds: Build[] | undefined = await getReleaseJson(); + if (!builds || builds.length === 0) { + return undefined; + } + + const userVersion: PackageVersion = new PackageVersion(util.packageJson.version); + const targetBuild: Build | undefined = getTargetBuild(builds, userVersion, updateChannel, isFromSettingsChange); + if (targetBuild === undefined) { + // no action + telemetry.logLanguageServerEvent("UpgradeCheck", { "action": "none" }); + } else if (userVersion.isExtensionVersionGreaterThan(new PackageVersion(targetBuild.name))) { + // downgrade + telemetry.logLanguageServerEvent("UpgradeCheck", { "action": "downgrade", "newVersion": targetBuild.name }); + } else { + // upgrade + telemetry.logLanguageServerEvent("UpgradeCheck", { "action": "upgrade", "newVersion": targetBuild.name }); + } + + if (!targetBuild) { + return undefined; + } + const platformInfo: PlatformInformation = await PlatformInformation.GetPlatformInformation(); + const vsixName: string = vsixNameForPlatform(platformInfo); + const downloadUrl: string = getVsixDownloadUrl(targetBuild, vsixName); + if (!downloadUrl) { + return undefined; + } + return { downloadUrl: downloadUrl, name: targetBuild.name }; - const userVersion: PackageVersion = new PackageVersion(util.packageJson.version); - const targetBuild: Build | undefined = getTargetBuild(builds, userVersion, updateChannel, isFromSettingsChange); - if (targetBuild === undefined) { - // no action - telemetry.logLanguageServerEvent("UpgradeCheck", { "action": "none" }); - } else if (userVersion.isExtensionVersionGreaterThan(new PackageVersion(targetBuild.name))) { - // downgrade - telemetry.logLanguageServerEvent("UpgradeCheck", { "action": "downgrade", "newVersion": targetBuild.name }); - } else { - // upgrade - telemetry.logLanguageServerEvent("UpgradeCheck", { "action": "upgrade", "newVersion": targetBuild.name }); - } - return targetBuild; - }) - .then(async build => { - if (!build) { - return Promise.resolve(undefined); - } - try { - const platformInfo: PlatformInformation = await PlatformInformation.GetPlatformInformation(); - const vsixName: string = vsixNameForPlatform(platformInfo); - const downloadUrl: string = getVsixDownloadUrl(build, vsixName); - if (!downloadUrl) { - return undefined; - } - return { downloadUrl: downloadUrl, name: build.name }; - } catch (error) { - return Promise.reject(error); - } - }); } /** @@ -266,28 +259,29 @@ function isRateLimit(input: any): input is RateLimit { async function getRateLimit(): Promise { const header: OutgoingHttpHeaders = { 'User-Agent': 'vscode-cpptools' }; - const data: string = await util.downloadFileToStr('https://api.github.com/rate_limit', header) - .catch((error) => { - if (error && error.code && error.code !== "ENOENT") { - // Only throw if the user is connected to the Internet. - throw new Error('Failed to download rate limit JSON'); - } - }); - if (!data) { - return Promise.resolve(undefined); - } - - let rateLimit: any; try { - rateLimit = JSON.parse(data); - } catch (error) { - throw new Error('Failed to parse rate limit JSON'); - } + const data: string = await util.downloadFileToStr('https://api.github.com/rate_limit', header); + if (!data) { + return undefined; + } + let rateLimit: any; + try { + rateLimit = JSON.parse(data); + } catch (error) { + throw new Error('Failed to parse rate limit JSON'); + } - if (isRateLimit(rateLimit)) { - return Promise.resolve(rateLimit); - } else { - throw new Error('Rate limit JSON is not of type RateLimit'); + if (isRateLimit(rateLimit)) { + return rateLimit; + } else { + throw new Error('Rate limit JSON is not of type RateLimit'); + } + + } catch (err) { + if (err && err.code && err.code !== "ENOENT") { + // Only throw if the user is connected to the Internet. + throw new Error('Failed to download rate limit JSON'); + } } } @@ -309,30 +303,31 @@ async function getReleaseJson(): Promise { const releaseUrl: string = 'https://api.github.com/repos/Microsoft/vscode-cpptools/releases'; const header: OutgoingHttpHeaders = { 'User-Agent': 'vscode-cpptools' }; - const data: string = await util.downloadFileToStr(releaseUrl, header) - .catch((error) => { - if (error && error.code && error.code !== "ENOENT") { - // Only throw if the user is connected to the Internet. - throw new Error('Failed to download release JSON'); - } - }); - if (!data) { - return Promise.resolve(undefined); - } - - // Parse the file - let releaseJson: any; try { - releaseJson = JSON.parse(data); - } catch (error) { - throw new Error('Failed to parse release JSON'); - } + const data: string = await util.downloadFileToStr(releaseUrl, header); + if (!data) { + return undefined; + } - // Find the latest released builds. - const builds: Build[] = getArrayOfBuilds(releaseJson); - if (!builds || builds.length === 0) { - throw new Error('Release JSON is not of type Build[]'); - } else { - return builds; + // Parse the file + let releaseJson: any; + try { + releaseJson = JSON.parse(data); + } catch (error) { + throw new Error('Failed to parse release JSON'); + } + + // Find the latest released builds. + const builds: Build[] = getArrayOfBuilds(releaseJson); + if (!builds || builds.length === 0) { + throw new Error('Release JSON is not of type Build[]'); + } else { + return builds; + } + } catch (err) { + if (err && err.code && err.code !== "ENOENT") { + // Only throw if the user is connected to the Internet. + throw new Error('Failed to download release JSON'); + } } } diff --git a/Extension/src/logger.ts b/Extension/src/logger.ts index 7ca31552c7..a6a2f1dffd 100644 --- a/Extension/src/logger.ts +++ b/Extension/src/logger.ts @@ -34,6 +34,7 @@ export class Logger { } } + // We should not await on this function. public showInformationMessage(message: string, items?: string[]): Thenable { this.appendLine(message); @@ -43,6 +44,7 @@ export class Logger { return vscode.window.showInformationMessage(message, ...items); } + // We should not await on this function. public showWarningMessage(message: string, items?: string[]): Thenable { this.appendLine(message); @@ -52,6 +54,7 @@ export class Logger { return vscode.window.showWarningMessage(message, ...items); } + // We should not await on this function. public showErrorMessage(message: string, items?: string[]): Thenable { this.appendLine(message); diff --git a/Extension/src/main.ts b/Extension/src/main.ts index 5169d20921..9465953ba9 100644 --- a/Extension/src/main.ts +++ b/Extension/src/main.ts @@ -40,8 +40,8 @@ export async function activate(context: vscode.ExtensionContext): Promise { // For macOS and if a user has upgraded their OS, check to see if we are on Mojave or later // and that the debugAdapters/lldb-mi folder exists. This will force a online install to get the correct binaries. if (!highSierraOrLowerRegex.test(info.version) && - !fs.existsSync(lldbMiFolderPath)) { + !await util.checkFileExists(lldbMiFolderPath)) { forceOnlineInstall = true; @@ -284,7 +284,7 @@ function invalidPackageVersion(pkg: IPackage, info: PlatformInformation): boolea !VersionsMatch(pkg, info); } -function makeOfflineBinariesExecutable(info: PlatformInformation): Promise { +async function makeOfflineBinariesExecutable(info: PlatformInformation): Promise { const promises: Thenable[] = []; const packages: IPackage[] = util.packageJson["runtimeDependencies"]; packages.forEach(p => { @@ -293,10 +293,10 @@ function makeOfflineBinariesExecutable(info: PlatformInformation): Promise p.binaries.forEach(binary => promises.push(util.allowExecution(util.getExtensionFilePath(binary)))); } }); - return Promise.all(promises).then(() => { }); + await Promise.all(promises); } -function cleanUpUnusedBinaries(info: PlatformInformation): Promise { +async function cleanUpUnusedBinaries(info: PlatformInformation): Promise { const promises: Thenable[] = []; const packages: IPackage[] = util.packageJson["runtimeDependencies"]; const logger: Logger = getOutputChannelLogger(); @@ -313,7 +313,7 @@ function cleanUpUnusedBinaries(info: PlatformInformation): Promise { }); } }); - return Promise.all(promises).then(() => { }); + await Promise.all(promises); } function removeUnnecessaryFile(): Promise { @@ -414,7 +414,7 @@ async function postInstall(info: PlatformInformation): Promise { // If there is a download failure, we shouldn't continue activating the extension in some broken state. if (!installSuccess) { - return Promise.reject(""); + throw new Error(localize("failed.installing.dependencies", "Failed installing dependencies")); } else { // Notify users if debugging may not be supported on their OS. util.checkDistro(info); diff --git a/Extension/src/packageManager.ts b/Extension/src/packageManager.ts index 7c9d900371..f94370bb1c 100644 --- a/Extension/src/packageManager.ts +++ b/Extension/src/packageManager.ts @@ -104,30 +104,25 @@ export class PackageManager { tmp.setGracefulCleanup(); } - public DownloadPackages(progress: vscode.Progress<{ message?: string; increment?: number }>): Promise { - return this.GetPackages() - .then((packages) => { - let count: number = 1; - return this.BuildPromiseChain(packages, (pkg): Promise => { - const p: Promise = this.DownloadPackage(pkg); - progress.report({ message: localize("downloading.progress.description", "Downloading {0}", pkg.description), increment: this.GetIncrement(count, packages.length) }); - count += 1; - return p; - }); - }); + public async DownloadPackages(progress: vscode.Progress<{ message?: string; increment?: number }>): Promise { + const packages: IPackage[] = await this.GetPackages(); + let count: number = 1; + return util.sequentialResolve(packages, async (pkg): Promise => { + progress.report({ message: localize("downloading.progress.description", "Downloading {0}", pkg.description), increment: this.GetIncrement(count, packages.length) }); + count += 1; + await this.DownloadPackage(pkg); + }); } - public InstallPackages(progress: vscode.Progress<{ message?: string; increment?: number }>): Promise { - return this.GetPackages() - .then((packages) => { - let count: number = 1; - return this.BuildPromiseChain(packages, (pkg): Promise => { - const p: Promise = this.InstallPackage(pkg); - progress.report({ message: localize("installing.progress.description", "Installing {0}", pkg.description), increment: this.GetIncrement(count, packages.length) }); - count += 1; - return p; - }); - }); + public async InstallPackages(progress: vscode.Progress<{ message?: string; increment?: number }>): Promise { + const packages: IPackage[] = await this.GetPackages(); + let count: number = 1; + return util.sequentialResolve(packages, async (pkg): Promise => { + progress.report({ message: localize("installing.progress.description", "Installing {0}", pkg.description), increment: this.GetIncrement(count, packages.length) }); + count += 1; + await this.InstallPackage(pkg); + }); + } private GetIncrement(curStep: number, totalSteps: number): number { @@ -138,28 +133,12 @@ export class PackageManager { return (curStep !== totalSteps) ? increment : maxIncrement - (totalSteps - 1) * increment; } - public GetPackages(): Promise { - return this.GetPackageList() - .then((list) => - list.filter((value, index, array) => - ArchitecturesMatch(value, this.platformInfo) && - PlatformsMatch(value, this.platformInfo) && - VersionsMatch(value, this.platformInfo) - ) - ); - } - - /** Builds a chain of promises by calling the promiseBuilder function once per item in the list. - * Like Promise.all, but runs the promises in sequence rather than simultaneously. - */ - private BuildPromiseChain(items: TItem[], promiseBuilder: (item: TItem) => Promise): Promise { - let promiseChain: Promise = Promise.resolve(null); - - for (const item of items) { - promiseChain = promiseChain.then(() => promiseBuilder(item)); - } - - return promiseChain; + public async GetPackages(): Promise { + const list: IPackage[] = await this.GetPackageList(); + return list.filter((value, index, array) => ArchitecturesMatch(value, this.platformInfo) && + PlatformsMatch(value, this.platformInfo) && + VersionsMatch(value, this.platformInfo) + ); } private GetPackageList(): Promise { diff --git a/Extension/src/platform.ts b/Extension/src/platform.ts index a97d683236..48915c0ca1 100644 --- a/Extension/src/platform.ts +++ b/Extension/src/platform.ts @@ -25,32 +25,25 @@ export function GetOSName(processPlatform: string | undefined): string | undefin export class PlatformInformation { constructor(public platform: string, public architecture: string, public distribution?: LinuxDistribution, public version?: string) { } - public static GetPlatformInformation(): Promise { + public static async GetPlatformInformation(): Promise { const platform: string = os.platform(); const architecture: string = PlatformInformation.GetArchitecture(); - let distributionPromise: Promise = Promise.resolve(undefined); - let versionPromise: Promise = Promise.resolve(undefined); - + let distribution: LinuxDistribution | undefined; + let version: string | undefined; switch (platform) { case "win32": break; - case "linux": - distributionPromise = LinuxDistribution.GetDistroInformation(); + distribution = await LinuxDistribution.GetDistroInformation(); break; - case "darwin": - versionPromise = PlatformInformation.GetDarwinVersion(); + version = await PlatformInformation.GetDarwinVersion(); break; - default: throw new Error(localize("unknown.os.platform", "Unknown OS platform")); } - return Promise.all([distributionPromise, versionPromise]) - .then(([distro, version]) => - new PlatformInformation(platform, architecture, distro, version) - ); + return new PlatformInformation(platform, architecture, distribution, version); } public static GetArchitecture(): string { From c7503594752787ba0f7a0e2244bb1f34040f4b93 Mon Sep 17 00:00:00 2001 From: csigs Date: Mon, 3 May 2021 16:18:39 -0700 Subject: [PATCH 39/48] Localization - Translated Strings (#7460) --- Extension/i18n/chs/package.i18n.json | 4 ++-- Extension/i18n/chs/src/main.i18n.json | 3 +-- Extension/i18n/chs/src/packageManager.i18n.json | 2 +- Extension/i18n/cht/package.i18n.json | 4 ++-- Extension/i18n/cht/src/main.i18n.json | 3 +-- Extension/i18n/cht/src/packageManager.i18n.json | 2 +- Extension/i18n/csy/package.i18n.json | 4 ++-- Extension/i18n/csy/src/main.i18n.json | 3 +-- Extension/i18n/csy/src/packageManager.i18n.json | 2 +- Extension/i18n/deu/package.i18n.json | 4 ++-- Extension/i18n/deu/src/main.i18n.json | 3 +-- Extension/i18n/deu/src/packageManager.i18n.json | 2 +- Extension/i18n/esn/package.i18n.json | 4 ++-- Extension/i18n/esn/src/main.i18n.json | 3 +-- Extension/i18n/esn/src/packageManager.i18n.json | 2 +- Extension/i18n/fra/package.i18n.json | 4 ++-- Extension/i18n/fra/src/main.i18n.json | 3 +-- Extension/i18n/fra/src/packageManager.i18n.json | 2 +- Extension/i18n/ita/package.i18n.json | 4 ++-- Extension/i18n/ita/src/main.i18n.json | 3 +-- Extension/i18n/ita/src/packageManager.i18n.json | 2 +- Extension/i18n/jpn/package.i18n.json | 4 ++-- Extension/i18n/jpn/src/main.i18n.json | 3 +-- Extension/i18n/jpn/src/packageManager.i18n.json | 2 +- Extension/i18n/kor/package.i18n.json | 4 ++-- Extension/i18n/kor/src/main.i18n.json | 3 +-- Extension/i18n/kor/src/packageManager.i18n.json | 2 +- Extension/i18n/plk/package.i18n.json | 4 ++-- Extension/i18n/plk/src/main.i18n.json | 3 +-- Extension/i18n/plk/src/packageManager.i18n.json | 2 +- Extension/i18n/ptb/package.i18n.json | 4 ++-- Extension/i18n/ptb/src/main.i18n.json | 3 +-- Extension/i18n/ptb/src/packageManager.i18n.json | 2 +- Extension/i18n/rus/package.i18n.json | 4 ++-- Extension/i18n/rus/src/main.i18n.json | 3 +-- Extension/i18n/rus/src/packageManager.i18n.json | 2 +- Extension/i18n/trk/package.i18n.json | 4 ++-- Extension/i18n/trk/src/main.i18n.json | 3 +-- Extension/i18n/trk/src/packageManager.i18n.json | 2 +- 39 files changed, 52 insertions(+), 65 deletions(-) diff --git a/Extension/i18n/chs/package.i18n.json b/Extension/i18n/chs/package.i18n.json index 6a1ce4c3eb..63ac8348a1 100644 --- a/Extension/i18n/chs/package.i18n.json +++ b/Extension/i18n/chs/package.i18n.json @@ -183,7 +183,7 @@ "c_cpp.debuggers.pipeTransport.pipeProgram.description": "要执行的完全限定的管道命令。", "c_cpp.debuggers.pipeTransport.pipeArgs.description": "传递给管道程序配置连接的命令行参数。", "c_cpp.debuggers.pipeTransport.pipeEnv.description": "传递给程序的环境变量。", - "c_cpp.debuggers.pipeTransport.quoteArgs.description": "如果 pipeProgram 的单个参数包含字符(如空格或制表符),是否应引用它? 如果为 \"false\",则将不再自动引用调试程序命令。\n默认为 \"true\"。", + "c_cpp.debuggers.pipeTransport.quoteArgs.description": "If the pipeProgram's individual arguments contain characters (such as spaces or tabs), should it be quoted? If 'false', the debugger command will no longer be automatically quoted. \r\nDefault is 'true'.", "c_cpp.debuggers.logging.description": "用于确定应将哪些类型的消息记录到调试控制台的可选标志。", "c_cpp.debuggers.logging.exceptions.description": "用于确定是否应将异常消息记录到调试控制台的可选标志。默认为 true。", "c_cpp.debuggers.logging.moduleLoad.description": "用于确定是否应将模块加载事件记录到调试控制台的可选标志。默认为 true。", @@ -208,7 +208,7 @@ "c_cpp.debuggers.cppdbg.visualizerFile.description": "调试此进程时要使用的 .natvis 文件。此选项与 GDB 整齐打印不兼容。如果使用此设置,请同时查看 \"showDisplayString\"。", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "调试此进程时要使用的 .natvis 文件。", "c_cpp.debuggers.showDisplayString.description": "指定了 visualizerFile 时,showDisplayString 将启用显示字符串。启用此选项可能会导致调试期间的性能下降。", - "c_cpp.debuggers.environment.description": "要添加到程序环境的环境变量。示例: [ { \"name\": \"squid\", \"value\": \"clam\" } ]。", + "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", "c_cpp.debuggers.envFile.description": "包含环境变量定义的文件的绝对路径。此文件具有每行由等号分隔的键值对。例如: 键=值", "c_cpp.debuggers.additionalSOLibSearchPath.description": "要用于搜索 .so 文件的目录列表(以分号分隔)。示例: \"c:\\dir1;c:\\dir2\"。", "c_cpp.debuggers.MIMode.description": "指示 MIDebugEngine 要连接到的控制台调试程序。允许的值为 \"gdb\"、\"lldb\"。", diff --git a/Extension/i18n/chs/src/main.i18n.json b/Extension/i18n/chs/src/main.i18n.json index a99c1f9611..d78fec48d7 100644 --- a/Extension/i18n/chs/src/main.i18n.json +++ b/Extension/i18n/chs/src/main.i18n.json @@ -5,9 +5,8 @@ // Do not edit this file. It is machine generated. { "architecture.not.supported": "体系结构 {0} 不受支持。", - "alpine.containers.not.supported": "Alpine 容器不受支持。", + "apline.containers.not.supported": "Alpine 容器不受支持。", "download.button": "转到下载页", - "native.binaries.mismatch.osx": "MacOS Intel 版本的扩展已安装。 由于你使用的是 Apple Silicon Mac,我们建议你安装 Apple Silicon 版本的扩展。", "native.binaries.not.supported": "此 {0} {1} 版本的扩展与你的 OS 不兼容,请下载并安装 \"{2}\" 版本的扩展。", "extension.installation.failed": "C/C++ 扩展安装失败。为使函数正常工作,需要修复或重新安装 C/C++ 语言功能的扩展。", "remove.extension": "尝试修复", diff --git a/Extension/i18n/chs/src/packageManager.i18n.json b/Extension/i18n/chs/src/packageManager.i18n.json index 685b0851e6..6e7afe59d4 100644 --- a/Extension/i18n/chs/src/packageManager.i18n.json +++ b/Extension/i18n/chs/src/packageManager.i18n.json @@ -26,9 +26,9 @@ "zip.file.error": "Zip 文件错误", "create.directory.error": "创建目录时出错", "zip.stream.error": "读取 zip 流时出错", - "read.stream.error": "“读取”流中出错", "unlink.error": "取消链接文件 {0} 时出错", "rename.error": "重命名文件 {0} 时出错", + "read.stream.error": "“读取”流中出错", "write.stream.error": "“写入”流中出错", "file.already.exists": "警告: 文件“{0}”已存在,但未更新。" } \ No newline at end of file diff --git a/Extension/i18n/cht/package.i18n.json b/Extension/i18n/cht/package.i18n.json index 1a1374cb92..a2313a7848 100644 --- a/Extension/i18n/cht/package.i18n.json +++ b/Extension/i18n/cht/package.i18n.json @@ -183,7 +183,7 @@ "c_cpp.debuggers.pipeTransport.pipeProgram.description": "要執行的完整管道命令。", "c_cpp.debuggers.pipeTransport.pipeArgs.description": "傳遞至管道程式以設定連線的命令列引數。", "c_cpp.debuggers.pipeTransport.pipeEnv.description": "傳遞至管道程式的環境變數。", - "c_cpp.debuggers.pipeTransport.quoteArgs.description": "若 pipeProgram 的個別引數包含字元 (例如空格或定位字元),是否應該加上引號? 若設定為 'false',不會再自動為偵錯工具命令加上引號。\n預設為 'true'。", + "c_cpp.debuggers.pipeTransport.quoteArgs.description": "If the pipeProgram's individual arguments contain characters (such as spaces or tabs), should it be quoted? If 'false', the debugger command will no longer be automatically quoted. \r\nDefault is 'true'.", "c_cpp.debuggers.logging.description": "選擇性旗標,用以判斷應記錄到偵錯主控台的訊息類型。", "c_cpp.debuggers.logging.exceptions.description": "選擇性旗標,用以判斷是否應將例外狀況訊息記錄到偵錯主控台。預設為 true。", "c_cpp.debuggers.logging.moduleLoad.description": "選擇性旗標,用以判斷是否應將模組載入事件記錄到偵錯主控台。預設為 true。", @@ -208,7 +208,7 @@ "c_cpp.debuggers.cppdbg.visualizerFile.description": "偵錯此處理序時要使用的 .natvis 檔案。此選項與 GDB 美化顯示不相容。若使用此設定,也請參閱 \"showDisplayString\"。", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "偵錯此處理序時要使用的 .natvis 檔案。", "c_cpp.debuggers.showDisplayString.description": "指定 visualizerFile 時,showDisplayString 會啟用顯示字串。開啟此選項可能會導致偵錯期間的效能變慢。", - "c_cpp.debuggers.environment.description": "要新增至程式環境的環境變數。範例: [ { \"name\": \"squid\", \"value\": \"clam\" } ]。", + "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", "c_cpp.debuggers.envFile.description": "包含環境變數定義之檔案的絕對路徑。此檔案具有以等號分隔每行的索引鍵值組。例如「鍵=值」", "c_cpp.debuggers.additionalSOLibSearchPath.description": "要用於搜尋 .so 檔案的目錄清單 (以分號分隔)。範例: \"c:\\dir1;c:\\dir2\"。", "c_cpp.debuggers.MIMode.description": "表示 MIDebugEngine 將連線的主控台偵錯工具。允許的值為 \"gdb\" \"lldb\"。", diff --git a/Extension/i18n/cht/src/main.i18n.json b/Extension/i18n/cht/src/main.i18n.json index 9c15a4f47d..8f8102bc32 100644 --- a/Extension/i18n/cht/src/main.i18n.json +++ b/Extension/i18n/cht/src/main.i18n.json @@ -5,9 +5,8 @@ // Do not edit this file. It is machine generated. { "architecture.not.supported": "不支援架構 {0}。 ", - "alpine.containers.not.supported": "不支援 Alpine 容器。", + "apline.containers.not.supported": "不支援 Alpine 容器。", "download.button": "前往 [下載\ 頁面", - "native.binaries.mismatch.osx": "已安裝 macOS Intel 版延伸模組。因為您使用的是 Apple Silicon Mac,建議您安裝 Apple Silicon 版延伸模組。", "native.binaries.not.supported": "此 {0} {1} 版延伸模組與您的作業系統不相容。請下載並安裝 \"{2}\" 版延伸模組。", "extension.installation.failed": "無法成功安裝 C/C++ 延伸模組。您必須修復或重新安裝 C/C++ 語言功能的延伸模組,才可正常運作。", "remove.extension": "嘗試修復", diff --git a/Extension/i18n/cht/src/packageManager.i18n.json b/Extension/i18n/cht/src/packageManager.i18n.json index 9c015845c7..0d01797b4c 100644 --- a/Extension/i18n/cht/src/packageManager.i18n.json +++ b/Extension/i18n/cht/src/packageManager.i18n.json @@ -26,9 +26,9 @@ "zip.file.error": "Zip 檔案錯誤", "create.directory.error": "建立目錄時發生錯誤", "zip.stream.error": "讀取 zip 串流時發生錯誤", - "read.stream.error": "讀取串流中發生錯誤", "unlink.error": "將檔案 {0} 取消連結時發生錯誤", "rename.error": "重新命名檔案 {0} 時發生錯誤", + "read.stream.error": "讀取串流中發生錯誤", "write.stream.error": "寫入串流中發生錯誤", "file.already.exists": "警告: 檔案 '{0}' 已經存在但未更新。" } \ No newline at end of file diff --git a/Extension/i18n/csy/package.i18n.json b/Extension/i18n/csy/package.i18n.json index 3470c5680e..7df402f94a 100644 --- a/Extension/i18n/csy/package.i18n.json +++ b/Extension/i18n/csy/package.i18n.json @@ -183,7 +183,7 @@ "c_cpp.debuggers.pipeTransport.pipeProgram.description": "Plně kvalifikovaný příkaz kanálu, který se má provést", "c_cpp.debuggers.pipeTransport.pipeArgs.description": "Argumenty příkazového řádku, které se předávají do cílového programu, aby se nakonfigurovalo připojení", "c_cpp.debuggers.pipeTransport.pipeEnv.description": "Proměnné prostředí, které se předávají do cílového programu", - "c_cpp.debuggers.pipeTransport.quoteArgs.description": "Pokud jednotlivé argumenty pro pipeProgram obsahují znaky (například mezery nebo tabulátory), mají se používat uvozovky? Pokud se nastaví hodnota false, nebudou se už v příkazu ladicího programu automaticky používat uvozovky. \nVýchozí hodnota je true.", + "c_cpp.debuggers.pipeTransport.quoteArgs.description": "If the pipeProgram's individual arguments contain characters (such as spaces or tabs), should it be quoted? If 'false', the debugger command will no longer be automatically quoted. \r\nDefault is 'true'.", "c_cpp.debuggers.logging.description": "Nepovinné příznaky, které určují, které typy zpráv se mají protokolovat do konzoly ladění", "c_cpp.debuggers.logging.exceptions.description": "Nepovinný příznak, který určuje, jestli se do konzoly ladění mají protokolovat zprávy výjimek. Výchozí hodnota je true.", "c_cpp.debuggers.logging.moduleLoad.description": "Nepovinný příznak, který určuje, jestli se do konzoly ladění mají protokolovat události načítání modulu. Výchozí hodnota je true.", @@ -208,7 +208,7 @@ "c_cpp.debuggers.cppdbg.visualizerFile.description": "Soubor .natvis, který se použije při ladění tohoto procesu. Tato možnost není kompatibilní s přehledným výpisem GDB. Pokud používáte toto nastavení, podívejte se i na showDisplayString.", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "Soubor .natvis, který se použije při ladění tohoto procesu.", "c_cpp.debuggers.showDisplayString.description": "Když se zadá visualizerFile, showDisplayString povolí zobrazovaný řetězec. Když se tato možnost zapne, může to způsobit nižší výkon při ladění.", - "c_cpp.debuggers.environment.description": "Proměnné prostředí, které se mají přidat do prostředí pro program. Příklad: [ { \"name\": \"squid\", \"value\": \"clam\" } ]", + "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", "c_cpp.debuggers.envFile.description": "Absolutní cesta k souboru, který obsahuje definice proměnných prostředí. Tento soubor obsahuje na každém řádku pár klíč-hodnota rozdělený znakem rovnítka. Např. KLÍČ=HODNOTA.", "c_cpp.debuggers.additionalSOLibSearchPath.description": "Seznam středníkem oddělených adresářů, ve kterých se budou hledat soubory .so. Příklad: c:\\dir1;c:\\dir2", "c_cpp.debuggers.MIMode.description": "Určuje ladicí program konzoly, ke kterému se připojí MIDebugEngine. Povolené hodnoty jsou gdb a lldb.", diff --git a/Extension/i18n/csy/src/main.i18n.json b/Extension/i18n/csy/src/main.i18n.json index a859d2c8c5..452d30b243 100644 --- a/Extension/i18n/csy/src/main.i18n.json +++ b/Extension/i18n/csy/src/main.i18n.json @@ -5,9 +5,8 @@ // Do not edit this file. It is machine generated. { "architecture.not.supported": "Architektura {0} se nepodporuje. ", - "alpine.containers.not.supported": "Kontejnery Alpine se nepodporují.", + "apline.containers.not.supported": "Kontejnery Alpine se nepodporují.", "download.button": "Přejít na stránku stahování", - "native.binaries.mismatch.osx": "Verze rozšíření macOSu pro Intel se nainstalovala. Vzhledem k tomu, že používáte Apple Silicon Mac, doporučujeme nainstalovat verzi rozšíření Apple Silicon.", "native.binaries.not.supported": "Tato verze rozšíření pro {0} {1} není kompatibilní s vaším operačním systémem. Stáhněte a nainstalujte si prosím verzi rozšíření {2}.", "extension.installation.failed": "Nepovedlo se úspěšně nainstalovat rozšíření jazyka C/C++. Aby rozšíření pro funkce jazyka C/C++ fungovalo správně, bude nutné ho opravit nebo přeinstalovat.", "remove.extension": "Pokusit se o opravu", diff --git a/Extension/i18n/csy/src/packageManager.i18n.json b/Extension/i18n/csy/src/packageManager.i18n.json index 4078230ed1..5a9815dfdd 100644 --- a/Extension/i18n/csy/src/packageManager.i18n.json +++ b/Extension/i18n/csy/src/packageManager.i18n.json @@ -26,9 +26,9 @@ "zip.file.error": "Chyba souboru ZIP", "create.directory.error": "Při vytváření adresáře došlo k chybě.", "zip.stream.error": "Chyba při čtení streamu ZIP", - "read.stream.error": "Ve streamu pro čtení došlo k chybě.", "unlink.error": "Při rušení propojení souboru {0} došlo k chybě.", "rename.error": "Při přejmenování souboru {0} došlo k chybě.", + "read.stream.error": "Ve streamu pro čtení došlo k chybě.", "write.stream.error": "Ve streamu pro zápis došlo k chybě.", "file.already.exists": "Upozornění: Soubor {0} už existuje a neaktualizoval se." } \ No newline at end of file diff --git a/Extension/i18n/deu/package.i18n.json b/Extension/i18n/deu/package.i18n.json index e0bb807c30..26acf01fc4 100644 --- a/Extension/i18n/deu/package.i18n.json +++ b/Extension/i18n/deu/package.i18n.json @@ -183,7 +183,7 @@ "c_cpp.debuggers.pipeTransport.pipeProgram.description": "Der vollqualifizierte auszuführende Pipebefehl.", "c_cpp.debuggers.pipeTransport.pipeArgs.description": "Befehlszeilenargumente, die zum Konfigurieren der Verbindung an das Pipeprogramm übergeben werden.", "c_cpp.debuggers.pipeTransport.pipeEnv.description": "Umgebungsvariablen, die an das Pipeprogramm übergeben werden.", - "c_cpp.debuggers.pipeTransport.quoteArgs.description": "Gibt an, ob Anführungszeichen gesetzt werden sollen, wenn die einzelnen pipeProgram-Argumente Zeichen enthalten (z. B. Leerzeichen oder Tabstopps). Bei Einstellung auf \"false\" wird der Debuggerbefehl nicht mehr automatisch in Anführungszeichen gesetzt. \nDer Standardwert ist \"true\".", + "c_cpp.debuggers.pipeTransport.quoteArgs.description": "If the pipeProgram's individual arguments contain characters (such as spaces or tabs), should it be quoted? If 'false', the debugger command will no longer be automatically quoted. \r\nDefault is 'true'.", "c_cpp.debuggers.logging.description": "Optionale Flags zum Festlegen, welche Nachrichtentypen in der Debugging-Konsole protokolliert werden sollen.", "c_cpp.debuggers.logging.exceptions.description": "Optionales Flag zum Festlegen, ob Ausnahmemeldungen in der Debugging-Konsole protokolliert werden sollen. Der Standardwert ist TRUE.", "c_cpp.debuggers.logging.moduleLoad.description": "Optionales Flag zum Festlegen, ob Modulladeereignisse in der Debugging-Konsole protokolliert werden sollen. Der Standardwert ist TRUE.", @@ -208,7 +208,7 @@ "c_cpp.debuggers.cppdbg.visualizerFile.description": "Die .natvis-Datei, die beim Debuggen dieses Prozesses verwendet werden soll. Diese Option ist nicht mit der automatischen Strukturierung und Einrückung von GDB kompatibel. Weitere Informationen finden Sie auch bei \"showDisplayString\", wenn Sie diese Einstellung verwenden.", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "Die .natvis-Datei, die beim Debuggen dieses Prozesses verwendet werden soll.", "c_cpp.debuggers.showDisplayString.description": "Wenn eine visualizerFile angegeben wird, wird die Anzeigezeichenfolge von showDisplayString aktiviert. Durch Aktivieren dieser Option kann die Leistung während des Debuggings verlangsamt werden.", - "c_cpp.debuggers.environment.description": "Umgebungsvariablen, die der Umgebung für das Programm hinzugefügt werden sollen. Beispiel: [ { \"name\": \"squid\", \"value\": \"clam\" } ].", + "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", "c_cpp.debuggers.envFile.description": "Absoluter Pfad zu einer Datei mit Umgebungsvariablendefinitionen. Für diese Datei sind Schlüssel-Wert-Paare pro Zeile durch ein Gleichheitszeichen getrennt. Beispiel: SCHLÜSSEL=WERT", "c_cpp.debuggers.additionalSOLibSearchPath.description": "Durch Semikolons getrennte Liste von Verzeichnissen, die für die Suche nach SO-Dateien verwendet werden sollen. Beispiel: \"c:\\dir1;c:\\dir2\".", "c_cpp.debuggers.MIMode.description": "Hiermit wird der Konsolendebugger angegeben, mit dem die MIDebugEngine eine Verbindung herstellt. Zulässige Werte sind \"gdb\" und \"lldb\".", diff --git a/Extension/i18n/deu/src/main.i18n.json b/Extension/i18n/deu/src/main.i18n.json index 3a2188ce2a..e0a2fe50fd 100644 --- a/Extension/i18n/deu/src/main.i18n.json +++ b/Extension/i18n/deu/src/main.i18n.json @@ -5,9 +5,8 @@ // Do not edit this file. It is machine generated. { "architecture.not.supported": "Die Architektur \"{0}\" wird nicht unterstützt. ", - "alpine.containers.not.supported": "Alpine-Container werden nicht unterstützt.", + "apline.containers.not.supported": "Alpine-Container werden nicht unterstützt.", "download.button": "Gehe zu Downloadseite", - "native.binaries.mismatch.osx": "Die macOS Intel-Version der Erweiterung wurde installiert. Da Sie sich auf einem Apple Silicon Mac befinden, empfehlen wir die Installation der Apple Silicon-Version der Erweiterung.", "native.binaries.not.supported": "Diese Version {0} {1} der Erweiterung ist nicht mit Ihrem Betriebssystem kompatibel. Laden Sie Version \"{2}\" der Erweiterung herunter, und installieren Sie sie.", "extension.installation.failed": "Die C/C++-Erweiterung konnte nicht erfolgreich installiert werden. Sie müssen die Erweiterung für C/C++-Sprachfeatures reparieren oder neu installieren, damit die Erweiterung ordnungsgemäß funktioniert.", "remove.extension": "Reparaturversuch", diff --git a/Extension/i18n/deu/src/packageManager.i18n.json b/Extension/i18n/deu/src/packageManager.i18n.json index cae6caf18f..2cf3c8daee 100644 --- a/Extension/i18n/deu/src/packageManager.i18n.json +++ b/Extension/i18n/deu/src/packageManager.i18n.json @@ -26,9 +26,9 @@ "zip.file.error": "Fehler in ZIP-Datei.", "create.directory.error": "Fehler beim Erstellen des Verzeichnisses.", "zip.stream.error": "Fehler beim Lesen des ZIP-Datenstroms.", - "read.stream.error": "Fehler im Lesedatenstrom.", "unlink.error": "Fehler beim Aufheben der Verknüpfung für die Datei \"{0}\".", "rename.error": "Fehler beim Umbenennen der Datei\"{0}\".", + "read.stream.error": "Fehler im Lesedatenstrom.", "write.stream.error": "Fehler im Schreibdatenstrom.", "file.already.exists": "Warnung: Die Datei \"{0}\" ist bereits vorhanden und wurde nicht aktualisiert." } \ No newline at end of file diff --git a/Extension/i18n/esn/package.i18n.json b/Extension/i18n/esn/package.i18n.json index 495bdbfd75..33a729f92b 100644 --- a/Extension/i18n/esn/package.i18n.json +++ b/Extension/i18n/esn/package.i18n.json @@ -183,7 +183,7 @@ "c_cpp.debuggers.pipeTransport.pipeProgram.description": "Comando de canalización completo para ejecutar.", "c_cpp.debuggers.pipeTransport.pipeArgs.description": "Argumentos de la línea de comandos que se pasan al programa de canalización para configurar la conexión.", "c_cpp.debuggers.pipeTransport.pipeEnv.description": "Variables de entorno que se pasan al programa de canalización.", - "c_cpp.debuggers.pipeTransport.quoteArgs.description": "Si los argumentos individuales de pipeProgram contienen caracteres (como espacios o tabulaciones), ¿debe incluirse entre comillas? Si es \"false\", el comando del depurador dejará de incluirse entre comillas automáticamente. \nEl valor predeterminado es \"true\".", + "c_cpp.debuggers.pipeTransport.quoteArgs.description": "If the pipeProgram's individual arguments contain characters (such as spaces or tabs), should it be quoted? If 'false', the debugger command will no longer be automatically quoted. \r\nDefault is 'true'.", "c_cpp.debuggers.logging.description": "Marcas opcionales que determinan los tipos de mensajes que deben registrarse en la Consola de depuración.", "c_cpp.debuggers.logging.exceptions.description": "Marca opcional que determina si los mensajes de excepción deben registrarse en la Consola de depuración. El valor predeterminado es true.", "c_cpp.debuggers.logging.moduleLoad.description": "Marca opcional que determina si los eventos de carga de módulos deben registrarse en la Consola de depuración. El valor predeterminado es true.", @@ -208,7 +208,7 @@ "c_cpp.debuggers.cppdbg.visualizerFile.description": "Archivo .natvis que debe usarse para depurar este proceso. Esta opción no es compatible con la impresión con sangría de GDB. Vea también \"showDisplayString\" si utiliza esta configuración.", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "Archivo. natvis que debe usarse para depurar este proceso.", "c_cpp.debuggers.showDisplayString.description": "Cuando se especifica visualizerFile, showDisplayString habilita la cadena para mostrar. La activación de esta opción puede ralentizar el rendimiento durante la depuración.", - "c_cpp.debuggers.environment.description": "Variables de entorno que se agregan al entorno del programa. Ejemplo: [ { \"name\": \"squid\", \"value\": \"clam\" } ].", + "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", "c_cpp.debuggers.envFile.description": "Ruta de acceso absoluta a un archivo que contiene definiciones de variables de entorno. Este archivo tiene pares clave-valor separados por un signo igual por línea. Por ejemplo, CLAVE=VALOR.", "c_cpp.debuggers.additionalSOLibSearchPath.description": "Lista de directorios separados por punto y coma que debe usarse para buscar archivos .so. Ejemplo: \"c:\\dir1;c:\\dir2\".", "c_cpp.debuggers.MIMode.description": "Indica el depurador de la consola al que debe conectarse MIDebugEngine. Los valores permitidos son \"gdb\" y \"lldb\".", diff --git a/Extension/i18n/esn/src/main.i18n.json b/Extension/i18n/esn/src/main.i18n.json index 706cb7ebe9..fda6383160 100644 --- a/Extension/i18n/esn/src/main.i18n.json +++ b/Extension/i18n/esn/src/main.i18n.json @@ -5,9 +5,8 @@ // Do not edit this file. It is machine generated. { "architecture.not.supported": "La arquitectura {0} no se admite. ", - "alpine.containers.not.supported": "Los contenedores de Alpine no se admiten.", + "apline.containers.not.supported": "Los contenedores de Alpine no se admiten.", "download.button": "Ir a la página de descarga", - "native.binaries.mismatch.osx": "Se ha instalado la versión de Intel de macOS de la extensión. Como se trata de un equipo multiusuario de Apple Silicon, se recomienda instalar la versión de Apple Silicon de la extensión.", "native.binaries.not.supported": "La versión para {0} {1} de la extensión no es compatible con el sistema operativo. Descargue la versión \"{2}\" de la extensión e instálela.", "extension.installation.failed": "Error de instalación de la extensión de C/C++. Tendrá que reparar o reinstalar la extensión para que las características del lenguaje C/C++ funcionen correctamente.", "remove.extension": "Intentar reparar", diff --git a/Extension/i18n/esn/src/packageManager.i18n.json b/Extension/i18n/esn/src/packageManager.i18n.json index 9184c5d3c6..7e677ff259 100644 --- a/Extension/i18n/esn/src/packageManager.i18n.json +++ b/Extension/i18n/esn/src/packageManager.i18n.json @@ -26,9 +26,9 @@ "zip.file.error": "Error de archivo ZIP", "create.directory.error": "Error al crear el directorio", "zip.stream.error": "Error al leer la secuencia ZIP", - "read.stream.error": "Error en la secuencia de lectura", "unlink.error": "Error al desvincular el archivo {0}", "rename.error": "Error al cambiar el nombre del archivo {0}", + "read.stream.error": "Error en la secuencia de lectura", "write.stream.error": "Error en la secuencia de escritura", "file.already.exists": "Advertencia: El archivo \"{0}\" ya existe y no se ha actualizado." } \ No newline at end of file diff --git a/Extension/i18n/fra/package.i18n.json b/Extension/i18n/fra/package.i18n.json index 0ee34a1cf1..6afc39042d 100644 --- a/Extension/i18n/fra/package.i18n.json +++ b/Extension/i18n/fra/package.i18n.json @@ -183,7 +183,7 @@ "c_cpp.debuggers.pipeTransport.pipeProgram.description": "Commande canal complète à exécuter.", "c_cpp.debuggers.pipeTransport.pipeArgs.description": "Arguments de ligne de commande passés au programme canal pour configurer la connexion.", "c_cpp.debuggers.pipeTransport.pipeEnv.description": "Variables d'environnement passées au programme canal.", - "c_cpp.debuggers.pipeTransport.quoteArgs.description": "Si des arguments individuels de pipeProgram contiennent des caractères (par exemple des espaces ou des tabulations), doivent-ils être placés entre guillemets ? Si la valeur est 'false', la commande de débogueur n'est plus automatiquement placée entre guillemets. \nLa valeur par défaut est 'true'.", + "c_cpp.debuggers.pipeTransport.quoteArgs.description": "If the pipeProgram's individual arguments contain characters (such as spaces or tabs), should it be quoted? If 'false', the debugger command will no longer be automatically quoted. \r\nDefault is 'true'.", "c_cpp.debuggers.logging.description": "Indicateurs facultatifs pour déterminer les types de messages à journaliser dans la console de débogage.", "c_cpp.debuggers.logging.exceptions.description": "Indicateur facultatif pour déterminer si les messages d'exception doivent être journalisés dans la console de débogage. La valeur par défaut est true.", "c_cpp.debuggers.logging.moduleLoad.description": "Indicateur facultatif pour déterminer si les événements de chargement de module doivent être journalisés dans la console de débogage. La valeur par défaut est true.", @@ -208,7 +208,7 @@ "c_cpp.debuggers.cppdbg.visualizerFile.description": "Fichier .natvis à utiliser pendant le débogage de ce processus. Cette option n'est pas compatible avec l'impression en mode Pretty GDB. Consultez également \"showDisplayString\" en cas d'utilisation de ce paramètre.", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "Fichier .natvis à utiliser pendant le débogage de ce processus.", "c_cpp.debuggers.showDisplayString.description": "Quand un visualizerFile est spécifié, showDisplayString active la chaîne d'affichage. Si vous activez cette option, les performances peuvent être ralenties pendant le débogage.", - "c_cpp.debuggers.environment.description": "Variables d'environnement à ajouter à l'environnement du programme. Exemple : [ { \"name\": \"squid\", \"value\": \"clam\" } ].", + "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", "c_cpp.debuggers.envFile.description": "Chemin absolu d'un fichier contenant des définitions de variable d'environnement. Ce fichier a des paires clé-valeur séparées par un signe égal par ligne. Par exemple, CLÉ=VALEUR", "c_cpp.debuggers.additionalSOLibSearchPath.description": "Liste de répertoires séparés par des points-virgules à utiliser pour rechercher des fichiers .so. Exemple : \"c:\\dir1;c:\\dir2\".", "c_cpp.debuggers.MIMode.description": "Indique le débogueur de console auquel MIDebugEngine se connecte. Les valeurs autorisées sont \"gdb\" \"lldb\".", diff --git a/Extension/i18n/fra/src/main.i18n.json b/Extension/i18n/fra/src/main.i18n.json index 43e8609f9e..7b3e9588b8 100644 --- a/Extension/i18n/fra/src/main.i18n.json +++ b/Extension/i18n/fra/src/main.i18n.json @@ -5,9 +5,8 @@ // Do not edit this file. It is machine generated. { "architecture.not.supported": "L'architecture {0} n'est pas prise en charge. ", - "alpine.containers.not.supported": "Les conteneurs Alpine ne sont pas pris en charge.", + "apline.containers.not.supported": "Les conteneurs Alpine ne sont pas pris en charge.", "download.button": "Accéder à la page de téléchargement", - "native.binaries.mismatch.osx": "La version macOS Intel de l’extension a été installée. Dans la mesure où vous êtes sur Apple Silicon Mac, nous vous recommandons d’installer la version Apple Silicon de l’extension.", "native.binaries.not.supported": "Cette version {0} {1} de l'extension est incompatible avec votre système d'exploitation. Téléchargez et installez la version {2} de l'extension.", "extension.installation.failed": "Échec de l'installation de l'extension C/C++. Vous devez réparer ou réinstaller l'extension pour que les fonctionnalités du langage C/C++ fonctionnent correctement.", "remove.extension": "Tentative de réparation", diff --git a/Extension/i18n/fra/src/packageManager.i18n.json b/Extension/i18n/fra/src/packageManager.i18n.json index 78871bde37..2741c81f2c 100644 --- a/Extension/i18n/fra/src/packageManager.i18n.json +++ b/Extension/i18n/fra/src/packageManager.i18n.json @@ -26,9 +26,9 @@ "zip.file.error": "Erreur du fichier zip", "create.directory.error": "Erreur de création du répertoire", "zip.stream.error": "Erreur de lecture du flux zip", - "read.stream.error": "Erreur du flux de lecture", "unlink.error": "Erreur de dissociation du fichier {0}", "rename.error": "Erreur de renommage du fichier {0}", + "read.stream.error": "Erreur du flux de lecture", "write.stream.error": "Erreur du flux d'écriture", "file.already.exists": "Avertissement : Le fichier '{0}' existe déjà et n'a pas été mis à jour." } \ No newline at end of file diff --git a/Extension/i18n/ita/package.i18n.json b/Extension/i18n/ita/package.i18n.json index 1a97142f07..935a8e72e2 100644 --- a/Extension/i18n/ita/package.i18n.json +++ b/Extension/i18n/ita/package.i18n.json @@ -183,7 +183,7 @@ "c_cpp.debuggers.pipeTransport.pipeProgram.description": "Comando pipe completo da eseguire.", "c_cpp.debuggers.pipeTransport.pipeArgs.description": "Argomenti della riga di comando passati al programma pipe per configurare la connessione.", "c_cpp.debuggers.pipeTransport.pipeEnv.description": "Variabili di ambiente passate al programma pipe.", - "c_cpp.debuggers.pipeTransport.quoteArgs.description": "Indica se i singoli argomenti di pipeProgram devono essere racchiusi tra virgolette quando contengono caratteri, ad esempio spazi o tabulazioni. Se è 'false', il comando del debugger non verrà più racchiuso automaticamente tra virgolette. \nL'impostazione predefinita è 'true'.", + "c_cpp.debuggers.pipeTransport.quoteArgs.description": "If the pipeProgram's individual arguments contain characters (such as spaces or tabs), should it be quoted? If 'false', the debugger command will no longer be automatically quoted. \r\nDefault is 'true'.", "c_cpp.debuggers.logging.description": "Flag facoltativi per determinare i tipi di messaggi da registrare nella Console di debug.", "c_cpp.debuggers.logging.exceptions.description": "Flag facoltativo per determinare se i messaggi di eccezione devono essere registrati nella Console di debug. Il valore predefinito è true.", "c_cpp.debuggers.logging.moduleLoad.description": "Flag facoltativo per determinare se gli eventi di caricamento del modulo devono essere registrati nella Console di debug. Il valore predefinito è true.", @@ -208,7 +208,7 @@ "c_cpp.debuggers.cppdbg.visualizerFile.description": "File con estensione natvis da usare durante il debug di questo processo. Questa opzione non è compatibile con la riformattazione GDB. Se si usa questa impostazione, vedere anche \"showDisplayString\".", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "File con estensione natvis da usare durante il debug di questo processo.", "c_cpp.debuggers.showDisplayString.description": "Quando si specifica un oggetto visualizerFile, showDisplayString abilita la stringa di visualizzazione. L'attivazione di questa opzione può comportare un rallentamento delle prestazioni durante il debug.", - "c_cpp.debuggers.environment.description": "Variabili di ambiente da aggiungere all'ambiente per il programma. Esempio: [ { \"name\": \"squid\", \"value\": \"clam\" } ].", + "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", "c_cpp.debuggers.envFile.description": "Percorso assoluto di un file contenente le definizioni delle variabili di ambiente. Questo file contiene su ogni riga coppie chiave-valore separate da un segno di uguale, ad esempio CHIAVE=VALORE", "c_cpp.debuggers.additionalSOLibSearchPath.description": "Elenco di directory delimitate da punto e virgola da usare per la ricerca di file con estensione so. Esempio: \"c:\\dir1;c:\\dir2\".", "c_cpp.debuggers.MIMode.description": "Indica il debugger della console a cui si connetterà MIDebugEngine. I valori consentiti sono \"gdb\" e \"lldb\".", diff --git a/Extension/i18n/ita/src/main.i18n.json b/Extension/i18n/ita/src/main.i18n.json index adbc7958ca..87a2e6fc85 100644 --- a/Extension/i18n/ita/src/main.i18n.json +++ b/Extension/i18n/ita/src/main.i18n.json @@ -5,9 +5,8 @@ // Do not edit this file. It is machine generated. { "architecture.not.supported": "L'architettura {0} non è supportata. ", - "alpine.containers.not.supported": "I contenitori Alpine non sono supportati.", + "apline.containers.not.supported": "I contenitori Alpine non sono supportati.", "download.button": "Vai alla pagina di download", - "native.binaries.mismatch.osx": "La versione per macOS Intel dell'estensione è stata installata. Dal momento che stai usando una Mac Apple Silicon, ti raccomandiamo di installare la versione per Apple Silicon dell'estensione.", "native.binaries.not.supported": "La versione {0} {1} dell'estensione non è compatibile con il sistema operativo. Scaricare e installare la versione \"{2}\" dell'estensione.", "extension.installation.failed": "Non è stato possibile installare l'estensione C/C++. Per funzionare correttamente, è necessario riparare o reinstallare l'estensione per le funzionalità del linguaggio C/C++.", "remove.extension": "Tentativo di riparazione", diff --git a/Extension/i18n/ita/src/packageManager.i18n.json b/Extension/i18n/ita/src/packageManager.i18n.json index 8bdcc6a33a..a614d351a8 100644 --- a/Extension/i18n/ita/src/packageManager.i18n.json +++ b/Extension/i18n/ita/src/packageManager.i18n.json @@ -26,9 +26,9 @@ "zip.file.error": "Errore del file ZIP", "create.directory.error": "Si è verificato un errore durante la creazione della directory", "zip.stream.error": "Si è verificato un errore durante la lettura del flusso ZIP", - "read.stream.error": "Si è verificato un errore durante la lettura del flusso", "unlink.error": "Si è verificato durante lo scollegamento del file {0}", "rename.error": "Si è verificato durante la ridenominazione del file {0}", + "read.stream.error": "Si è verificato un errore durante la lettura del flusso", "write.stream.error": "Si è verificato un errore durante la scrittura del flusso", "file.already.exists": "Avviso: il file '{0}' esiste già e non è stato aggiornato." } \ No newline at end of file diff --git a/Extension/i18n/jpn/package.i18n.json b/Extension/i18n/jpn/package.i18n.json index c6a8efb486..52296758e8 100644 --- a/Extension/i18n/jpn/package.i18n.json +++ b/Extension/i18n/jpn/package.i18n.json @@ -183,7 +183,7 @@ "c_cpp.debuggers.pipeTransport.pipeProgram.description": "実行するパイプ コマンドの完全修飾パス。", "c_cpp.debuggers.pipeTransport.pipeArgs.description": "接続を構成するためにパイプ プログラムに渡すコマンド ライン引数。", "c_cpp.debuggers.pipeTransport.pipeEnv.description": "パイプ プログラムに渡す環境変数。", - "c_cpp.debuggers.pipeTransport.quoteArgs.description": "pipeProgram の個々の引数に (スペースやタブなどの) 文字が含まれる場合に引用符で囲むかどうか。'false' に設定すると、デバッガー コマンドが自動的に引用符で囲まれることはなくなります。\n既定値は 'true' です。", + "c_cpp.debuggers.pipeTransport.quoteArgs.description": "If the pipeProgram's individual arguments contain characters (such as spaces or tabs), should it be quoted? If 'false', the debugger command will no longer be automatically quoted. \r\nDefault is 'true'.", "c_cpp.debuggers.logging.description": "どの種類のメッセージをデバッグ コンソールに記録する必要があるかを決定するオプションのフラグです。", "c_cpp.debuggers.logging.exceptions.description": "例外メッセージをデバッグ コンソールに記録するかどうかを決定するオプションのフラグです。既定値は true です。", "c_cpp.debuggers.logging.moduleLoad.description": "モジュール読み込みイベントをデバッグ コンソールに記録するかどうかを決定するオプションのフラグです。既定値は true です。", @@ -208,7 +208,7 @@ "c_cpp.debuggers.cppdbg.visualizerFile.description": "このプロセスをデバッグするときに使用する .natvis ファイルです。このオプションは GDB の再フォーマットと互換性がありません。この設定を使用する場合は、\"showDisplayString\" も参照してください。", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "このプロセスをデバッグするときに使用する .natvis ファイルです。", "c_cpp.debuggers.showDisplayString.description": "visualizerFile を指定すると、showDisplayString により表示文字列が有効になります。このオプションをオンにすると、デバッグ中にパフォーマンスが低下する可能性があります。", - "c_cpp.debuggers.environment.description": "プログラムの環境に追加する環境変数。例: [ { \"name\": \"squid\", \"value\": \"clam\" } ]。", + "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", "c_cpp.debuggers.envFile.description": "環境変数の定義を含むファイルへの絶対パスです。このファイルには、行ごとに等号で区切られたキーと値のペアがあります。例: キー=値", "c_cpp.debuggers.additionalSOLibSearchPath.description": ".so ファイルの検索に使用する、セミコロンで区切られたディレクトリの一覧です。例: \"c:\\dir1;c:\\dir2\"。", "c_cpp.debuggers.MIMode.description": "MIDebugEngine が接続するコンソール デバッガーを示します。許可されている値は \"gdb\" \"lldb\" です。", diff --git a/Extension/i18n/jpn/src/main.i18n.json b/Extension/i18n/jpn/src/main.i18n.json index 23f99c2acb..b3abf9eba2 100644 --- a/Extension/i18n/jpn/src/main.i18n.json +++ b/Extension/i18n/jpn/src/main.i18n.json @@ -5,9 +5,8 @@ // Do not edit this file. It is machine generated. { "architecture.not.supported": "アーキテクチャ {0} はサポートされていません。", - "alpine.containers.not.supported": "Alpine コンテナーはサポートされていません。", + "apline.containers.not.supported": "Alpine コンテナーはサポートされていません。", "download.button": "ダウンロード ページへ移動", - "native.binaries.mismatch.osx": "MacOS Intel 版の拡張機能がインストールされました。Apple Silicon Mac を使用しているため、拡張機能の Apple Silicon バージョンをインストールすることをお勧めします。", "native.binaries.not.supported": "この {0} {1} バージョンの拡張機能は、お使いの OS と互換性がありません。拡張機能の \"{2}\" バージョンをダウンロードしてインストールしてください。", "extension.installation.failed": "C/C++ の拡張機能を正常にインストールできませんでした。正常に機能させるには、C/C++ 言語機能の拡張機能を修復または再インストールする必要があります。", "remove.extension": "修復の試行", diff --git a/Extension/i18n/jpn/src/packageManager.i18n.json b/Extension/i18n/jpn/src/packageManager.i18n.json index a36dd5fc57..35703074f2 100644 --- a/Extension/i18n/jpn/src/packageManager.i18n.json +++ b/Extension/i18n/jpn/src/packageManager.i18n.json @@ -26,9 +26,9 @@ "zip.file.error": "Zip ファイルのエラー", "create.directory.error": "ディレクトリの作成中にエラーが発生しました", "zip.stream.error": "zip ストリームの読み取りでエラーが発生しました", - "read.stream.error": "ストリームの読み取りでエラーが発生しました", "unlink.error": "ファイル {0} のリンク解除中にエラーが発生しました", "rename.error": "ファイル {0} の名前変更でエラーが発生しました", + "read.stream.error": "ストリームの読み取りでエラーが発生しました", "write.stream.error": "ストリームの書き込みでエラーが発生しました", "file.already.exists": "警告: ファイル '{0}' は既に存在するため、更新されませんでした。" } \ No newline at end of file diff --git a/Extension/i18n/kor/package.i18n.json b/Extension/i18n/kor/package.i18n.json index 10395d5b00..d8f76fcd14 100644 --- a/Extension/i18n/kor/package.i18n.json +++ b/Extension/i18n/kor/package.i18n.json @@ -183,7 +183,7 @@ "c_cpp.debuggers.pipeTransport.pipeProgram.description": "실행할 정규화된 파이프 명령입니다.", "c_cpp.debuggers.pipeTransport.pipeArgs.description": "연결을 구성하기 위해 파이프 프로그램에 전달되는 명령줄 인수입니다.", "c_cpp.debuggers.pipeTransport.pipeEnv.description": "파이프 프로그램에 전달되는 환경 변수입니다.", - "c_cpp.debuggers.pipeTransport.quoteArgs.description": "pipeProgram의 개별 인수가 문자(예: 공백 또는 탭)를 포함하는 경우 따옴표를 붙여야 하나요? 'false'인 경우 디버거 명령은 더 이상 자동으로 따옴표를 붙이지 않습니다. \n기본값은 'true'입니다.", + "c_cpp.debuggers.pipeTransport.quoteArgs.description": "If the pipeProgram's individual arguments contain characters (such as spaces or tabs), should it be quoted? If 'false', the debugger command will no longer be automatically quoted. \r\nDefault is 'true'.", "c_cpp.debuggers.logging.description": "메시지 유형을 디버그 콘솔에 기록할지 여부를 결정하는 선택적 플래그입니다.", "c_cpp.debuggers.logging.exceptions.description": "예외 메시지를 디버그 콘솔에 기록할지 여부를 결정하는 선택적 플래그입니다. 기본값은 true입니다.", "c_cpp.debuggers.logging.moduleLoad.description": "모듈 로드 이벤트를 디버그 콘솔에 기록할지 여부를 결정하는 선택적 플래그입니다. 기본값은 true입니다.", @@ -208,7 +208,7 @@ "c_cpp.debuggers.cppdbg.visualizerFile.description": "이 프로세스를 디버그할 때 사용할 .natvis 파일입니다. 이 옵션은 GDB 자동 서식 지정과 호환되지 않습니다. 이 설정을 사용하는 경우 \"showDisplayString\"을 참조하세요.", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "이 프로세스를 디버그할 때 사용할 .natvis 파일입니다.", "c_cpp.debuggers.showDisplayString.description": "visualizerFile을 지정하면 showDisplayString은 표시 문자열을 사용하도록 설정합니다. 이 옵션을 켜면 디버그하는 동안 성능이 저하될 수 있습니다.", - "c_cpp.debuggers.environment.description": "프로그램의 환경에 추가할 환경 변수입니다. 예: [ { \"name\": \"squid\", \"value\": \"clam\" } ].", + "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", "c_cpp.debuggers.envFile.description": "환경 변수 정의를 포함하는 파일의 절대 경로입니다. 이 파일에는 줄마다 등호로 구분된 키 값 쌍이 있습니다(예: 키=값).", "c_cpp.debuggers.additionalSOLibSearchPath.description": ".so 파일 검색에 사용할 디렉터리의 세미콜론으로 구분된 목록입니다(예: \"c:\\dir1;c:\\dir2\").", "c_cpp.debuggers.MIMode.description": "MIDebugEngine이 연결할 콘솔 디버거를 나타냅니다. 허용되는 값은 \"gdb\" \"lldb\"입니다.", diff --git a/Extension/i18n/kor/src/main.i18n.json b/Extension/i18n/kor/src/main.i18n.json index 284979f1a1..72a4f84bae 100644 --- a/Extension/i18n/kor/src/main.i18n.json +++ b/Extension/i18n/kor/src/main.i18n.json @@ -5,9 +5,8 @@ // Do not edit this file. It is machine generated. { "architecture.not.supported": "{0} 아키텍처는 지원되지 않습니다. ", - "alpine.containers.not.supported": "Alpine 컨테이너는 지원되지 않습니다.", + "apline.containers.not.supported": "Alpine 컨테이너는 지원되지 않습니다.", "download.button": "다운로드 페이지로 이동", - "native.binaries.mismatch.osx": "macOS Intel 버전의 확장이 설치되었습니다. Apple Silicon Mac을 사용 중이므로 Apple Silicon 버전의 확장을 설치하는 것이 좋습니다.", "native.binaries.not.supported": "이 확장의 {0} {1} 버전은 OS와 호환되지 않습니다. 확장의 \"{2}\" 버전을 다운로드하여 설치하세요.", "extension.installation.failed": "C/C++ 확장을 설치하지 못했습니다. C/C++ 언어 기능이 제대로 작동하려면 확장을 복구하거나 다시 설치해야 합니다.", "remove.extension": "복구 시도", diff --git a/Extension/i18n/kor/src/packageManager.i18n.json b/Extension/i18n/kor/src/packageManager.i18n.json index bfe6806e67..b349515504 100644 --- a/Extension/i18n/kor/src/packageManager.i18n.json +++ b/Extension/i18n/kor/src/packageManager.i18n.json @@ -26,9 +26,9 @@ "zip.file.error": "Zip 파일 오류", "create.directory.error": "디렉터리를 만드는 동안 오류가 발생했습니다.", "zip.stream.error": "zip 스트림을 읽는 동안 오류가 발생했습니다.", - "read.stream.error": "읽기 스트림의 오류", "unlink.error": "{0} 파일의 연결을 해제하는 동안 오류가 발생했습니다.", "rename.error": "{0} 파일의 이름을 바꾸는 동안 오류가 발생했습니다.", + "read.stream.error": "읽기 스트림의 오류", "write.stream.error": "쓰기 스트림의 오류", "file.already.exists": "경고: '{0}' 파일이 이미 있으므로 업데이트되지 않았습니다." } \ No newline at end of file diff --git a/Extension/i18n/plk/package.i18n.json b/Extension/i18n/plk/package.i18n.json index 60a613d9c3..8233efae2a 100644 --- a/Extension/i18n/plk/package.i18n.json +++ b/Extension/i18n/plk/package.i18n.json @@ -183,7 +183,7 @@ "c_cpp.debuggers.pipeTransport.pipeProgram.description": "Polecenie w pełni kwalifikowanego potoku do wykonania.", "c_cpp.debuggers.pipeTransport.pipeArgs.description": "Argumenty wiersza polecenia przekazywane do programu potoku w celu skonfigurowania połączenia.", "c_cpp.debuggers.pipeTransport.pipeEnv.description": "Zmienne środowiskowe przekazywane do programu potoku.", - "c_cpp.debuggers.pipeTransport.quoteArgs.description": "Jeśli poszczególne argumenty elementu pipeProgram zawierają znaki (takie jak spacje lub tabulatory), czy mają być umieszczane w cudzysłowach? W przypadku wartości „false” polecenie debugera nie będzie już automatycznie umieszczane w cudzysłowach. \nWartość domyślna to „true”.", + "c_cpp.debuggers.pipeTransport.quoteArgs.description": "If the pipeProgram's individual arguments contain characters (such as spaces or tabs), should it be quoted? If 'false', the debugger command will no longer be automatically quoted. \r\nDefault is 'true'.", "c_cpp.debuggers.logging.description": "Opcjonalne flagi określające, które typy komunikatów powinny być rejestrowane w konsoli debugowania.", "c_cpp.debuggers.logging.exceptions.description": "Opcjonalna flaga określająca, czy komunikaty o wyjątkach powinny być rejestrowane w konsoli debugowania. Wartość domyślna to false.", "c_cpp.debuggers.logging.moduleLoad.description": "Opcjonalna flaga określająca, czy zdarzenia ładowania modułów powinny być rejestrowane w konsoli debugowania. Wartość domyślna to false.", @@ -208,7 +208,7 @@ "c_cpp.debuggers.cppdbg.visualizerFile.description": "Plik NATVIS, który ma być używany podczas debugowania tego procesu. Ta opcja jest niezgodna z formatowaniem kodu debugera GDB. W przypadku używania tego ustawienia zapoznaj się również z właściwością „showDisplayString”.", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "Plik NATVIS, który ma być używany podczas debugowania tego procesu.", "c_cpp.debuggers.showDisplayString.description": "Gdy element visualizerFile jest określony, opcja showDisplayString spowoduje włączenie ciągu wyświetlanego. Włączenie tej opcji może spowodować zmniejszenie wydajności podczas debugowania.", - "c_cpp.debuggers.environment.description": "Zmienne środowiskowe do dodania do środowiska programu. Przykład: [ { \"name\": \"squid\", \"value\": \"clam\" } ].", + "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", "c_cpp.debuggers.envFile.description": "Ścieżka bezwzględna do pliku zawierającego definicje zmiennych środowiskowych. Ten plik w każdym wierszu zawiera parę klucz-wartość oddzieloną znakiem równości. Przykład: KLUCZ=WARTOŚĆ", "c_cpp.debuggers.additionalSOLibSearchPath.description": "Rozdzielana średnikami lista katalogów, w których mają być wyszukiwanie pliki SO. Przykład: „c:\\dir1;c:\\dir2”.", "c_cpp.debuggers.MIMode.description": "Wskazuje debuger konsoli, z którym połączy się aparat MIDebugEngine. Dozwolone wartości to „gdb” i „lldb”.", diff --git a/Extension/i18n/plk/src/main.i18n.json b/Extension/i18n/plk/src/main.i18n.json index 3b8d650932..5899c8bf45 100644 --- a/Extension/i18n/plk/src/main.i18n.json +++ b/Extension/i18n/plk/src/main.i18n.json @@ -5,9 +5,8 @@ // Do not edit this file. It is machine generated. { "architecture.not.supported": "Architektura {0} nie jest obsługiwana.", - "alpine.containers.not.supported": "Kontenery Alpine nie są obsługiwane.", + "apline.containers.not.supported": "Kontenery Alpine nie są obsługiwane.", "download.button": "Przejdź do strony pobierania", - "native.binaries.mismatch.osx": "Zainstalowano wersję rozszerzenia systemu macOS Intel. Zalecamy zainstalowanie wersji rozszerzania systemu Apple Silicon Mac, ponieważ używasz wersji systemu Apple Silicon Mac.", "native.binaries.not.supported": "Ta wersja rozszerzenia systemu {0} {1} jest niezgodna z Twoim systemem operacyjnym. Pobierz i zainstaluj wersję rozszerzenia „{2}”.", "extension.installation.failed": "Nie można pomyślnie zainstalować rozszerzenia języka C/C++. Aby umożliwić poprawne działanie, należy naprawić lub zainstalować ponownie rozszerzenie dla funkcji języka C/C++.", "remove.extension": "Spróbuj naprawić", diff --git a/Extension/i18n/plk/src/packageManager.i18n.json b/Extension/i18n/plk/src/packageManager.i18n.json index 3808617da0..5382bf56b1 100644 --- a/Extension/i18n/plk/src/packageManager.i18n.json +++ b/Extension/i18n/plk/src/packageManager.i18n.json @@ -26,9 +26,9 @@ "zip.file.error": "Błąd pliku ZIP", "create.directory.error": "Błąd tworzenia katalogu", "zip.stream.error": "Błąd odczytu strumienia ZIP", - "read.stream.error": "Błąd w strumieniu odczytu", "unlink.error": "Błąd podczas odłączania pliku {0}", "rename.error": "Błąd podczas zmieniania nazwy pliku {0}", + "read.stream.error": "Błąd w strumieniu odczytu", "write.stream.error": "Błąd w strumieniu zapisu", "file.already.exists": "Ostrzeżenie: plik „{0}” już istnieje i nie został zaktualizowany." } \ No newline at end of file diff --git a/Extension/i18n/ptb/package.i18n.json b/Extension/i18n/ptb/package.i18n.json index 89d779e791..ee2b4ef97e 100644 --- a/Extension/i18n/ptb/package.i18n.json +++ b/Extension/i18n/ptb/package.i18n.json @@ -183,7 +183,7 @@ "c_cpp.debuggers.pipeTransport.pipeProgram.description": "O comando do pipe totalmente qualificado para executar.", "c_cpp.debuggers.pipeTransport.pipeArgs.description": "Argumentos da linha de comando passados para o programa do pipe para configurar a conexão.", "c_cpp.debuggers.pipeTransport.pipeEnv.description": "Variáveis de ambiente passadas para o programa do pipe.", - "c_cpp.debuggers.pipeTransport.quoteArgs.description": "Se os argumentos individuais do pipeProgram contiverem caracteres (como espaços ou tabulações), eles deverão ser colocados entre aspas? Se 'false', o comando debugger não será mais colocado entre aspas automaticamente. \nO padrão é 'true'.", + "c_cpp.debuggers.pipeTransport.quoteArgs.description": "If the pipeProgram's individual arguments contain characters (such as spaces or tabs), should it be quoted? If 'false', the debugger command will no longer be automatically quoted. \r\nDefault is 'true'.", "c_cpp.debuggers.logging.description": "Sinalizadores opcionais para determinar quais tipos de mensagens devem ser registrados no Console de Depuração.", "c_cpp.debuggers.logging.exceptions.description": "Sinalizador opcional para determinar se as mensagens de exceção devem ser registradas no Console de Depuração. Usa true como padrão.", "c_cpp.debuggers.logging.moduleLoad.description": "Sinalizador opcional para determinar se os eventos de carregamento do módulo devem ser registrados no Console de Depuração. Usa true como padrão.", @@ -208,7 +208,7 @@ "c_cpp.debuggers.cppdbg.visualizerFile.description": "arquivo .natvis a ser usado durante a depuração deste processo. Esta opção não é compatível com a reformatação automática GDB. Além disso, confira \"showDisplayString\" se estiver usando esta configuração.", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "arquivo .natvis a ser usado durante a depuração deste processo.", "c_cpp.debuggers.showDisplayString.description": "Quando um visualizerFile é especificado, showDisplayString habilita a cadeia de caracteres de exibição. Ativar essa opção pode causar um desempenho mais lento durante a depuração.", - "c_cpp.debuggers.environment.description": "Variáveis de ambiente para adicionar ao ambiente para o programa. Por exemplo: [ { \"name\": \"squid\", \"value\": \"clam\" } ].", + "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", "c_cpp.debuggers.envFile.description": "Caminho absoluto para um arquivo que contém as definições de variável de ambiente. Este arquivo tem pares chave-valor separados por um sinal de igual por linha. Por exemplo, CHAVE=VALOR", "c_cpp.debuggers.additionalSOLibSearchPath.description": "Lista separada por ponto e vírgula de diretórios a serem usados para pesquisar arquivos .so. Exemplo: \"c:\\dir1;c:\\dir2\".", "c_cpp.debuggers.MIMode.description": "Indica o depurador de console ao qual o MIDebugEngine será conectado. Os valores permitidos são \"gdb\" \"lldb\".", diff --git a/Extension/i18n/ptb/src/main.i18n.json b/Extension/i18n/ptb/src/main.i18n.json index 5c324bc188..b8e6885761 100644 --- a/Extension/i18n/ptb/src/main.i18n.json +++ b/Extension/i18n/ptb/src/main.i18n.json @@ -5,9 +5,8 @@ // Do not edit this file. It is machine generated. { "architecture.not.supported": "Não há suporte para a arquitetura {0}. ", - "alpine.containers.not.supported": "Não há suporte para os contêineres do Alpine.", + "apline.containers.not.supported": "Não há suporte para os contêineres do Alpine.", "download.button": "Ir para a Página de Download", - "native.binaries.mismatch.osx": "A versão macOS Intel da extensão foi instalada. Como você está em um Apple Silicon Mac, recomendamos instalar a versão Apple Silicon da extensão.", "native.binaries.not.supported": "Esta versão {0} {1} da extensão é incompatível com seu sistema operacional. Baixe e instale a versão \"{2}\" da extensão.", "extension.installation.failed": "A extensão C/C++ não foi instalada com êxito. Será necessário reparar ou reinstalar a extensão dos recursos da linguagem C/C++ para que ela funcione corretamente.", "remove.extension": "Tentar Reparar", diff --git a/Extension/i18n/ptb/src/packageManager.i18n.json b/Extension/i18n/ptb/src/packageManager.i18n.json index 3eb6afc35d..dc04f746e1 100644 --- a/Extension/i18n/ptb/src/packageManager.i18n.json +++ b/Extension/i18n/ptb/src/packageManager.i18n.json @@ -26,9 +26,9 @@ "zip.file.error": "Erro no arquivo zip", "create.directory.error": "Erro ao criar o diretório", "zip.stream.error": "Erro ao ler o fluxo zip", - "read.stream.error": "Erro no fluxo de leitura", "unlink.error": "Erro ao desvincular o arquivo {0}", "rename.error": "Erro ao renomear o arquivo {0}", + "read.stream.error": "Erro no fluxo de leitura", "write.stream.error": "Erro no fluxo de gravação", "file.already.exists": "Aviso: o arquivo '{0}' já existe e não foi atualizado." } \ No newline at end of file diff --git a/Extension/i18n/rus/package.i18n.json b/Extension/i18n/rus/package.i18n.json index 916517dcfa..90ed56287a 100644 --- a/Extension/i18n/rus/package.i18n.json +++ b/Extension/i18n/rus/package.i18n.json @@ -183,7 +183,7 @@ "c_cpp.debuggers.pipeTransport.pipeProgram.description": "Полная команда канала для выполнения.", "c_cpp.debuggers.pipeTransport.pipeArgs.description": "Аргументы командной строки, переданные в программу канала для настройки подключения.", "c_cpp.debuggers.pipeTransport.pipeEnv.description": "Переменные среды, переданные в программу канала.", - "c_cpp.debuggers.pipeTransport.quoteArgs.description": "Определяет, должны ли быть заключены в кавычки отдельные аргументы pipeProgram, если эти аргументы содержат символы (такие как пробелы или символы табуляции). Если задано значение \"false\", команда отладчика больше не будет автоматически заключаться в кавычки. \nЗначение по умолчанию — \"true\".", + "c_cpp.debuggers.pipeTransport.quoteArgs.description": "If the pipeProgram's individual arguments contain characters (such as spaces or tabs), should it be quoted? If 'false', the debugger command will no longer be automatically quoted. \r\nDefault is 'true'.", "c_cpp.debuggers.logging.description": "Необязательные флаги для определения типов сообщений, регистрируемых в консоли отладки.", "c_cpp.debuggers.logging.exceptions.description": "Необязательный флаг, определяющий, следует ли регистрировать сообщения об исключениях в консоли отладки. По умолчанию принимает значение true.", "c_cpp.debuggers.logging.moduleLoad.description": "Необязательный флаг, определяющий, следует ли регистрировать события загрузки модулей в консоли отладки. По умолчанию принимает значение true.", @@ -208,7 +208,7 @@ "c_cpp.debuggers.cppdbg.visualizerFile.description": "Файл NATVIS, используемый при отладке этого процесса. Этот параметр несовместим с автоматическим форматированием GDB. Если этот параметр используется, см. также описание \"showDisplayString\".", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "Файл NATVIS, используемый при отладке этого процесса.", "c_cpp.debuggers.showDisplayString.description": "Если указано значение visualizerFile, showDisplayString включит отображаемую строку. Включение этого параметра может привести к снижению производительности во время отладки.", - "c_cpp.debuggers.environment.description": "Переменные среды для добавления в среду для программы. Пример: [ { \"name\": \"squid\", \"value\": \"clam\" } ].", + "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", "c_cpp.debuggers.envFile.description": "Абсолютный путь к файлу, содержащему определения переменных среды. Этот файл содержит пары \"ключ-значение\", разделенные знаком равенства и разнесенные по строкам. Например, \"ключ=значение\"", "c_cpp.debuggers.additionalSOLibSearchPath.description": "Список каталогов, разделенных точкой с запятой, который следует использовать для поиска файлов SO. Пример: \"c:\\каталог_1;c:\\каталог_2\".", "c_cpp.debuggers.MIMode.description": "Указывает отладчик консоли, к которому подключится MIDebugEngine. Допустимые значения: \"gdb\" \"lldb\".", diff --git a/Extension/i18n/rus/src/main.i18n.json b/Extension/i18n/rus/src/main.i18n.json index 1562c30c2c..f082258183 100644 --- a/Extension/i18n/rus/src/main.i18n.json +++ b/Extension/i18n/rus/src/main.i18n.json @@ -5,9 +5,8 @@ // Do not edit this file. It is machine generated. { "architecture.not.supported": "Архитектура {0} не поддерживается. ", - "alpine.containers.not.supported": "Контейнеры Alpine не поддерживаются.", + "apline.containers.not.supported": "Контейнеры Alpine не поддерживаются.", "download.button": "Перейти к странице скачивания", - "native.binaries.mismatch.osx": "Установлена версия расширения для macOS Intel. Так как вы используете компьютер Apple Silicon Mac, рекомендуется установить версию расширения для Apple Silicon.", "native.binaries.not.supported": "Версия расширения для {0} {1} несовместима с вашей ОС. Скачайте и установите версию расширения \"{2}\".", "extension.installation.failed": "Установить расширение C/C++ не удалось. Исправьте или переустановите расширение функций языка C/C++ для корректной работы.", "remove.extension": "Попытка исправления", diff --git a/Extension/i18n/rus/src/packageManager.i18n.json b/Extension/i18n/rus/src/packageManager.i18n.json index 6bb6fed11c..29f40c7c4c 100644 --- a/Extension/i18n/rus/src/packageManager.i18n.json +++ b/Extension/i18n/rus/src/packageManager.i18n.json @@ -26,9 +26,9 @@ "zip.file.error": "Ошибка в ZIP-файле", "create.directory.error": "Ошибка при создании каталога", "zip.stream.error": "Ошибка при чтении потока zip", - "read.stream.error": "Ошибка в потоке чтения", "unlink.error": "Ошибка при удалении связи файла {0}", "rename.error": "Ошибка при переименовании файла {0}", + "read.stream.error": "Ошибка в потоке чтения", "write.stream.error": "Ошибка в потоке записи", "file.already.exists": "Предупреждение: файл \"{0}\" уже существует и не был обновлен." } \ No newline at end of file diff --git a/Extension/i18n/trk/package.i18n.json b/Extension/i18n/trk/package.i18n.json index a985c618c3..5babbfcaf2 100644 --- a/Extension/i18n/trk/package.i18n.json +++ b/Extension/i18n/trk/package.i18n.json @@ -183,7 +183,7 @@ "c_cpp.debuggers.pipeTransport.pipeProgram.description": "Çalıştırılacak tam kanal komutu.", "c_cpp.debuggers.pipeTransport.pipeArgs.description": "Bağlantıyı yapılandırmak için kanal programına geçirilen komut satırı bağımsız değişkenleri.", "c_cpp.debuggers.pipeTransport.pipeEnv.description": "Kanal programına geçirilen ortam değişkenleri.", - "c_cpp.debuggers.pipeTransport.quoteArgs.description": "pipeProgram'a ait tek tek bağımsız değişkenler, boşluk veya sekme gibi karakterler içeriyorsa bunlar tırnak içine alınmalı mı? 'False' olarak ayarlanırsa, hata ayıklayıcısı komutu otomatik olarak tırnak içine alınmaz. \nVarsayılan değer: 'true'.", + "c_cpp.debuggers.pipeTransport.quoteArgs.description": "If the pipeProgram's individual arguments contain characters (such as spaces or tabs), should it be quoted? If 'false', the debugger command will no longer be automatically quoted. \r\nDefault is 'true'.", "c_cpp.debuggers.logging.description": "Hata Ayıklama Konsoluna ne tür iletilerin kaydedilmesi gerektiğini belirleyen isteğe bağlı bayraklar.", "c_cpp.debuggers.logging.exceptions.description": "Özel durum iletilerinin Hata Ayıklama Konsoluna kaydedilmesi gerekip gerekmediğini belirleyen isteğe bağlı bayrak. Varsayılan olarak true değerini alır.", "c_cpp.debuggers.logging.moduleLoad.description": "Modül yükleme olaylarının Hata Ayıklama Konsoluna kaydedilmesi gerekip gerekmediğini belirleyen isteğe bağlı bayrak. Varsayılan olarak true değerini alır.", @@ -208,7 +208,7 @@ "c_cpp.debuggers.cppdbg.visualizerFile.description": "Bu işlemde hata ayıklanırken kullanılacak .natvis dosyası. Bu seçenek, GDB düzgün yazdırma ile uyumlu değil. Lütfen bu ayar kullanılıyorsa ayrıca bkz: \"showDisplayString\".", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "Bu işlemde hata ayıklanırken kullanılacak .natvis dosyası.", "c_cpp.debuggers.showDisplayString.description": "Bir visualizerFile belirtildiğinde showDisplayString, görünen dizeyi etkinleştirir. Bu seçeneğin etkinleştirilmesi hata ayıklama sırasında daha düşük performansa neden olabilir.", - "c_cpp.debuggers.environment.description": "Program ortamına eklenecek ortam değişkenleri. Örnek: [ { \"name\": \"squid\", \"value\": \"clam\" } ].", + "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", "c_cpp.debuggers.envFile.description": "Ortam değişkeni tanımlarını içeren bir dosyanın mutlak yolu. Bu dosyada, satır başına eşittir işaretiyle ayrılmış anahtar değer çiftleri bulunur. Ör. ANAHTAR=DEĞER", "c_cpp.debuggers.additionalSOLibSearchPath.description": ".so dosyalarını aramak için kullanılacak dizinlerin noktalı virgülle ayrılmış listesi. Örnek: \"c:\\dizin1;c:\\dizin2\".", "c_cpp.debuggers.MIMode.description": "MIDebugEngine'in bağlanacağı konsol hata ayıklayıcısını belirtir. İzin verilen değerler: \"gdb\" \"lldb\".", diff --git a/Extension/i18n/trk/src/main.i18n.json b/Extension/i18n/trk/src/main.i18n.json index 92c1059296..1e78f2d9ec 100644 --- a/Extension/i18n/trk/src/main.i18n.json +++ b/Extension/i18n/trk/src/main.i18n.json @@ -5,9 +5,8 @@ // Do not edit this file. It is machine generated. { "architecture.not.supported": "{0} mimarisi desteklemiyor.", - "alpine.containers.not.supported": "Alpine kapsayıcıları desteklenmiyor.", + "apline.containers.not.supported": "Alpine kapsayıcıları desteklenmiyor.", "download.button": "İndirmeler Sayfasına Git", - "native.binaries.mismatch.osx": "Uzantının macOS Intel sürümü yüklendi. Bir Apple Silicon Mac bilgisayar kullandığınızdan, uzantının Apple Silicon sürümünü yüklemenizi öneririz.", "native.binaries.not.supported": "Uzantının bu {0} {1} sürümü, işletim sisteminizle uyumlu değil. Lütfen uzantının \"{2}\" sürümünü indirip yükleyin.", "extension.installation.failed": "C/C++ uzantısı başarıyla yüklenemedi. C/C++ dil özelliklerinin düzgün çalışması için uzantıyı onarmanız veya yeniden yüklemeniz gerekir.", "remove.extension": "Onarmayı Dene", diff --git a/Extension/i18n/trk/src/packageManager.i18n.json b/Extension/i18n/trk/src/packageManager.i18n.json index 5e61061548..0a15fe3f47 100644 --- a/Extension/i18n/trk/src/packageManager.i18n.json +++ b/Extension/i18n/trk/src/packageManager.i18n.json @@ -26,9 +26,9 @@ "zip.file.error": "Zip dosyası hatası", "create.directory.error": "Dizin oluşturulurken hata oluştu", "zip.stream.error": "Zip akışı okuma hatası", - "read.stream.error": "Akış okunurken hata", "unlink.error": "{0} dosyasının bağlantısı kaldırılırken hata oluştu", "rename.error": "{0} dosyası yeniden adlandırılırken hata oluştu", + "read.stream.error": "Akış okunurken hata", "write.stream.error": "Akışa yazılırken hata", "file.already.exists": "Uyarı: '{0}' dosyası zaten var ve güncelleştirilmedi." } \ No newline at end of file From 385c336ba729a6cf95edc5e13d1797a96e731b6c Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Wed, 5 May 2021 12:04:06 -0700 Subject: [PATCH 40/48] Update ESLint. (#7466) --- Extension/.eslintrc.js | 11 +- Extension/package.json | 12 +- Extension/src/LanguageServer/extension.ts | 12 +- Extension/yarn.lock | 827 ++++++++++++++++++---- 4 files changed, 702 insertions(+), 160 deletions(-) diff --git a/Extension/.eslintrc.js b/Extension/.eslintrc.js index 7e93872456..7ea41d4543 100644 --- a/Extension/.eslintrc.js +++ b/Extension/.eslintrc.js @@ -19,7 +19,14 @@ module.exports = { "rules": { "@typescript-eslint/adjacent-overload-signatures": "error", "@typescript-eslint/array-type": "error", - "@typescript-eslint/class-name-casing": "error", + "camelcase": "off", + "@typescript-eslint/naming-convention": [ + "error", + { + "selector": "typeLike", + "format": ["PascalCase"] + } + ], "@typescript-eslint/indent": "error", "@typescript-eslint/member-delimiter-style": [ "error", @@ -71,7 +78,7 @@ module.exports = { "no-fallthrough": "error", "no-invalid-this": "error", "no-irregular-whitespace": "error", - "no-multiple-empty-lines": ["error", { "max": 1, "maxEOF": 1, "maxBOF": 0}], + "no-multiple-empty-lines": ["error", { "max": 1, "maxEOF": 1, "maxBOF": 0 }], "no-new-wrappers": "error", "no-redeclare": "error", "no-return-await": "error", diff --git a/Extension/package.json b/Extension/package.json index c7ba6a96d5..7054cc8d32 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -2456,14 +2456,14 @@ "@types/vscode": "1.53.0", "@types/which": "^1.3.2", "@types/yauzl": "^2.9.1", - "@typescript-eslint/eslint-plugin": "^2.19.2", - "@typescript-eslint/eslint-plugin-tslint": "^2.19.2", - "@typescript-eslint/parser": "^2.19.2", + "@typescript-eslint/eslint-plugin": "^4.22.1", + "@typescript-eslint/eslint-plugin-tslint": "^4.22.1", + "@typescript-eslint/parser": "^4.22.1", "async-child-process": "^1.1.1", "await-notify": "^1.0.1", - "eslint": "^6.8.0", - "eslint-plugin-import": "^2.20.1", - "eslint-plugin-jsdoc": "^21.0.0", + "eslint": "^7.25.0", + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-jsdoc": "^33.1.0", "event-stream": "^4.0.1", "fs-extra": "^8.1.0", "glob": "^7.1.6", diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index 28cef26fee..a1c05fe381 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -55,13 +55,13 @@ let taskProvider: vscode.Disposable; let codeActionProvider: vscode.Disposable; export const intelliSenseDisabledError: string = "Do not activate the extension when IntelliSense is disabled."; -type vcpkgDatabase = { [key: string]: string[] }; // Stored as
-> [] -let vcpkgDbPromise: Promise; -function initVcpkgDatabase(): Promise { +type VcpkgDatabase = { [key: string]: string[] }; // Stored as
-> [] +let vcpkgDbPromise: Promise; +function initVcpkgDatabase(): Promise { return new Promise((resolve, reject) => { - yauzl.open(util.getExtensionFilePath('VCPkgHeadersDatabase.zip'), { lazyEntries: true }, (err? : Error, zipfile?: yauzl.ZipFile) => { + yauzl.open(util.getExtensionFilePath('VCPkgHeadersDatabase.zip'), { lazyEntries: true }, (err?: Error, zipfile?: yauzl.ZipFile) => { // Resolves with an empty database instead of rejecting on failure. - const database: vcpkgDatabase = {}; + const database: VcpkgDatabase = {}; if (err || !zipfile) { resolve(database); return; @@ -133,7 +133,7 @@ async function lookupIncludeInVcpkg(document: vscode.TextDocument, line: number) const missingHeader: string = matches.groups['includeFile'].replace(/\//g, '\\'); let portsWithHeader: string[] | undefined; - const vcpkgDb: vcpkgDatabase = await vcpkgDbPromise; + const vcpkgDb: VcpkgDatabase = await vcpkgDbPromise; if (vcpkgDb) { portsWithHeader = vcpkgDb[missingHeader]; } diff --git a/Extension/yarn.lock b/Extension/yarn.lock index bcd14c037e..3c716ca0ce 100644 --- a/Extension/yarn.lock +++ b/Extension/yarn.lock @@ -2,6 +2,13 @@ # yarn lockfile v1 +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + "@babel/code-frame@^7.0.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" @@ -9,6 +16,20 @@ dependencies: "@babel/highlight" "^7.8.3" +"@babel/helper-validator-identifier@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288" + integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A== + +"@babel/highlight@^7.10.4": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.0.tgz#3197e375711ef6bf834e67d0daec88e4f46113cf" + integrity sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg== + dependencies: + "@babel/helper-validator-identifier" "^7.14.0" + chalk "^2.0.0" + js-tokens "^4.0.0" + "@babel/highlight@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" @@ -23,6 +44,30 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz#8f03a22a04de437254e8ce8cc84ba39689288752" integrity sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg== +"@es-joy/jsdoccomment@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.4.3.tgz#c66b42aa66d2e0718f77fccc8d9061cf0b1092ac" + integrity sha512-t0JWZfQiG+Qkr6+tl05dlGcgE/MMPqs7QfNlFkTsbpcCu2Zfukcan/fIiHKTc0iOs4Yh3cnfklMayJnlmKaOwQ== + dependencies: + comment-parser "^1.1.5" + esquery "^1.4.0" + jsdoctypeparser "^9.0.0" + +"@eslint/eslintrc@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.0.tgz#99cc0a0584d72f1df38b900fb062ba995f395547" + integrity sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + "@gulp-sourcemaps/identity-map@1.X": version "1.0.2" resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/identity-map/-/identity-map-1.0.2.tgz#1e6fe5d8027b1f285dc0d31762f566bccd73d5a9" @@ -42,6 +87,27 @@ normalize-path "^2.0.1" through2 "^2.0.3" +"@nodelib/fs.scandir@2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" + integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== + dependencies: + "@nodelib/fs.stat" "2.0.4" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" + integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" + integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== + dependencies: + "@nodelib/fs.scandir" "2.1.4" + fastq "^1.6.0" + "@octokit/auth-token@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.0.tgz#b64178975218b99e4dfe948253f0673cbbb59d9f" @@ -138,11 +204,6 @@ "@types/eslint" "*" "@types/estree" "*" -"@types/eslint-visitor-keys@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" - integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== - "@types/eslint@*": version "7.2.7" resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.7.tgz#f7ef1cf0dceab0ae6f9a976a0a9af14ab1baca26" @@ -171,6 +232,11 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + "@types/minimatch@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" @@ -235,57 +301,84 @@ dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin-tslint@^2.19.2": - version "2.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin-tslint/-/eslint-plugin-tslint-2.20.0.tgz#5e0a2cabec226081b615067be5d4a1477ba1b4c8" - integrity sha512-nvQqHXNtTg56eeLgl8BbTqw0+PILjgtthB2MEJ279NqfSMjTzUr7dkt/JIuGbxi9netT7u3iQaTE4nuGbGTTpQ== +"@typescript-eslint/eslint-plugin-tslint@^4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin-tslint/-/eslint-plugin-tslint-4.22.1.tgz#5b66c35047f9c395a6d56d49a5666af588f6c270" + integrity sha512-pfidpEzYYvZpcbQDzC55yfwihEREk831rFC50i5f+4GMMvpFvwA5BmGjJL2+djCFHfowD9Y1MRD0hC26oU72Ew== dependencies: - "@typescript-eslint/experimental-utils" "2.20.0" + "@typescript-eslint/experimental-utils" "4.22.1" lodash "^4.17.15" -"@typescript-eslint/eslint-plugin@^2.19.2": - version "2.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.20.0.tgz#a522d0e1e4898f7c9c6a8e1ed3579b60867693fa" - integrity sha512-cimIdVDV3MakiGJqMXw51Xci6oEDEoPkvh8ggJe2IIzcc0fYqAxOXN6Vbeanahz6dLZq64W+40iUEc9g32FLDQ== +"@typescript-eslint/eslint-plugin@^4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.22.1.tgz#6bcdbaa4548553ab861b4e5f34936ead1349a543" + integrity sha512-kVTAghWDDhsvQ602tHBc6WmQkdaYbkcTwZu+7l24jtJiYvm9l+/y/b2BZANEezxPDiX5MK2ZecE+9BFi/YJryw== dependencies: - "@typescript-eslint/experimental-utils" "2.20.0" - eslint-utils "^1.4.3" + "@typescript-eslint/experimental-utils" "4.22.1" + "@typescript-eslint/scope-manager" "4.22.1" + debug "^4.1.1" functional-red-black-tree "^1.0.1" + lodash "^4.17.15" regexpp "^3.0.0" + semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@2.20.0": - version "2.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.20.0.tgz#3b6fa5a6b8885f126d5a4280e0d44f0f41e73e32" - integrity sha512-fEBy9xYrwG9hfBLFEwGW2lKwDRTmYzH3DwTmYbT+SMycmxAoPl0eGretnBFj/s+NfYBG63w/5c3lsvqqz5mYag== +"@typescript-eslint/experimental-utils@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.22.1.tgz#3938a5c89b27dc9a39b5de63a62ab1623ab27497" + integrity sha512-svYlHecSMCQGDO2qN1v477ax/IDQwWhc7PRBiwAdAMJE7GXk5stF4Z9R/8wbRkuX/5e9dHqbIWxjeOjckK3wLQ== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.20.0" + "@typescript-eslint/scope-manager" "4.22.1" + "@typescript-eslint/types" "4.22.1" + "@typescript-eslint/typescript-estree" "4.22.1" eslint-scope "^5.0.0" + eslint-utils "^2.0.0" -"@typescript-eslint/parser@^2.19.2": - version "2.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.20.0.tgz#608e5bb06ba98a415b64ace994c79ab20f9772a9" - integrity sha512-o8qsKaosLh2qhMZiHNtaHKTHyCHc3Triq6aMnwnWj7budm3xAY9owSZzV1uon5T9cWmJRJGzTFa90aex4m77Lw== +"@typescript-eslint/parser@^4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.22.1.tgz#a95bda0fd01d994a15fc3e99dc984294f25c19cc" + integrity sha512-l+sUJFInWhuMxA6rtirzjooh8cM/AATAe3amvIkqKFeMzkn85V+eLzb1RyuXkHak4dLfYzOmF6DXPyflJvjQnw== dependencies: - "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.20.0" - "@typescript-eslint/typescript-estree" "2.20.0" - eslint-visitor-keys "^1.1.0" + "@typescript-eslint/scope-manager" "4.22.1" + "@typescript-eslint/types" "4.22.1" + "@typescript-eslint/typescript-estree" "4.22.1" + debug "^4.1.1" + +"@typescript-eslint/scope-manager@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.22.1.tgz#5bb357f94f9cd8b94e6be43dd637eb73b8f355b4" + integrity sha512-d5bAiPBiessSmNi8Amq/RuLslvcumxLmyhf1/Xa9IuaoFJ0YtshlJKxhlbY7l2JdEk3wS0EnmnfeJWSvADOe0g== + dependencies: + "@typescript-eslint/types" "4.22.1" + "@typescript-eslint/visitor-keys" "4.22.1" -"@typescript-eslint/typescript-estree@2.20.0": - version "2.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.20.0.tgz#90a0f5598826b35b966ca83483b1a621b1a4d0c9" - integrity sha512-WlFk8QtI8pPaE7JGQGxU7nGcnk1ccKAJkhbVookv94ZcAef3m6oCE/jEDL6dGte3JcD7reKrA0o55XhBRiVT3A== +"@typescript-eslint/types@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.22.1.tgz#bf99c6cec0b4a23d53a61894816927f2adad856a" + integrity sha512-2HTkbkdAeI3OOcWbqA8hWf/7z9c6gkmnWNGz0dKSLYLWywUlkOAQ2XcjhlKLj5xBFDf8FgAOF5aQbnLRvgNbCw== + +"@typescript-eslint/typescript-estree@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.22.1.tgz#dca379eead8cdfd4edc04805e83af6d148c164f9" + integrity sha512-p3We0pAPacT+onSGM+sPR+M9CblVqdA9F1JEdIqRVlxK5Qth4ochXQgIyb9daBomyQKAXbygxp1aXQRV0GC79A== dependencies: + "@typescript-eslint/types" "4.22.1" + "@typescript-eslint/visitor-keys" "4.22.1" debug "^4.1.1" - eslint-visitor-keys "^1.1.0" - glob "^7.1.6" + globby "^11.0.1" is-glob "^4.0.1" - lodash "^4.17.15" - semver "^6.3.0" + semver "^7.3.2" tsutils "^3.17.1" +"@typescript-eslint/visitor-keys@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.22.1.tgz#6045ae25a11662c671f90b3a403d682dfca0b7a6" + integrity sha512-WPkOrIRm+WCLZxXQHCi+WG8T2MMTUFR70rWjdWYddLT7cEfb2P4a3O/J2U1FBVsSFTocXLCoXWY6MZGejeStvQ== + dependencies: + "@typescript-eslint/types" "4.22.1" + eslint-visitor-keys "^2.0.0" + "@ungap/promise-all-settled@1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" @@ -444,6 +537,11 @@ acorn-jsx@^5.1.0: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw== +acorn-jsx@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== + acorn@5.X, acorn@^5.0.3: version "5.7.4" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" @@ -454,6 +552,11 @@ acorn@^7.1.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== +acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + acorn@^8.0.4: version "8.1.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.1.0.tgz#52311fd7037ae119cbb134309e901aa46295b3fe" @@ -481,7 +584,7 @@ ajv@^6.10.0, ajv@^6.10.2: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^6.12.5: +ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -491,6 +594,16 @@ ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^8.0.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.2.0.tgz#c89d3380a784ce81b2085f48811c4c101df4c602" + integrity sha512-WSNGFuyWd//XO8n/m/EaOlNLtO0yL8EXT/74LqT4khdhpZjP7lkj/kT5uwRmGitKEVp/Oj7ZUHeGfPtgHhQ5CA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + ansi-colors@4.1.1, ansi-colors@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" @@ -650,13 +763,15 @@ array-each@^1.0.0, array-each@^1.0.1: resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= -array-includes@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" - integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== +array-includes@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" + integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0" + es-abstract "^1.18.0-next.2" + get-intrinsic "^1.1.1" is-string "^1.0.5" array-initial@^1.0.0: @@ -698,13 +813,14 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -array.prototype.flat@^1.2.1: - version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" - integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== +array.prototype.flat@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" + integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + es-abstract "^1.18.0-next.1" arrify@^2.0.1: version "2.0.1" @@ -721,6 +837,11 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + async-child-process@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/async-child-process/-/async-child-process-1.1.1.tgz#27d0a598b5738707f9898c048bd231340583747b" @@ -940,6 +1061,14 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -1195,10 +1324,10 @@ comment-json@^3.0.3: has-own-prop "^2.0.0" repeat-string "^1.6.1" -comment-parser@^0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-0.7.2.tgz#baf6d99b42038678b81096f15b630d18142f4b8a" - integrity sha512-4Rjb1FnxtOcv9qsfuaNuVsmmVn4ooVoBHzYfyKteiXwIU84PClyGA5jASoFMwPV93+FPh9spwueXauxFJZkGAg== +comment-parser@1.1.5, comment-parser@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.1.5.tgz#453627ef8f67dbcec44e79a9bd5baa37f0bce9b2" + integrity sha512-RePCE4leIhBlmrqiYTvaqEeGYg7qpSl4etaIabKtdOQVi+mSTIBBklGUwIr79GXYnl3LpMwmDw4KeR2stNc6FA== component-emitter@^1.2.1: version "1.3.0" @@ -1274,7 +1403,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.3: +cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -1329,7 +1458,7 @@ debug@3.X, debug@^3.1.0: dependencies: ms "^2.1.1" -debug@4.3.1: +debug@4.3.1, debug@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== @@ -1365,7 +1494,7 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= -deep-is@~0.1.3: +deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= @@ -1448,6 +1577,13 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + doctrine@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" @@ -1547,7 +1683,7 @@ enhanced-resolve@^5.7.0: graceful-fs "^4.2.4" tapable "^2.2.0" -enquirer@^2.3.6: +enquirer@^2.3.5, enquirer@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -1573,22 +1709,27 @@ error-ex@^1.2.0: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.0, es-abstract@^1.17.0-next.1: - version "1.17.4" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184" - integrity sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ== +es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: + version "1.18.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" + integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== dependencies: + call-bind "^1.0.2" es-to-primitive "^1.2.1" function-bind "^1.1.1" + get-intrinsic "^1.1.1" has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.1.5" - is-regex "^1.0.5" - object-inspect "^1.7.0" + has-symbols "^1.0.2" + is-callable "^1.2.3" + is-negative-zero "^2.0.1" + is-regex "^1.1.2" + is-string "^1.0.5" + object-inspect "^1.9.0" object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimleft "^2.1.1" - string.prototype.trimright "^2.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.0" es-module-lexer@^0.4.0: version "0.4.1" @@ -1672,52 +1813,55 @@ escape-string-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== -eslint-import-resolver-node@^0.3.2: - version "0.3.3" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz#dbaa52b6b2816b50bc6711af75422de808e98404" - integrity sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg== +eslint-import-resolver-node@^0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" + integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== dependencies: debug "^2.6.9" resolve "^1.13.1" -eslint-module-utils@^2.4.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz#7878f7504824e1b857dd2505b59a8e5eda26a708" - integrity sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q== +eslint-module-utils@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" + integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== dependencies: debug "^2.6.9" pkg-dir "^2.0.0" -eslint-plugin-import@^2.20.1: - version "2.20.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz#802423196dcb11d9ce8435a5fc02a6d3b46939b3" - integrity sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw== +eslint-plugin-import@^2.22.1: + version "2.22.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" + integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== dependencies: - array-includes "^3.0.3" - array.prototype.flat "^1.2.1" + array-includes "^3.1.1" + array.prototype.flat "^1.2.3" contains-path "^0.1.0" debug "^2.6.9" doctrine "1.5.0" - eslint-import-resolver-node "^0.3.2" - eslint-module-utils "^2.4.1" + eslint-import-resolver-node "^0.3.4" + eslint-module-utils "^2.6.0" has "^1.0.3" minimatch "^3.0.4" - object.values "^1.1.0" + object.values "^1.1.1" read-pkg-up "^2.0.0" - resolve "^1.12.0" - -eslint-plugin-jsdoc@^21.0.0: - version "21.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-21.0.0.tgz#36bc215c5d22b320312a633dda6dfe81c34393af" - integrity sha512-CdLGe2oyw5YAX9rxq9bVz7H2PK+r8PVwdGuvYGMBstpbVD/66yUAgRFQRsJwAsRKLmReo58Lw1jFdNcxdOc4eg== - dependencies: - comment-parser "^0.7.2" - debug "^4.1.1" - jsdoctypeparser "^6.1.0" - lodash "^4.17.15" - regextras "^0.7.0" - semver "^6.3.0" - spdx-expression-parse "^3.0.0" + resolve "^1.17.0" + tsconfig-paths "^3.9.0" + +eslint-plugin-jsdoc@^33.1.0: + version "33.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-33.1.0.tgz#9aa52d0eb0126ea42528aa352265007dce320565" + integrity sha512-nyH1qAj5f4uDnDpg4aiAS65wJSfxfBDf0lIgNfxtew31z3VRaM8WsVmpe4UhI2u27oOD/ChRuye6KAzzuHn6Jw== + dependencies: + "@es-joy/jsdoccomment" "^0.4.3" + comment-parser "1.1.5" + debug "^4.3.1" + esquery "^1.4.0" + jsdoctypeparser "^9.0.0" + lodash "^4.17.21" + regextras "^0.7.1" + semver "^7.3.5" + spdx-expression-parse "^3.0.1" eslint-scope@^5.0.0: version "5.0.0" @@ -1742,12 +1886,29 @@ eslint-utils@^1.4.3: dependencies: eslint-visitor-keys "^1.1.0" +eslint-utils@^2.0.0, eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + eslint-visitor-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== -eslint@^6.0.0, eslint@^6.8.0: +eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint@^6.0.0: version "6.8.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== @@ -1790,6 +1951,49 @@ eslint@^6.0.0, eslint@^6.8.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" +eslint@^7.25.0: + version "7.25.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.25.0.tgz#1309e4404d94e676e3e831b3a3ad2b050031eb67" + integrity sha512-TVpSovpvCNpLURIScDRB6g5CYu/ZFq9GfX2hLNIV4dSBKxIWojeDODvYl3t0k0VtMxYeR8OXPCFE5+oHMlGfhw== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^13.6.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash "^4.17.21" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.4" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + espree@^6.1.2: version "6.1.2" resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d" @@ -1799,6 +2003,15 @@ espree@^6.1.2: acorn-jsx "^5.1.0" eslint-visitor-keys "^1.1.0" +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -1811,6 +2024,13 @@ esquery@^1.0.1: dependencies: estraverse "^4.0.0" +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + esrecurse@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" @@ -1830,7 +2050,7 @@ estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estraverse@^5.2.0: +estraverse@^5.1.0, estraverse@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== @@ -1992,12 +2212,24 @@ fast-deep-equal@^3.1.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== +fast-glob@^3.1.1: + version "3.2.5" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" + integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" + fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -2007,6 +2239,13 @@ fastest-levenshtein@^1.0.12: resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== +fastq@^1.6.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858" + integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g== + dependencies: + reusify "^1.0.4" + fd-slicer@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" @@ -2028,6 +2267,13 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + file-uri-to-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" @@ -2133,6 +2379,14 @@ flat-cache@^2.0.1: rimraf "2.6.3" write "1.0.3" +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + flat@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" @@ -2143,6 +2397,11 @@ flatted@^2.0.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== +flatted@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" + integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== + flush-write-stream@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" @@ -2230,6 +2489,15 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -2267,7 +2535,7 @@ glob-parent@^5.0.0: dependencies: is-glob "^4.0.1" -glob-parent@~5.1.0: +glob-parent@^5.1.0, glob-parent@~5.1.0: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -2346,6 +2614,25 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" +globals@^13.6.0: + version "13.8.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.8.0.tgz#3e20f504810ce87a8d72e55aecf8435b50f4c1b3" + integrity sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q== + dependencies: + type-fest "^0.20.2" + +globby@^11.0.1: + version "11.0.3" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.3.tgz#9b1f0cb523e171dd1ad8c7b2a9fb4b644b9593cb" + integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + glogg@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.2.tgz#2d7dd702beda22eb3bffadf880696da6d846313f" @@ -2476,6 +2763,11 @@ gulplog@^1.0.0: dependencies: glogg "^1.0.0" +has-bigints@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" + integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -2496,6 +2788,11 @@ has-symbols@^1.0.0, has-symbols@^1.0.1: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== +has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -2584,6 +2881,11 @@ ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +ignore@^5.1.4: + version "5.1.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" + integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== + import-fresh@^3.0.0: version "3.2.1" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" @@ -2592,6 +2894,14 @@ import-fresh@^3.0.0: parent-module "^1.0.0" resolve-from "^4.0.0" +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + import-local@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" @@ -2689,6 +2999,11 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= +is-bigint@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a" + integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA== + is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -2703,16 +3018,28 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" +is-boolean-object@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" + integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== + dependencies: + call-bind "^1.0.0" + is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-callable@^1.1.4, is-callable@^1.1.5: +is-callable@^1.1.4: version "1.1.5" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== +is-callable@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" + integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== + is-core-module@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" @@ -2810,6 +3137,16 @@ is-negated-glob@^1.0.0: resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + +is-number-object@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" + integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -2856,12 +3193,13 @@ is-promise@^2.1, is-promise@^2.1.0: resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= -is-regex@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" - integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== +is-regex@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" + integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== dependencies: - has "^1.0.3" + call-bind "^1.0.2" + has-symbols "^1.0.1" is-relative@^1.0.0: version "1.0.0" @@ -2885,7 +3223,7 @@ is-string@^1.0.5: resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== -is-symbol@^1.0.2: +is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== @@ -2975,10 +3313,10 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -jsdoctypeparser@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsdoctypeparser/-/jsdoctypeparser-6.1.0.tgz#acfb936c26300d98f1405cb03e20b06748e512a8" - integrity sha512-UCQBZ3xCUBv/PLfwKAJhp6jmGOSLFNKzrotXGNgbKhWvz27wPsCsVeP7gIcHPElQw2agBmynAitXqhxR58XAmA== +jsdoctypeparser@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz#8c97e2fb69315eb274b0f01377eaa5c940bd7b26" + integrity sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw== json-parse-better-errors@^1.0.2: version "1.0.2" @@ -2990,11 +3328,23 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + json5@^2.1.2: version "2.2.0" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" @@ -3075,6 +3425,14 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + liftoff@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-3.1.0.tgz#c9ba6081f908670607ee79062d700df062c52ed3" @@ -3154,6 +3512,16 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + +lodash.flatten@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= + lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" @@ -3164,12 +3532,17 @@ lodash.set@^4.3.2: resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM= +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= + lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.17.14, lodash@^4.17.15: +lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -3269,6 +3642,11 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -3296,6 +3674,14 @@ micromatch@^4.0.0: braces "^3.0.1" picomatch "^2.0.5" +micromatch@^4.0.2: + version "4.0.4" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== + dependencies: + braces "^3.0.1" + picomatch "^2.2.3" + mime-db@1.46.0: version "1.46.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.46.0.tgz#6267748a7f799594de3cbc8cde91def349661cee" @@ -3325,7 +3711,7 @@ minimist@0.0.8, minimist@^0.2.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.2.1.tgz#827ba4e7593464e7c221e8c5bed930904ee2c455" integrity sha512-GY8fANSrTMfBVfInqJAY41QkOM+upUTytK1jZ0c8+3HdHrJxBJ3rF5i9moClXTE8uUSnUo8cAsCoxDXvSY4DHg== -minimist@^1.2.5: +minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== @@ -3536,10 +3922,10 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" - integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== +object-inspect@^1.9.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.2.tgz#b6385a3e2b7cae0b5eafcf90cddf85d128767f30" + integrity sha512-gz58rdPpadwztRrPjZE9DZLOABUpTGdcANUgOwBFO1C+HZZhePoP83M65WGDmbpwFYJSWqavbl4SgDn4k8RYTA== object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" @@ -3553,7 +3939,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.0.4, object.assign@^4.1.0: +object.assign@^4.0.4: version "4.1.0" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== @@ -3563,6 +3949,16 @@ object.assign@^4.0.4, object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" +object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + object.defaults@^1.0.0, object.defaults@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" @@ -3596,14 +3992,14 @@ object.reduce@^1.0.0: for-own "^1.0.0" make-iterator "^1.0.0" -object.values@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" - integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== +object.values@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.3.tgz#eaa8b1e17589f02f698db093f7c62ee1699742ee" + integrity sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw== dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" + es-abstract "^1.18.0-next.2" has "^1.0.3" octokit-pagination-methods@^1.1.0: @@ -3644,6 +4040,18 @@ optionator@^0.8.3: type-check "~0.3.2" word-wrap "~1.2.3" +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + ordered-read-streams@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" @@ -3868,6 +4276,11 @@ path-type@^2.0.0: dependencies: pify "^2.0.0" +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + pause-stream@^0.0.11: version "0.0.11" resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" @@ -3890,6 +4303,11 @@ picomatch@^2.0.5: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== +picomatch@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" + integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== + pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -3945,6 +4363,11 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -4005,6 +4428,11 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -4121,10 +4549,15 @@ regexpp@^3.0.0: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e" integrity sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g== -regextras@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/regextras/-/regextras-0.7.0.tgz#2298bef8cfb92b1b7e3b9b12aa8f69547b7d71e4" - integrity sha512-ds+fL+Vhl918gbAUb0k2gVKbTZLsg84Re3DI6p85Et0U0tYME3hyW4nMK8Px4dtDaBA2qNjvG5uWyW7eK5gfmw== +regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + +regextras@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/regextras/-/regextras-0.7.1.tgz#be95719d5f43f9ef0b9fa07ad89b7c606995a3b2" + integrity sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w== remove-bom-buffer@^3.0.0: version "3.0.0" @@ -4177,6 +4610,11 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" @@ -4224,14 +4662,14 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.3.2, resolve@^1.4.0: +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.13.1, resolve@^1.3.2, resolve@^1.4.0: version "1.15.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== dependencies: path-parse "^1.0.6" -resolve@^1.9.0: +resolve@^1.17.0, resolve@^1.9.0: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -4252,6 +4690,11 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + rimraf@2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" @@ -4266,6 +4709,13 @@ rimraf@^2.6.3: dependencies: glob "^7.1.3" +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + run-async@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" @@ -4273,6 +4723,13 @@ run-async@^2.2.0: dependencies: is-promise "^2.1.0" +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + rxjs@^6.5.3: version "6.5.4" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" @@ -4328,12 +4785,12 @@ semver-greatest-satisfied-range@^1.1.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^6.1.2, semver@^6.3.0: +semver@^6.1.2: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.3.4: +semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== @@ -4413,6 +4870,11 @@ signal-exit@^3.0.3: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -4422,6 +4884,15 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -4522,6 +4993,14 @@ spdx-expression-parse@^3.0.0: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" +spdx-expression-parse@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + spdx-license-ids@^3.0.0: version "3.0.5" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" @@ -4633,21 +5112,21 @@ string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string.prototype.trimleft@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" - integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== +string.prototype.trimend@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" + integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - function-bind "^1.1.1" -string.prototype.trimright@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" - integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== +string.prototype.trimstart@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" + integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - function-bind "^1.1.1" string_decoder@^1.1.1: version "1.3.0" @@ -4718,7 +5197,7 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-json-comments@3.1.1: +strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -4774,6 +5253,19 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" +table@^6.0.4: + version "6.6.0" + resolved "https://registry.yarnpkg.com/table/-/table-6.6.0.tgz#905654b79df98d9e9a973de1dd58682532c40e8e" + integrity sha512-iZMtp5tUvcnAdtHpZTWLPF0M7AgiQsURR2DwmxnJwSy8I3+cY+ozzVvYha3BOLG2TB+L0CqjIz+91htuj6yCXg== + dependencies: + ajv "^8.0.1" + lodash.clonedeep "^4.5.0" + lodash.flatten "^4.4.0" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" + tapable@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" @@ -4930,6 +5422,16 @@ ts-loader@^8.1.0: micromatch "^4.0.0" semver "^7.3.4" +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0: version "1.10.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" @@ -4968,6 +5470,13 @@ tsutils@^3.17.1: dependencies: tslib "^1.8.1" +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -4975,6 +5484,11 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + type-fest@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" @@ -5005,6 +5519,16 @@ typescript@^3.5.3: resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.5.tgz#0692e21f65fd4108b9330238aac11dd2e177a1ae" integrity sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw== +unbox-primitive@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" + integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.1" + has-symbols "^1.0.2" + which-boxed-primitive "^1.0.2" + unc-path-regex@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" @@ -5329,6 +5853,17 @@ webpack@^5.28.0: watchpack "^2.0.0" webpack-sources "^2.1.1" +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + which-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" @@ -5372,7 +5907,7 @@ windows-release@^3.1.0: dependencies: execa "^1.0.0" -word-wrap@~1.2.3: +word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== From 30950f0aaa25f376a87a759dcd97d0e51886bac9 Mon Sep 17 00:00:00 2001 From: Gregg Miskelly Date: Wed, 5 May 2021 14:29:17 -0700 Subject: [PATCH 41/48] Update cppvsdbg debug adapter (#7467) Changes: * Adds support for loading Concord extensions to the cppvsdbg debug adapter (see [documentation](https://github.com/microsoft/ConcordExtensibilitySamples/wiki/Support-for-VS-Code-cppvsdbg-Scenarios) for more information) * Adds support for exception conditions to cppvsdbg (see documentation file in this PR for more information) --- Documentation/Debugger/ExceptionSettings.md | 20 +++++++++++++++++++ Extension/package.json | 4 ++-- .../Debugger/debugAdapterDescriptorFactory.ts | 2 +- 3 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 Documentation/Debugger/ExceptionSettings.md diff --git a/Documentation/Debugger/ExceptionSettings.md b/Documentation/Debugger/ExceptionSettings.md new file mode 100644 index 0000000000..d5c75ee44c --- /dev/null +++ b/Documentation/Debugger/ExceptionSettings.md @@ -0,0 +1,20 @@ +# Exception Settings + +The Microsoft Windows C/C++ debugger (cppvsdbg) supports configuration options for if the debugger stops when exceptions are thrown. This is done with the 'All Exceptions' check box in the BREAKPOINTS section of the 'Run and Debug' view. + +Note that the BREAKPOINTS section will be missing this entry until the first time that the folder has been debugged with the 'cppvsdbg' debugger. + +Checking 'All Exceptions' will configure the debugger to stop when an exception is thrown. + +##### Exception Conditions + +The 'All Exceptions' checkbox support conditions to break on only selected exception types (C++ exceptions) or codes (Win32 exceptions). To edit the condition, click on the pencil icon or right click on the entry and invoke 'Edit Condition'. The condition is a comma-separated list of exception types and codes to break on, or if the list starts with '!', a list of exception types and codes to ignore. + +Examples conditions: + +| Example condition value | Result | +|-------------------------|--------| +| 0xC0000005, 0xC0000094 | Break on Win32 Access Violation exceptions and integer division by zero exceptions | +| std::out_of_range, 0xC0000005 | This will break on out-of-range exceptions, and access violation exceptions | +| !MyExceptionClass | This will break on all exceptions except C++ `MyExceptionClass` exceptions | +| !MyExceptionClass, 0x6831C815 | This will break on all exceptions except C++ `MyExceptionClass` exceptions and Win32 exceptions with custom code 0x6831C815 | diff --git a/Extension/package.json b/Extension/package.json index 7054cc8d32..722ce5bfd1 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -2825,7 +2825,7 @@ }, { "description": "Visual Studio Windows Debugger", - "url": "https://go.microsoft.com/fwlink/?linkid=2153010", + "url": "https://go.microsoft.com/fwlink/?linkid=2162486", "platforms": [ "win32" ], @@ -2836,7 +2836,7 @@ "binaries": [ "./debugAdapters/vsdbg/bin/vsdbg.exe" ], - "integrity": "52C4234976D527A7BF02EB2E8844F3C605DC4BD1D3847F83C8675CD23967BAB3" + "integrity": "E5046509D510086B99F171595114220AD8E9F820E7238B6A5199CD78B9AD2078" } ] } diff --git a/Extension/src/Debugger/debugAdapterDescriptorFactory.ts b/Extension/src/Debugger/debugAdapterDescriptorFactory.ts index b69306d31d..e40b0a64c1 100644 --- a/Extension/src/Debugger/debugAdapterDescriptorFactory.ts +++ b/Extension/src/Debugger/debugAdapterDescriptorFactory.ts @@ -64,7 +64,7 @@ export class CppvsdbgDebugAdapterDescriptorFactory extends AbstractDebugAdapterD if (await util.isExtensionReady()) { return new vscode.DebugAdapterExecutable( path.join(this.context.extensionPath, './debugAdapters/vsdbg/bin/vsdbg.exe'), - ['--interpreter=vscode'] + ['--interpreter=vscode', '--extConfigDir=%USERPROFILE%\\.cppvsdbg\\extensions'] ); } else { throw new Error(util.extensionNotReadyString); From 4e7b679889931c4d14f97d592f01a6d01605d811 Mon Sep 17 00:00:00 2001 From: Elaheh Rashedi Date: Wed, 5 May 2021 15:26:49 -0700 Subject: [PATCH 42/48] refactoring async/await --- Extension/src/LanguageServer/client.ts | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index 4ed8073fbb..9146c827e3 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -580,7 +580,7 @@ export interface Client { getCurrentCompilerPathAndArgs(): Thenable; getKnownCompilers(): Thenable; takeOwnership(document: vscode.TextDocument): void; - queueTask(task: () => Thenable): Thenable; + queueTask(task: () => Thenable): Promise; requestWhenReady(request: () => Thenable): Thenable; notifyWhenLanguageClientReady(notify: () => void): void; awaitUntilLanguageClientReady(): void; @@ -592,15 +592,15 @@ export interface Client { deactivate(): void; pauseParsing(): void; resumeParsing(): void; - handleConfigurationSelectCommand(): void; - handleConfigurationProviderSelectCommand(): void; - handleShowParsingCommands(): void; + handleConfigurationSelectCommand(): Promise; + handleConfigurationProviderSelectCommand(): Promise; + handleShowParsingCommands(): Promise; handleReferencesIcon(): void; handleConfigurationEditCommand(): void; handleConfigurationEditJSONCommand(): void; handleConfigurationEditUICommand(): void; handleAddToIncludePathCommand(path: string): void; - handleGoToDirectiveInGroup(next: boolean): void; + handleGoToDirectiveInGroup(next: boolean): Promise; onInterval(): void; dispose(): void; addFileAssociations(fileAssociations: string, languageId: string): void; @@ -2807,7 +2807,7 @@ class NullClient implements Client { getCurrentCompilerPathAndArgs(): Thenable { return Promise.resolve(undefined); } getKnownCompilers(): Thenable { return Promise.resolve([]); } takeOwnership(document: vscode.TextDocument): void {} - queueTask(task: () => Thenable): Thenable { return task(); } + queueTask(task: () => Thenable): Promise { return Promise.resolve(task()); } requestWhenReady(request: () => Thenable): Thenable { return request(); } notifyWhenLanguageClientReady(notify: () => void): void {} awaitUntilLanguageClientReady(): void {} @@ -2819,15 +2819,15 @@ class NullClient implements Client { deactivate(): void {} pauseParsing(): void {} resumeParsing(): void {} - handleConfigurationSelectCommand(): void {} - handleConfigurationProviderSelectCommand(): void {} - handleShowParsingCommands(): void {} + handleConfigurationSelectCommand(): Promise { return Promise.resolve(); } + handleConfigurationProviderSelectCommand(): Promise { return Promise.resolve(); } + handleShowParsingCommands(): Promise { return Promise.resolve(); } handleReferencesIcon(): void {} handleConfigurationEditCommand(): void {} handleConfigurationEditJSONCommand(): void {} handleConfigurationEditUICommand(): void {} handleAddToIncludePathCommand(path: string): void { } - handleGoToDirectiveInGroup(next: boolean): void {} + handleGoToDirectiveInGroup(next: boolean): Promise { return Promise.resolve(); } onInterval(): void {} dispose(): void { this.booleanEvent.dispose(); From b00df8d64d2fec2c5fd2fecacd5ddbbe2ec1e3e1 Mon Sep 17 00:00:00 2001 From: csigs Date: Thu, 6 May 2021 10:02:38 -0700 Subject: [PATCH 43/48] Localization - Translated Strings (#7469) --- Extension/i18n/chs/package.i18n.json | 4 ++-- Extension/i18n/cht/package.i18n.json | 4 ++-- Extension/i18n/csy/package.i18n.json | 4 ++-- Extension/i18n/deu/package.i18n.json | 4 ++-- Extension/i18n/esn/package.i18n.json | 4 ++-- Extension/i18n/fra/package.i18n.json | 4 ++-- Extension/i18n/ita/package.i18n.json | 4 ++-- Extension/i18n/jpn/package.i18n.json | 4 ++-- Extension/i18n/kor/package.i18n.json | 4 ++-- Extension/i18n/plk/package.i18n.json | 4 ++-- Extension/i18n/ptb/package.i18n.json | 4 ++-- Extension/i18n/rus/package.i18n.json | 4 ++-- Extension/i18n/trk/package.i18n.json | 4 ++-- 13 files changed, 26 insertions(+), 26 deletions(-) diff --git a/Extension/i18n/chs/package.i18n.json b/Extension/i18n/chs/package.i18n.json index 63ac8348a1..87735c4145 100644 --- a/Extension/i18n/chs/package.i18n.json +++ b/Extension/i18n/chs/package.i18n.json @@ -183,7 +183,7 @@ "c_cpp.debuggers.pipeTransport.pipeProgram.description": "要执行的完全限定的管道命令。", "c_cpp.debuggers.pipeTransport.pipeArgs.description": "传递给管道程序配置连接的命令行参数。", "c_cpp.debuggers.pipeTransport.pipeEnv.description": "传递给程序的环境变量。", - "c_cpp.debuggers.pipeTransport.quoteArgs.description": "If the pipeProgram's individual arguments contain characters (such as spaces or tabs), should it be quoted? If 'false', the debugger command will no longer be automatically quoted. \r\nDefault is 'true'.", + "c_cpp.debuggers.pipeTransport.quoteArgs.description": "如果 pipeProgram 的单个参数包含字符(如空格或制表符),是否应引用它? 如果为 “false”,则将不再自动引用调试程序命令。\r\n 默认为 “true”。", "c_cpp.debuggers.logging.description": "用于确定应将哪些类型的消息记录到调试控制台的可选标志。", "c_cpp.debuggers.logging.exceptions.description": "用于确定是否应将异常消息记录到调试控制台的可选标志。默认为 true。", "c_cpp.debuggers.logging.moduleLoad.description": "用于确定是否应将模块加载事件记录到调试控制台的可选标志。默认为 true。", @@ -208,7 +208,7 @@ "c_cpp.debuggers.cppdbg.visualizerFile.description": "调试此进程时要使用的 .natvis 文件。此选项与 GDB 整齐打印不兼容。如果使用此设置,请同时查看 \"showDisplayString\"。", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "调试此进程时要使用的 .natvis 文件。", "c_cpp.debuggers.showDisplayString.description": "指定了 visualizerFile 时,showDisplayString 将启用显示字符串。启用此选项可能会导致调试期间的性能下降。", - "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", + "c_cpp.debuggers.environment.description": "要添加到程序环境的环境变量。示例: [ { \"name\": \"config\", \"value\": \"Debug\" } ],而不是 [ { \"config\": \"Debug\" } ]。", "c_cpp.debuggers.envFile.description": "包含环境变量定义的文件的绝对路径。此文件具有每行由等号分隔的键值对。例如: 键=值", "c_cpp.debuggers.additionalSOLibSearchPath.description": "要用于搜索 .so 文件的目录列表(以分号分隔)。示例: \"c:\\dir1;c:\\dir2\"。", "c_cpp.debuggers.MIMode.description": "指示 MIDebugEngine 要连接到的控制台调试程序。允许的值为 \"gdb\"、\"lldb\"。", diff --git a/Extension/i18n/cht/package.i18n.json b/Extension/i18n/cht/package.i18n.json index a2313a7848..3fdbb62dca 100644 --- a/Extension/i18n/cht/package.i18n.json +++ b/Extension/i18n/cht/package.i18n.json @@ -183,7 +183,7 @@ "c_cpp.debuggers.pipeTransport.pipeProgram.description": "要執行的完整管道命令。", "c_cpp.debuggers.pipeTransport.pipeArgs.description": "傳遞至管道程式以設定連線的命令列引數。", "c_cpp.debuggers.pipeTransport.pipeEnv.description": "傳遞至管道程式的環境變數。", - "c_cpp.debuggers.pipeTransport.quoteArgs.description": "If the pipeProgram's individual arguments contain characters (such as spaces or tabs), should it be quoted? If 'false', the debugger command will no longer be automatically quoted. \r\nDefault is 'true'.", + "c_cpp.debuggers.pipeTransport.quoteArgs.description": "若 pipeProgram 的個別引數包含字元 (例如空格或定位字元),是否應該加上引號? 若設定為 'false',不會再自動為偵錯工具命令加上引號。\r\n預設為 'true'。", "c_cpp.debuggers.logging.description": "選擇性旗標,用以判斷應記錄到偵錯主控台的訊息類型。", "c_cpp.debuggers.logging.exceptions.description": "選擇性旗標,用以判斷是否應將例外狀況訊息記錄到偵錯主控台。預設為 true。", "c_cpp.debuggers.logging.moduleLoad.description": "選擇性旗標,用以判斷是否應將模組載入事件記錄到偵錯主控台。預設為 true。", @@ -208,7 +208,7 @@ "c_cpp.debuggers.cppdbg.visualizerFile.description": "偵錯此處理序時要使用的 .natvis 檔案。此選項與 GDB 美化顯示不相容。若使用此設定,也請參閱 \"showDisplayString\"。", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "偵錯此處理序時要使用的 .natvis 檔案。", "c_cpp.debuggers.showDisplayString.description": "指定 visualizerFile 時,showDisplayString 會啟用顯示字串。開啟此選項可能會導致偵錯期間的效能變慢。", - "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", + "c_cpp.debuggers.environment.description": "要新增至程式環境的環境變數。範例: [ { \"name\": \"config\", \"value\": \"Debug\" } ],非 [ { \"config\": \"Debug\" } ]。", "c_cpp.debuggers.envFile.description": "包含環境變數定義之檔案的絕對路徑。此檔案具有以等號分隔每行的索引鍵值組。例如「鍵=值」", "c_cpp.debuggers.additionalSOLibSearchPath.description": "要用於搜尋 .so 檔案的目錄清單 (以分號分隔)。範例: \"c:\\dir1;c:\\dir2\"。", "c_cpp.debuggers.MIMode.description": "表示 MIDebugEngine 將連線的主控台偵錯工具。允許的值為 \"gdb\" \"lldb\"。", diff --git a/Extension/i18n/csy/package.i18n.json b/Extension/i18n/csy/package.i18n.json index 7df402f94a..e67d72f9ad 100644 --- a/Extension/i18n/csy/package.i18n.json +++ b/Extension/i18n/csy/package.i18n.json @@ -183,7 +183,7 @@ "c_cpp.debuggers.pipeTransport.pipeProgram.description": "Plně kvalifikovaný příkaz kanálu, který se má provést", "c_cpp.debuggers.pipeTransport.pipeArgs.description": "Argumenty příkazového řádku, které se předávají do cílového programu, aby se nakonfigurovalo připojení", "c_cpp.debuggers.pipeTransport.pipeEnv.description": "Proměnné prostředí, které se předávají do cílového programu", - "c_cpp.debuggers.pipeTransport.quoteArgs.description": "If the pipeProgram's individual arguments contain characters (such as spaces or tabs), should it be quoted? If 'false', the debugger command will no longer be automatically quoted. \r\nDefault is 'true'.", + "c_cpp.debuggers.pipeTransport.quoteArgs.description": "Pokud jednotlivé argumenty pro pipeProgram obsahují znaky (například mezery nebo tabulátory), mají se používat uvozovky? Pokud se nastaví hodnota false, nebudou se už v příkazu ladicího programu automaticky používat uvozovky. \r\nVýchozí hodnota je true.", "c_cpp.debuggers.logging.description": "Nepovinné příznaky, které určují, které typy zpráv se mají protokolovat do konzoly ladění", "c_cpp.debuggers.logging.exceptions.description": "Nepovinný příznak, který určuje, jestli se do konzoly ladění mají protokolovat zprávy výjimek. Výchozí hodnota je true.", "c_cpp.debuggers.logging.moduleLoad.description": "Nepovinný příznak, který určuje, jestli se do konzoly ladění mají protokolovat události načítání modulu. Výchozí hodnota je true.", @@ -208,7 +208,7 @@ "c_cpp.debuggers.cppdbg.visualizerFile.description": "Soubor .natvis, který se použije při ladění tohoto procesu. Tato možnost není kompatibilní s přehledným výpisem GDB. Pokud používáte toto nastavení, podívejte se i na showDisplayString.", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "Soubor .natvis, který se použije při ladění tohoto procesu.", "c_cpp.debuggers.showDisplayString.description": "Když se zadá visualizerFile, showDisplayString povolí zobrazovaný řetězec. Když se tato možnost zapne, může to způsobit nižší výkon při ladění.", - "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", + "c_cpp.debuggers.environment.description": "Proměnné prostředí, které se mají přidat do prostředí pro program. Příklad: [ { \"name\": \"config\", \"value\": \"Debug\" } ], ne [ { \"config\": \"Debug\" } ].", "c_cpp.debuggers.envFile.description": "Absolutní cesta k souboru, který obsahuje definice proměnných prostředí. Tento soubor obsahuje na každém řádku pár klíč-hodnota rozdělený znakem rovnítka. Např. KLÍČ=HODNOTA.", "c_cpp.debuggers.additionalSOLibSearchPath.description": "Seznam středníkem oddělených adresářů, ve kterých se budou hledat soubory .so. Příklad: c:\\dir1;c:\\dir2", "c_cpp.debuggers.MIMode.description": "Určuje ladicí program konzoly, ke kterému se připojí MIDebugEngine. Povolené hodnoty jsou gdb a lldb.", diff --git a/Extension/i18n/deu/package.i18n.json b/Extension/i18n/deu/package.i18n.json index 26acf01fc4..9c1a535b78 100644 --- a/Extension/i18n/deu/package.i18n.json +++ b/Extension/i18n/deu/package.i18n.json @@ -183,7 +183,7 @@ "c_cpp.debuggers.pipeTransport.pipeProgram.description": "Der vollqualifizierte auszuführende Pipebefehl.", "c_cpp.debuggers.pipeTransport.pipeArgs.description": "Befehlszeilenargumente, die zum Konfigurieren der Verbindung an das Pipeprogramm übergeben werden.", "c_cpp.debuggers.pipeTransport.pipeEnv.description": "Umgebungsvariablen, die an das Pipeprogramm übergeben werden.", - "c_cpp.debuggers.pipeTransport.quoteArgs.description": "If the pipeProgram's individual arguments contain characters (such as spaces or tabs), should it be quoted? If 'false', the debugger command will no longer be automatically quoted. \r\nDefault is 'true'.", + "c_cpp.debuggers.pipeTransport.quoteArgs.description": "Gibt an, ob Anführungszeichen gesetzt werden sollen, wenn die einzelnen pipeProgram-Argumente Zeichen enthalten (z. B. Leerzeichen oder Tabstopps). Bei Einstellung auf \"false\" wird der Debuggerbefehl nicht mehr automatisch in Anführungszeichen gesetzt. \r\nDer Standardwert ist \"true\".", "c_cpp.debuggers.logging.description": "Optionale Flags zum Festlegen, welche Nachrichtentypen in der Debugging-Konsole protokolliert werden sollen.", "c_cpp.debuggers.logging.exceptions.description": "Optionales Flag zum Festlegen, ob Ausnahmemeldungen in der Debugging-Konsole protokolliert werden sollen. Der Standardwert ist TRUE.", "c_cpp.debuggers.logging.moduleLoad.description": "Optionales Flag zum Festlegen, ob Modulladeereignisse in der Debugging-Konsole protokolliert werden sollen. Der Standardwert ist TRUE.", @@ -208,7 +208,7 @@ "c_cpp.debuggers.cppdbg.visualizerFile.description": "Die .natvis-Datei, die beim Debuggen dieses Prozesses verwendet werden soll. Diese Option ist nicht mit der automatischen Strukturierung und Einrückung von GDB kompatibel. Weitere Informationen finden Sie auch bei \"showDisplayString\", wenn Sie diese Einstellung verwenden.", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "Die .natvis-Datei, die beim Debuggen dieses Prozesses verwendet werden soll.", "c_cpp.debuggers.showDisplayString.description": "Wenn eine visualizerFile angegeben wird, wird die Anzeigezeichenfolge von showDisplayString aktiviert. Durch Aktivieren dieser Option kann die Leistung während des Debuggings verlangsamt werden.", - "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", + "c_cpp.debuggers.environment.description": "Umgebungsvariablen, die der Umgebung für das Programm hinzugefügt werden sollen. Beispiel: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", "c_cpp.debuggers.envFile.description": "Absoluter Pfad zu einer Datei mit Umgebungsvariablendefinitionen. Für diese Datei sind Schlüssel-Wert-Paare pro Zeile durch ein Gleichheitszeichen getrennt. Beispiel: SCHLÜSSEL=WERT", "c_cpp.debuggers.additionalSOLibSearchPath.description": "Durch Semikolons getrennte Liste von Verzeichnissen, die für die Suche nach SO-Dateien verwendet werden sollen. Beispiel: \"c:\\dir1;c:\\dir2\".", "c_cpp.debuggers.MIMode.description": "Hiermit wird der Konsolendebugger angegeben, mit dem die MIDebugEngine eine Verbindung herstellt. Zulässige Werte sind \"gdb\" und \"lldb\".", diff --git a/Extension/i18n/esn/package.i18n.json b/Extension/i18n/esn/package.i18n.json index 33a729f92b..a3e59c1d6d 100644 --- a/Extension/i18n/esn/package.i18n.json +++ b/Extension/i18n/esn/package.i18n.json @@ -183,7 +183,7 @@ "c_cpp.debuggers.pipeTransport.pipeProgram.description": "Comando de canalización completo para ejecutar.", "c_cpp.debuggers.pipeTransport.pipeArgs.description": "Argumentos de la línea de comandos que se pasan al programa de canalización para configurar la conexión.", "c_cpp.debuggers.pipeTransport.pipeEnv.description": "Variables de entorno que se pasan al programa de canalización.", - "c_cpp.debuggers.pipeTransport.quoteArgs.description": "If the pipeProgram's individual arguments contain characters (such as spaces or tabs), should it be quoted? If 'false', the debugger command will no longer be automatically quoted. \r\nDefault is 'true'.", + "c_cpp.debuggers.pipeTransport.quoteArgs.description": "Si los argumentos individuales de pipeProgram contienen caracteres (como espacios o tabulaciones), ¿debe incluirse entre comillas? Si es \"false\", el comando del depurador dejará de incluirse entre comillas automáticamente. \r\nEl valor predeterminado es \"true\".", "c_cpp.debuggers.logging.description": "Marcas opcionales que determinan los tipos de mensajes que deben registrarse en la Consola de depuración.", "c_cpp.debuggers.logging.exceptions.description": "Marca opcional que determina si los mensajes de excepción deben registrarse en la Consola de depuración. El valor predeterminado es true.", "c_cpp.debuggers.logging.moduleLoad.description": "Marca opcional que determina si los eventos de carga de módulos deben registrarse en la Consola de depuración. El valor predeterminado es true.", @@ -208,7 +208,7 @@ "c_cpp.debuggers.cppdbg.visualizerFile.description": "Archivo .natvis que debe usarse para depurar este proceso. Esta opción no es compatible con la impresión con sangría de GDB. Vea también \"showDisplayString\" si utiliza esta configuración.", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "Archivo. natvis que debe usarse para depurar este proceso.", "c_cpp.debuggers.showDisplayString.description": "Cuando se especifica visualizerFile, showDisplayString habilita la cadena para mostrar. La activación de esta opción puede ralentizar el rendimiento durante la depuración.", - "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", + "c_cpp.debuggers.environment.description": "Variables del entorno que se agregan al entorno del programa. Ejemplo: [ { \"name\": \"config\", \"value\": \"Debug\" } ], no [ { \"config\": \"Debug\" } ].", "c_cpp.debuggers.envFile.description": "Ruta de acceso absoluta a un archivo que contiene definiciones de variables de entorno. Este archivo tiene pares clave-valor separados por un signo igual por línea. Por ejemplo, CLAVE=VALOR.", "c_cpp.debuggers.additionalSOLibSearchPath.description": "Lista de directorios separados por punto y coma que debe usarse para buscar archivos .so. Ejemplo: \"c:\\dir1;c:\\dir2\".", "c_cpp.debuggers.MIMode.description": "Indica el depurador de la consola al que debe conectarse MIDebugEngine. Los valores permitidos son \"gdb\" y \"lldb\".", diff --git a/Extension/i18n/fra/package.i18n.json b/Extension/i18n/fra/package.i18n.json index 6afc39042d..520d2ddb5b 100644 --- a/Extension/i18n/fra/package.i18n.json +++ b/Extension/i18n/fra/package.i18n.json @@ -183,7 +183,7 @@ "c_cpp.debuggers.pipeTransport.pipeProgram.description": "Commande canal complète à exécuter.", "c_cpp.debuggers.pipeTransport.pipeArgs.description": "Arguments de ligne de commande passés au programme canal pour configurer la connexion.", "c_cpp.debuggers.pipeTransport.pipeEnv.description": "Variables d'environnement passées au programme canal.", - "c_cpp.debuggers.pipeTransport.quoteArgs.description": "If the pipeProgram's individual arguments contain characters (such as spaces or tabs), should it be quoted? If 'false', the debugger command will no longer be automatically quoted. \r\nDefault is 'true'.", + "c_cpp.debuggers.pipeTransport.quoteArgs.description": "Si des arguments individuels de pipeProgram contiennent des caractères tels que des espaces ou des tabulations, doivent-ils être placés entre guillemets ? Si la valeur est « false », la commande de débogueur n'est plus automatiquement placée entre guillemets. \r\nLa valeur par défaut est « true ».", "c_cpp.debuggers.logging.description": "Indicateurs facultatifs pour déterminer les types de messages à journaliser dans la console de débogage.", "c_cpp.debuggers.logging.exceptions.description": "Indicateur facultatif pour déterminer si les messages d'exception doivent être journalisés dans la console de débogage. La valeur par défaut est true.", "c_cpp.debuggers.logging.moduleLoad.description": "Indicateur facultatif pour déterminer si les événements de chargement de module doivent être journalisés dans la console de débogage. La valeur par défaut est true.", @@ -208,7 +208,7 @@ "c_cpp.debuggers.cppdbg.visualizerFile.description": "Fichier .natvis à utiliser pendant le débogage de ce processus. Cette option n'est pas compatible avec l'impression en mode Pretty GDB. Consultez également \"showDisplayString\" en cas d'utilisation de ce paramètre.", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "Fichier .natvis à utiliser pendant le débogage de ce processus.", "c_cpp.debuggers.showDisplayString.description": "Quand un visualizerFile est spécifié, showDisplayString active la chaîne d'affichage. Si vous activez cette option, les performances peuvent être ralenties pendant le débogage.", - "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", + "c_cpp.debuggers.environment.description": "Variables d’environnement à ajouter à l’environnement du programme. Exemple : [ { « nom »: « config », « valeur » : « Débogage » } ], et non [ { « config »: « Débogage » } ].", "c_cpp.debuggers.envFile.description": "Chemin absolu d'un fichier contenant des définitions de variable d'environnement. Ce fichier a des paires clé-valeur séparées par un signe égal par ligne. Par exemple, CLÉ=VALEUR", "c_cpp.debuggers.additionalSOLibSearchPath.description": "Liste de répertoires séparés par des points-virgules à utiliser pour rechercher des fichiers .so. Exemple : \"c:\\dir1;c:\\dir2\".", "c_cpp.debuggers.MIMode.description": "Indique le débogueur de console auquel MIDebugEngine se connecte. Les valeurs autorisées sont \"gdb\" \"lldb\".", diff --git a/Extension/i18n/ita/package.i18n.json b/Extension/i18n/ita/package.i18n.json index 935a8e72e2..83ae103dbb 100644 --- a/Extension/i18n/ita/package.i18n.json +++ b/Extension/i18n/ita/package.i18n.json @@ -183,7 +183,7 @@ "c_cpp.debuggers.pipeTransport.pipeProgram.description": "Comando pipe completo da eseguire.", "c_cpp.debuggers.pipeTransport.pipeArgs.description": "Argomenti della riga di comando passati al programma pipe per configurare la connessione.", "c_cpp.debuggers.pipeTransport.pipeEnv.description": "Variabili di ambiente passate al programma pipe.", - "c_cpp.debuggers.pipeTransport.quoteArgs.description": "If the pipeProgram's individual arguments contain characters (such as spaces or tabs), should it be quoted? If 'false', the debugger command will no longer be automatically quoted. \r\nDefault is 'true'.", + "c_cpp.debuggers.pipeTransport.quoteArgs.description": "Indica se i singoli argomenti di pipeProgram devono essere racchiusi tra virgolette quando contengono caratteri, ad esempio spazi o tabulazioni. Se è 'false', il comando del debugger non verrà più racchiuso automaticamente tra virgolette. \r\nL'impostazione predefinita è 'true'.", "c_cpp.debuggers.logging.description": "Flag facoltativi per determinare i tipi di messaggi da registrare nella Console di debug.", "c_cpp.debuggers.logging.exceptions.description": "Flag facoltativo per determinare se i messaggi di eccezione devono essere registrati nella Console di debug. Il valore predefinito è true.", "c_cpp.debuggers.logging.moduleLoad.description": "Flag facoltativo per determinare se gli eventi di caricamento del modulo devono essere registrati nella Console di debug. Il valore predefinito è true.", @@ -208,7 +208,7 @@ "c_cpp.debuggers.cppdbg.visualizerFile.description": "File con estensione natvis da usare durante il debug di questo processo. Questa opzione non è compatibile con la riformattazione GDB. Se si usa questa impostazione, vedere anche \"showDisplayString\".", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "File con estensione natvis da usare durante il debug di questo processo.", "c_cpp.debuggers.showDisplayString.description": "Quando si specifica un oggetto visualizerFile, showDisplayString abilita la stringa di visualizzazione. L'attivazione di questa opzione può comportare un rallentamento delle prestazioni durante il debug.", - "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", + "c_cpp.debuggers.environment.description": "Variabili di ambiente da aggiungere all'ambiente per il programma. Esempio: [ { \"name\": \"config\", \"value\": \"Debug\" } ], non [ { \"config\": \"Debug\" } ].", "c_cpp.debuggers.envFile.description": "Percorso assoluto di un file contenente le definizioni delle variabili di ambiente. Questo file contiene su ogni riga coppie chiave-valore separate da un segno di uguale, ad esempio CHIAVE=VALORE", "c_cpp.debuggers.additionalSOLibSearchPath.description": "Elenco di directory delimitate da punto e virgola da usare per la ricerca di file con estensione so. Esempio: \"c:\\dir1;c:\\dir2\".", "c_cpp.debuggers.MIMode.description": "Indica il debugger della console a cui si connetterà MIDebugEngine. I valori consentiti sono \"gdb\" e \"lldb\".", diff --git a/Extension/i18n/jpn/package.i18n.json b/Extension/i18n/jpn/package.i18n.json index 52296758e8..178ee3062d 100644 --- a/Extension/i18n/jpn/package.i18n.json +++ b/Extension/i18n/jpn/package.i18n.json @@ -183,7 +183,7 @@ "c_cpp.debuggers.pipeTransport.pipeProgram.description": "実行するパイプ コマンドの完全修飾パス。", "c_cpp.debuggers.pipeTransport.pipeArgs.description": "接続を構成するためにパイプ プログラムに渡すコマンド ライン引数。", "c_cpp.debuggers.pipeTransport.pipeEnv.description": "パイプ プログラムに渡す環境変数。", - "c_cpp.debuggers.pipeTransport.quoteArgs.description": "If the pipeProgram's individual arguments contain characters (such as spaces or tabs), should it be quoted? If 'false', the debugger command will no longer be automatically quoted. \r\nDefault is 'true'.", + "c_cpp.debuggers.pipeTransport.quoteArgs.description": "pipeProgram の個々の引数に (スペースやタブなどの) 文字が含まれる場合に引用符で囲むかどうか。'false' に設定すると、デバッガー コマンドが自動的に引用符で囲まれることはなくなります。\r\n既定値は 'true' です。", "c_cpp.debuggers.logging.description": "どの種類のメッセージをデバッグ コンソールに記録する必要があるかを決定するオプションのフラグです。", "c_cpp.debuggers.logging.exceptions.description": "例外メッセージをデバッグ コンソールに記録するかどうかを決定するオプションのフラグです。既定値は true です。", "c_cpp.debuggers.logging.moduleLoad.description": "モジュール読み込みイベントをデバッグ コンソールに記録するかどうかを決定するオプションのフラグです。既定値は true です。", @@ -208,7 +208,7 @@ "c_cpp.debuggers.cppdbg.visualizerFile.description": "このプロセスをデバッグするときに使用する .natvis ファイルです。このオプションは GDB の再フォーマットと互換性がありません。この設定を使用する場合は、\"showDisplayString\" も参照してください。", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "このプロセスをデバッグするときに使用する .natvis ファイルです。", "c_cpp.debuggers.showDisplayString.description": "visualizerFile を指定すると、showDisplayString により表示文字列が有効になります。このオプションをオンにすると、デバッグ中にパフォーマンスが低下する可能性があります。", - "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", + "c_cpp.debuggers.environment.description": "プログラムの環境に追加する環境変数。例: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ]。", "c_cpp.debuggers.envFile.description": "環境変数の定義を含むファイルへの絶対パスです。このファイルには、行ごとに等号で区切られたキーと値のペアがあります。例: キー=値", "c_cpp.debuggers.additionalSOLibSearchPath.description": ".so ファイルの検索に使用する、セミコロンで区切られたディレクトリの一覧です。例: \"c:\\dir1;c:\\dir2\"。", "c_cpp.debuggers.MIMode.description": "MIDebugEngine が接続するコンソール デバッガーを示します。許可されている値は \"gdb\" \"lldb\" です。", diff --git a/Extension/i18n/kor/package.i18n.json b/Extension/i18n/kor/package.i18n.json index d8f76fcd14..8375ae47ce 100644 --- a/Extension/i18n/kor/package.i18n.json +++ b/Extension/i18n/kor/package.i18n.json @@ -183,7 +183,7 @@ "c_cpp.debuggers.pipeTransport.pipeProgram.description": "실행할 정규화된 파이프 명령입니다.", "c_cpp.debuggers.pipeTransport.pipeArgs.description": "연결을 구성하기 위해 파이프 프로그램에 전달되는 명령줄 인수입니다.", "c_cpp.debuggers.pipeTransport.pipeEnv.description": "파이프 프로그램에 전달되는 환경 변수입니다.", - "c_cpp.debuggers.pipeTransport.quoteArgs.description": "If the pipeProgram's individual arguments contain characters (such as spaces or tabs), should it be quoted? If 'false', the debugger command will no longer be automatically quoted. \r\nDefault is 'true'.", + "c_cpp.debuggers.pipeTransport.quoteArgs.description": "pipeProgram의 개별 인수가 문자(예: 공백 또는 탭)를 포함하는 경우 따옴표를 붙여야 하나요? 'false'인 경우 디버거 명령은 더 이상 자동으로 따옴표를 붙이지 않습니다. \r\n기본값은 'true'입니다.", "c_cpp.debuggers.logging.description": "메시지 유형을 디버그 콘솔에 기록할지 여부를 결정하는 선택적 플래그입니다.", "c_cpp.debuggers.logging.exceptions.description": "예외 메시지를 디버그 콘솔에 기록할지 여부를 결정하는 선택적 플래그입니다. 기본값은 true입니다.", "c_cpp.debuggers.logging.moduleLoad.description": "모듈 로드 이벤트를 디버그 콘솔에 기록할지 여부를 결정하는 선택적 플래그입니다. 기본값은 true입니다.", @@ -208,7 +208,7 @@ "c_cpp.debuggers.cppdbg.visualizerFile.description": "이 프로세스를 디버그할 때 사용할 .natvis 파일입니다. 이 옵션은 GDB 자동 서식 지정과 호환되지 않습니다. 이 설정을 사용하는 경우 \"showDisplayString\"을 참조하세요.", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "이 프로세스를 디버그할 때 사용할 .natvis 파일입니다.", "c_cpp.debuggers.showDisplayString.description": "visualizerFile을 지정하면 showDisplayString은 표시 문자열을 사용하도록 설정합니다. 이 옵션을 켜면 디버그하는 동안 성능이 저하될 수 있습니다.", - "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", + "c_cpp.debuggers.environment.description": "프로그램의 환경에 추가할 환경 변수입니다. 예: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", "c_cpp.debuggers.envFile.description": "환경 변수 정의를 포함하는 파일의 절대 경로입니다. 이 파일에는 줄마다 등호로 구분된 키 값 쌍이 있습니다(예: 키=값).", "c_cpp.debuggers.additionalSOLibSearchPath.description": ".so 파일 검색에 사용할 디렉터리의 세미콜론으로 구분된 목록입니다(예: \"c:\\dir1;c:\\dir2\").", "c_cpp.debuggers.MIMode.description": "MIDebugEngine이 연결할 콘솔 디버거를 나타냅니다. 허용되는 값은 \"gdb\" \"lldb\"입니다.", diff --git a/Extension/i18n/plk/package.i18n.json b/Extension/i18n/plk/package.i18n.json index 8233efae2a..ff0326deb5 100644 --- a/Extension/i18n/plk/package.i18n.json +++ b/Extension/i18n/plk/package.i18n.json @@ -183,7 +183,7 @@ "c_cpp.debuggers.pipeTransport.pipeProgram.description": "Polecenie w pełni kwalifikowanego potoku do wykonania.", "c_cpp.debuggers.pipeTransport.pipeArgs.description": "Argumenty wiersza polecenia przekazywane do programu potoku w celu skonfigurowania połączenia.", "c_cpp.debuggers.pipeTransport.pipeEnv.description": "Zmienne środowiskowe przekazywane do programu potoku.", - "c_cpp.debuggers.pipeTransport.quoteArgs.description": "If the pipeProgram's individual arguments contain characters (such as spaces or tabs), should it be quoted? If 'false', the debugger command will no longer be automatically quoted. \r\nDefault is 'true'.", + "c_cpp.debuggers.pipeTransport.quoteArgs.description": "Jeśli poszczególne argumenty elementu pipeProgram zawierają znaki (takie jak spacje lub tabulatory), czy mają być umieszczane w cudzysłowach? W przypadku wartości \"false\" polecenie debugera nie będzie już automatycznie umieszczane w cudzysłowach. \r\nWartość domyślna to „true”.", "c_cpp.debuggers.logging.description": "Opcjonalne flagi określające, które typy komunikatów powinny być rejestrowane w konsoli debugowania.", "c_cpp.debuggers.logging.exceptions.description": "Opcjonalna flaga określająca, czy komunikaty o wyjątkach powinny być rejestrowane w konsoli debugowania. Wartość domyślna to false.", "c_cpp.debuggers.logging.moduleLoad.description": "Opcjonalna flaga określająca, czy zdarzenia ładowania modułów powinny być rejestrowane w konsoli debugowania. Wartość domyślna to false.", @@ -208,7 +208,7 @@ "c_cpp.debuggers.cppdbg.visualizerFile.description": "Plik NATVIS, który ma być używany podczas debugowania tego procesu. Ta opcja jest niezgodna z formatowaniem kodu debugera GDB. W przypadku używania tego ustawienia zapoznaj się również z właściwością „showDisplayString”.", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "Plik NATVIS, który ma być używany podczas debugowania tego procesu.", "c_cpp.debuggers.showDisplayString.description": "Gdy element visualizerFile jest określony, opcja showDisplayString spowoduje włączenie ciągu wyświetlanego. Włączenie tej opcji może spowodować zmniejszenie wydajności podczas debugowania.", - "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", + "c_cpp.debuggers.environment.description": "Zmienne środowiskowe do dodania do środowiska dla programu. Przykład: [{\"name\": \"config\", \"value\": \"debug\"}], nie [{\"config\": \"debug\"}].", "c_cpp.debuggers.envFile.description": "Ścieżka bezwzględna do pliku zawierającego definicje zmiennych środowiskowych. Ten plik w każdym wierszu zawiera parę klucz-wartość oddzieloną znakiem równości. Przykład: KLUCZ=WARTOŚĆ", "c_cpp.debuggers.additionalSOLibSearchPath.description": "Rozdzielana średnikami lista katalogów, w których mają być wyszukiwanie pliki SO. Przykład: „c:\\dir1;c:\\dir2”.", "c_cpp.debuggers.MIMode.description": "Wskazuje debuger konsoli, z którym połączy się aparat MIDebugEngine. Dozwolone wartości to „gdb” i „lldb”.", diff --git a/Extension/i18n/ptb/package.i18n.json b/Extension/i18n/ptb/package.i18n.json index ee2b4ef97e..32bffd8596 100644 --- a/Extension/i18n/ptb/package.i18n.json +++ b/Extension/i18n/ptb/package.i18n.json @@ -183,7 +183,7 @@ "c_cpp.debuggers.pipeTransport.pipeProgram.description": "O comando do pipe totalmente qualificado para executar.", "c_cpp.debuggers.pipeTransport.pipeArgs.description": "Argumentos da linha de comando passados para o programa do pipe para configurar a conexão.", "c_cpp.debuggers.pipeTransport.pipeEnv.description": "Variáveis de ambiente passadas para o programa do pipe.", - "c_cpp.debuggers.pipeTransport.quoteArgs.description": "If the pipeProgram's individual arguments contain characters (such as spaces or tabs), should it be quoted? If 'false', the debugger command will no longer be automatically quoted. \r\nDefault is 'true'.", + "c_cpp.debuggers.pipeTransport.quoteArgs.description": "Se os argumentos individuais do pipeProgram contiverem caracteres (como espaços ou tabulações), ele deverão ser colocado entre aspas? Se for 'Falso', o comando debugger não será mais colocado automaticamente entre aspas. \r\nO padrão é 'Verdadeiro'.", "c_cpp.debuggers.logging.description": "Sinalizadores opcionais para determinar quais tipos de mensagens devem ser registrados no Console de Depuração.", "c_cpp.debuggers.logging.exceptions.description": "Sinalizador opcional para determinar se as mensagens de exceção devem ser registradas no Console de Depuração. Usa true como padrão.", "c_cpp.debuggers.logging.moduleLoad.description": "Sinalizador opcional para determinar se os eventos de carregamento do módulo devem ser registrados no Console de Depuração. Usa true como padrão.", @@ -208,7 +208,7 @@ "c_cpp.debuggers.cppdbg.visualizerFile.description": "arquivo .natvis a ser usado durante a depuração deste processo. Esta opção não é compatível com a reformatação automática GDB. Além disso, confira \"showDisplayString\" se estiver usando esta configuração.", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "arquivo .natvis a ser usado durante a depuração deste processo.", "c_cpp.debuggers.showDisplayString.description": "Quando um visualizerFile é especificado, showDisplayString habilita a cadeia de caracteres de exibição. Ativar essa opção pode causar um desempenho mais lento durante a depuração.", - "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", + "c_cpp.debuggers.environment.description": "Variáveis de ambiente para adicionar ao ambiente para o programa. Por exemplo: [ { \"name\": \"config\", \"value\": \"Debug\" } ], não [ { \"config\": \"Debug\" } ].", "c_cpp.debuggers.envFile.description": "Caminho absoluto para um arquivo que contém as definições de variável de ambiente. Este arquivo tem pares chave-valor separados por um sinal de igual por linha. Por exemplo, CHAVE=VALOR", "c_cpp.debuggers.additionalSOLibSearchPath.description": "Lista separada por ponto e vírgula de diretórios a serem usados para pesquisar arquivos .so. Exemplo: \"c:\\dir1;c:\\dir2\".", "c_cpp.debuggers.MIMode.description": "Indica o depurador de console ao qual o MIDebugEngine será conectado. Os valores permitidos são \"gdb\" \"lldb\".", diff --git a/Extension/i18n/rus/package.i18n.json b/Extension/i18n/rus/package.i18n.json index 90ed56287a..02b1b39d8f 100644 --- a/Extension/i18n/rus/package.i18n.json +++ b/Extension/i18n/rus/package.i18n.json @@ -183,7 +183,7 @@ "c_cpp.debuggers.pipeTransport.pipeProgram.description": "Полная команда канала для выполнения.", "c_cpp.debuggers.pipeTransport.pipeArgs.description": "Аргументы командной строки, переданные в программу канала для настройки подключения.", "c_cpp.debuggers.pipeTransport.pipeEnv.description": "Переменные среды, переданные в программу канала.", - "c_cpp.debuggers.pipeTransport.quoteArgs.description": "If the pipeProgram's individual arguments contain characters (such as spaces or tabs), should it be quoted? If 'false', the debugger command will no longer be automatically quoted. \r\nDefault is 'true'.", + "c_cpp.debuggers.pipeTransport.quoteArgs.description": "Определяет, должны ли быть заключены в кавычки отдельные аргументы pipeProgram, если эти аргументы содержат символы (такие как пробелы или символы табуляции). Если задано значение \"false\", команда отладчика больше не будет автоматически заключаться в кавычки. \r\nЗначение по умолчанию — \"true\".", "c_cpp.debuggers.logging.description": "Необязательные флаги для определения типов сообщений, регистрируемых в консоли отладки.", "c_cpp.debuggers.logging.exceptions.description": "Необязательный флаг, определяющий, следует ли регистрировать сообщения об исключениях в консоли отладки. По умолчанию принимает значение true.", "c_cpp.debuggers.logging.moduleLoad.description": "Необязательный флаг, определяющий, следует ли регистрировать события загрузки модулей в консоли отладки. По умолчанию принимает значение true.", @@ -208,7 +208,7 @@ "c_cpp.debuggers.cppdbg.visualizerFile.description": "Файл NATVIS, используемый при отладке этого процесса. Этот параметр несовместим с автоматическим форматированием GDB. Если этот параметр используется, см. также описание \"showDisplayString\".", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "Файл NATVIS, используемый при отладке этого процесса.", "c_cpp.debuggers.showDisplayString.description": "Если указано значение visualizerFile, showDisplayString включит отображаемую строку. Включение этого параметра может привести к снижению производительности во время отладки.", - "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", + "c_cpp.debuggers.environment.description": "Переменные среды для добавления в среду для программы. Пример: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", "c_cpp.debuggers.envFile.description": "Абсолютный путь к файлу, содержащему определения переменных среды. Этот файл содержит пары \"ключ-значение\", разделенные знаком равенства и разнесенные по строкам. Например, \"ключ=значение\"", "c_cpp.debuggers.additionalSOLibSearchPath.description": "Список каталогов, разделенных точкой с запятой, который следует использовать для поиска файлов SO. Пример: \"c:\\каталог_1;c:\\каталог_2\".", "c_cpp.debuggers.MIMode.description": "Указывает отладчик консоли, к которому подключится MIDebugEngine. Допустимые значения: \"gdb\" \"lldb\".", diff --git a/Extension/i18n/trk/package.i18n.json b/Extension/i18n/trk/package.i18n.json index 5babbfcaf2..ea4ab6b163 100644 --- a/Extension/i18n/trk/package.i18n.json +++ b/Extension/i18n/trk/package.i18n.json @@ -183,7 +183,7 @@ "c_cpp.debuggers.pipeTransport.pipeProgram.description": "Çalıştırılacak tam kanal komutu.", "c_cpp.debuggers.pipeTransport.pipeArgs.description": "Bağlantıyı yapılandırmak için kanal programına geçirilen komut satırı bağımsız değişkenleri.", "c_cpp.debuggers.pipeTransport.pipeEnv.description": "Kanal programına geçirilen ortam değişkenleri.", - "c_cpp.debuggers.pipeTransport.quoteArgs.description": "If the pipeProgram's individual arguments contain characters (such as spaces or tabs), should it be quoted? If 'false', the debugger command will no longer be automatically quoted. \r\nDefault is 'true'.", + "c_cpp.debuggers.pipeTransport.quoteArgs.description": "pipeProgram'a ait tek tek bağımsız değişkenler, boşluk veya sekme gibi karakterler içeriyorsa bunlar tırnak içine alınmalı mı? 'False' olarak ayarlanırsa hata ayıklayıcısı komutu artık otomatik olarak tırnak içine alınmaz. \r\nVarsayılan değer: 'true'.", "c_cpp.debuggers.logging.description": "Hata Ayıklama Konsoluna ne tür iletilerin kaydedilmesi gerektiğini belirleyen isteğe bağlı bayraklar.", "c_cpp.debuggers.logging.exceptions.description": "Özel durum iletilerinin Hata Ayıklama Konsoluna kaydedilmesi gerekip gerekmediğini belirleyen isteğe bağlı bayrak. Varsayılan olarak true değerini alır.", "c_cpp.debuggers.logging.moduleLoad.description": "Modül yükleme olaylarının Hata Ayıklama Konsoluna kaydedilmesi gerekip gerekmediğini belirleyen isteğe bağlı bayrak. Varsayılan olarak true değerini alır.", @@ -208,7 +208,7 @@ "c_cpp.debuggers.cppdbg.visualizerFile.description": "Bu işlemde hata ayıklanırken kullanılacak .natvis dosyası. Bu seçenek, GDB düzgün yazdırma ile uyumlu değil. Lütfen bu ayar kullanılıyorsa ayrıca bkz: \"showDisplayString\".", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "Bu işlemde hata ayıklanırken kullanılacak .natvis dosyası.", "c_cpp.debuggers.showDisplayString.description": "Bir visualizerFile belirtildiğinde showDisplayString, görünen dizeyi etkinleştirir. Bu seçeneğin etkinleştirilmesi hata ayıklama sırasında daha düşük performansa neden olabilir.", - "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", + "c_cpp.debuggers.environment.description": "Program ortamına eklenecek ortam değişkenleri. Örnek: [ { \"name\": \"config\", \"value\": \"Debug\" } ], [ { \"config\": \"Debug\" } ] değil.", "c_cpp.debuggers.envFile.description": "Ortam değişkeni tanımlarını içeren bir dosyanın mutlak yolu. Bu dosyada, satır başına eşittir işaretiyle ayrılmış anahtar değer çiftleri bulunur. Ör. ANAHTAR=DEĞER", "c_cpp.debuggers.additionalSOLibSearchPath.description": ".so dosyalarını aramak için kullanılacak dizinlerin noktalı virgülle ayrılmış listesi. Örnek: \"c:\\dizin1;c:\\dizin2\".", "c_cpp.debuggers.MIMode.description": "MIDebugEngine'in bağlanacağı konsol hata ayıklayıcısını belirtir. İzin verilen değerler: \"gdb\" \"lldb\".", From 060c14117ce63529efb1b14a3c66d61307945fff Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Thu, 6 May 2021 14:50:39 -0700 Subject: [PATCH 44/48] Update hosted-git-info. (#7474) --- Extension/package.json | 3 ++- Extension/yarn.lock | 10 ++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Extension/package.json b/Extension/package.json index 722ce5bfd1..ac53e2e338 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -2510,7 +2510,8 @@ "resolutions": { "**/mkdirp/minimist": "^0.2.1", "yargs-parser": "^15.0.1", - "y18n": "^5.0.5" + "y18n": "^5.0.5", + "hosted-git-info": "^3.0.8" }, "runtimeDependencies": [ { diff --git a/Extension/yarn.lock b/Extension/yarn.lock index 3c716ca0ce..5dfb241e16 100644 --- a/Extension/yarn.lock +++ b/Extension/yarn.lock @@ -2843,10 +2843,12 @@ homedir-polyfill@^1.0.1: dependencies: parse-passwd "^1.0.0" -hosted-git-info@^2.1.4: - version "2.8.5" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c" - integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg== +hosted-git-info@^2.1.4, hosted-git-info@^3.0.8: + version "3.0.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d" + integrity sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw== + dependencies: + lru-cache "^6.0.0" http-proxy-agent@^2.1.0: version "2.1.0" From b89e45a4b66a4dab7cb5dad20f9dad9ee9622d8a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 6 May 2021 15:05:44 -0700 Subject: [PATCH 45/48] Bump lodash from 4.17.20 to 4.17.21 in /.github/actions (#7475) Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/actions/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/actions/package-lock.json b/.github/actions/package-lock.json index 3f3639fd52..ce5f571039 100644 --- a/.github/actions/package-lock.json +++ b/.github/actions/package-lock.json @@ -940,9 +940,9 @@ } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "lodash.get": { From 5297166d4f0124a97d16b0e81c75f3f36d89c4cf Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson <49173979+Colengms@users.noreply.github.com> Date: Thu, 6 May 2021 16:31:24 -0700 Subject: [PATCH 46/48] Use CancellationError to avoid logging of cancels as errors (#7477) --- .../src/LanguageServer/Providers/foldingRangeProvider.ts | 2 +- .../src/LanguageServer/Providers/semanticTokensProvider.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Extension/src/LanguageServer/Providers/foldingRangeProvider.ts b/Extension/src/LanguageServer/Providers/foldingRangeProvider.ts index bdd2bdbfa9..49d0286bc8 100644 --- a/Extension/src/LanguageServer/Providers/foldingRangeProvider.ts +++ b/Extension/src/LanguageServer/Providers/foldingRangeProvider.ts @@ -24,7 +24,7 @@ export class FoldingRangeProvider implements vscode.FoldingRangeProvider { token.onCancellationRequested(e => this.client.abortRequest(id)); const ranges: GetFoldingRangesResult = await this.client.languageClient.sendRequest(GetFoldingRangesRequest, params); if (ranges.canceled) { - throw new Error('Request for providing folding ranges is cancelled.'); + throw new vscode.CancellationError(); } else { const result: vscode.FoldingRange[] = []; ranges.ranges.forEach((r) => { diff --git a/Extension/src/LanguageServer/Providers/semanticTokensProvider.ts b/Extension/src/LanguageServer/Providers/semanticTokensProvider.ts index 4d8f1d3a2d..b964078003 100644 --- a/Extension/src/LanguageServer/Providers/semanticTokensProvider.ts +++ b/Extension/src/LanguageServer/Providers/semanticTokensProvider.ts @@ -32,10 +32,10 @@ export class SemanticTokensProvider implements vscode.DocumentSemanticTokensProv }; const tokensResult: GetSemanticTokensResult = await this.client.languageClient.sendRequest(GetSemanticTokensRequest, params); if (tokensResult.canceled) { - throw new Error('Request for providing semantic tokens is cancelled.'); + throw new vscode.CancellationError(); } else { if (tokensResult.fileVersion !== openFileVersions.get(uriString)) { - throw new Error('The semantic tokens are not related to the current version of the document.'); + throw new vscode.CancellationError(); } else { const builder: vscode.SemanticTokensBuilder = new vscode.SemanticTokensBuilder(this.client.semanticTokensLegend); tokensResult.tokens.forEach((token) => { From 42fe8076e69221cec848942a4379950d79776433 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Thu, 6 May 2021 18:35:25 -0700 Subject: [PATCH 47/48] Update changelog for 1.4.0-insiders (#7476) * Update changelog. --- Extension/CHANGELOG.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index 35a18dd429..087b02ed09 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -1,5 +1,30 @@ # C/C++ for Visual Studio Code Change Log +## Version 1.4.0-insiders: May 10, 2021 +### Enhancements +* Update to clang-format 12. [#6434](https://github.com/microsoft/vscode-cpptools/issues/6434) +* Fix file:line path for $FILEPOS [#7193](https://github.com/microsoft/vscode-cpptools/issues/7193) + * [#1124](https://github.com/microsoft/MIEngine/pull/1124) +* Add `stopAtConnect` and `hardwareBreakpoints` launch options [PR #7449](https://github.com/microsoft/vscode-cpptools/pull/7449) + * `stopAtConnect` stops the debugger on connection to a remote target [PR MIEngine#1109](https://github.com/microsoft/MIEngine/pull/1109) + * `hardwareBreakpoints` controls usage and number of remote hardware breakpoints [PR MIEngine#1128](https://github.com/microsoft/MIEngine/pull/1128) +* Add support for loading Concord extensions to the cppvsdbg debug adapter (see [documentation](https://github.com/microsoft/ConcordExtensibilitySamples/wiki/Support-for-VS-Code-cppvsdbg-Scenarios) for more information) +* Add support for exception conditions to cppvsdbg (see [documentation](https://aka.ms/VSCode-Cpp-ExceptionSettings) for more information) + +### Bug Fixes +* Fix IntelliSense configuration with cl.exe compiler args `/external:I`, `/Zc:preprocessor`, and others. [#4980](https://github.com/microsoft/vscode-cpptools/issues/4980), [#6531](https://github.com/microsoft/vscode-cpptools/issues/6531), [#7259](https://github.com/microsoft/vscode-cpptools/issues/7259) +* Fix provider failed error logging. [#5487](https://github.com/microsoft/vscode-cpptools/issues/5487) +* Fix -idirafter directories being included too early. [#7129](https://github.com/microsoft/vscode-cpptools/issues/7129) +* Filter out C++ std when querying the compiler as C (and vice versa). [#7269](https://github.com/microsoft/vscode-cpptools/issues/7269) +* Fix files.exclude ending with `/folder/**` not excluding `/folder`. [#7331](https://github.com/microsoft/vscode-cpptools/issues/7331) +* Fix VS Code UI freezing when hovering over very large literals. [#7334](https://github.com/microsoft/vscode-cpptools/issues/7334) +* Fix clang-format formatting bug when new lines are removed. [#7360](https://github.com/microsoft/vscode-cpptools/issues/7360) +* Change default cwd in launch.json to `${fileDirname}`. [#7362](https://github.com/microsoft/vscode-cpptools/issues/7362) + * Syed Ahmad (@HackintoshwithUbuntu) [PR #7363](https://github.com/microsoft/vscode-cpptools/pull/7363) +* Fix a crash on Linux with a `/**` includePath. +* Fix the compile commands entry not being used when -Werror is used. [#7388](https://github.com/microsoft/vscode-cpptools/issues/7388) +* Fix some potential race conditions during vsix installation. [#7405](https://github.com/microsoft/vscode-cpptools/issues/7405) + ## Version 1.3.1: April 19, 2021 ### Bug Fixes * Fix extension not activating when `/.vscode/c_cpp_properties.json` exists but no C/C++ file is open. [#7344](https://github.com/microsoft/vscode-cpptools/issues/7344) From 53a3864fdc30348a205b96d7e7393248ad67f8d3 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Thu, 6 May 2021 18:46:06 -0700 Subject: [PATCH 48/48] Update version. --- Extension/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Extension/package.json b/Extension/package.json index ac53e2e338..d9208d90aa 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -2,7 +2,7 @@ "name": "cpptools", "displayName": "C/C++", "description": "C/C++ IntelliSense, debugging, and code browsing.", - "version": "1.3.1-main", + "version": "1.4.0-main", "publisher": "ms-vscode", "icon": "LanguageCCPP_color_128x.png", "readme": "README.md",