diff --git a/src/Features/LanguageServer/Protocol/Features/Options/CompletionOptionsStorage.cs b/src/Features/LanguageServer/Protocol/Features/Options/CompletionOptionsStorage.cs index 3f243505a1250..5dab2bcbee6cd 100644 --- a/src/Features/LanguageServer/Protocol/Features/Options/CompletionOptionsStorage.cs +++ b/src/Features/LanguageServer/Protocol/Features/Options/CompletionOptionsStorage.cs @@ -4,6 +4,7 @@ using Microsoft.CodeAnalysis.CodeStyle; using Microsoft.CodeAnalysis.Options; +using Roslyn.Utilities; namespace Microsoft.CodeAnalysis.Completion; @@ -14,7 +15,14 @@ public static CompletionOptions GetCompletionOptions(this IGlobalOptionService o { TriggerOnTyping = options.GetOption(TriggerOnTyping, language), TriggerOnTypingLetters = options.GetOption(TriggerOnTypingLetters, language), - TriggerOnDeletion = options.GetOption(TriggerOnDeletion, language), + TriggerOnDeletion = language switch + { + LanguageNames.CSharp => options.GetOption(TriggerOnTypingLetters, language) && options.GetOption(TriggerOnDeletion, language) is true, + // If the option is null (i.e. default) or 'true', then we want to trigger completion. + // Only if the option is false do we not want to trigger. + LanguageNames.VisualBasic => options.GetOption(TriggerOnDeletion, language) is not false, + _ => throw ExceptionUtilities.Unreachable() + }, TriggerInArgumentLists = options.GetOption(TriggerInArgumentLists, language), EnterKeyBehavior = options.GetOption(EnterKeyBehavior, language), SnippetsBehavior = options.GetOption(SnippetsBehavior, language), diff --git a/src/VisualStudio/CSharp/Impl/CSharpPackage.cs b/src/VisualStudio/CSharp/Impl/CSharpPackage.cs index 6e9feeaa919bc..78177323fcaa7 100644 --- a/src/VisualStudio/CSharp/Impl/CSharpPackage.cs +++ b/src/VisualStudio/CSharp/Impl/CSharpPackage.cs @@ -15,10 +15,8 @@ using Microsoft.VisualStudio.LanguageServices.CSharp.ObjectBrowser; using Microsoft.VisualStudio.LanguageServices.CSharp.ProjectSystemShim; using Microsoft.VisualStudio.LanguageServices.CSharp.ProjectSystemShim.Interop; -using Microsoft.VisualStudio.LanguageServices.Implementation; using Microsoft.VisualStudio.LanguageServices.Implementation.LanguageService; using Microsoft.VisualStudio.LanguageServices.Implementation.ProjectSystem; -using Microsoft.VisualStudio.LanguageServices.Utilities; using Microsoft.VisualStudio.Shell; using Microsoft.VisualStudio.Shell.Interop; using Task = System.Threading.Tasks.Task; diff --git a/src/VisualStudio/CSharp/Impl/Options/IntelliSenseOptionPageControl.xaml.cs b/src/VisualStudio/CSharp/Impl/Options/IntelliSenseOptionPageControl.xaml.cs index 683c0d5ac0c51..6fde4f0670e0e 100644 --- a/src/VisualStudio/CSharp/Impl/Options/IntelliSenseOptionPageControl.xaml.cs +++ b/src/VisualStudio/CSharp/Impl/Options/IntelliSenseOptionPageControl.xaml.cs @@ -27,7 +27,6 @@ public IntelliSenseOptionPageControl(OptionStore optionStore) : base(optionStore BindToOption(Show_completion_item_filters, CompletionViewOptionsStorage.ShowCompletionItemFilters, LanguageNames.CSharp); BindToOption(Automatically_complete_statement_on_semicolon, CompleteStatementOptionsStorage.AutomaticallyCompleteStatementOnSemicolon); - BindToOption(Never_include_snippets, CompletionOptionsStorage.SnippetsBehavior, SnippetsRule.NeverInclude, LanguageNames.CSharp); BindToOption(Always_include_snippets, CompletionOptionsStorage.SnippetsBehavior, SnippetsRule.AlwaysInclude, LanguageNames.CSharp); BindToOption(Include_snippets_when_question_Tab_is_typed_after_an_identifier, CompletionOptionsStorage.SnippetsBehavior, SnippetsRule.IncludeAfterTypingIdentifierQuestionTab, LanguageNames.CSharp); diff --git a/src/VisualStudio/CSharp/Impl/VSPackage.resx b/src/VisualStudio/CSharp/Impl/VSPackage.resx index 9675fa302a40f..84ca3688187d7 100644 --- a/src/VisualStudio/CSharp/Impl/VSPackage.resx +++ b/src/VisualStudio/CSharp/Impl/VSPackage.resx @@ -363,4 +363,25 @@ Show items from unimported namespaces (experimental); An empty C# script file. + + Always add new line on enter + + + Always include snippets + + + Default + + + Include snippets when Tab is typed after an identifier + + + Never add new line on enter + + + Never include snippets + + + Only add new line on enter after end of fully typed word + \ No newline at end of file diff --git a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.cs.xlf b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.cs.xlf index e14de190dc86a..53303b83f12f3 100644 --- a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.cs.xlf +++ b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.cs.xlf @@ -410,11 +410,46 @@ Zobrazit položky z neimportovaných oborů názvů (experimentální); Komponenty C# použité v IDE. V závislosti na typu vašeho projektu a nastavení se může použít jiná verze kompilátoru. Help > About + + Always add new line on enter + Always add new line on enter + + + + Always include snippets + Always include snippets + + An empty C# script file. Prázdný soubor skriptu C# + + Default + Default + + + + Include snippets when Tab is typed after an identifier + Include snippets when Tab is typed after an identifier + + + + Never add new line on enter + Never add new line on enter + + + + Never include snippets + Never include snippets + + + + Only add new line on enter after end of fully typed word + Only add new line on enter after end of fully typed word + + Visual C# Script Skript Visual C# diff --git a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.de.xlf b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.de.xlf index cbf0b8f641337..67fc6d1f5377f 100644 --- a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.de.xlf +++ b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.de.xlf @@ -410,11 +410,46 @@ Elemente aus nicht importierten Namespaces anzeigen (experimentell); C#-Komponenten, die in der IDE verwendet werden. Abhängig von Ihrem Projekttyp und den zugehörigen Einstellungen kann eine andere Version des Compilers verwendet werden. Help > About + + Always add new line on enter + Always add new line on enter + + + + Always include snippets + Always include snippets + + An empty C# script file. Eine leere C#-Skriptdatei. + + Default + Default + + + + Include snippets when Tab is typed after an identifier + Include snippets when Tab is typed after an identifier + + + + Never add new line on enter + Never add new line on enter + + + + Never include snippets + Never include snippets + + + + Only add new line on enter after end of fully typed word + Only add new line on enter after end of fully typed word + + Visual C# Script Visual C#-Skript diff --git a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.es.xlf b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.es.xlf index d9a3dd5b7144e..1ca635f36fe1c 100644 --- a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.es.xlf +++ b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.es.xlf @@ -410,11 +410,46 @@ Mostrar elementos de espacios de nombres no importados (experimental); Los componentes de C# utilizados en el IDE. En función del tipo de proyecto y la configuración, se podría utilizar una versión diferente del compilador. Help > About + + Always add new line on enter + Always add new line on enter + + + + Always include snippets + Always include snippets + + An empty C# script file. Archivo de script de C# vacío. + + Default + Default + + + + Include snippets when Tab is typed after an identifier + Include snippets when Tab is typed after an identifier + + + + Never add new line on enter + Never add new line on enter + + + + Never include snippets + Never include snippets + + + + Only add new line on enter after end of fully typed word + Only add new line on enter after end of fully typed word + + Visual C# Script Script de Visual C# diff --git a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.fr.xlf b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.fr.xlf index ccbcc30835826..38b8199499681 100644 --- a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.fr.xlf +++ b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.fr.xlf @@ -410,11 +410,46 @@ Afficher les éléments des espaces de noms qui ne sont pas importés (expérime Composants C# utilisés dans l'IDE. Selon votre type de projet et vos paramètres, une version différente du compilateur peut être utilisée. Help > About + + Always add new line on enter + Always add new line on enter + + + + Always include snippets + Always include snippets + + An empty C# script file. Fichier de script C# vide. + + Default + Default + + + + Include snippets when Tab is typed after an identifier + Include snippets when Tab is typed after an identifier + + + + Never add new line on enter + Never add new line on enter + + + + Never include snippets + Never include snippets + + + + Only add new line on enter after end of fully typed word + Only add new line on enter after end of fully typed word + + Visual C# Script Script Visual C# diff --git a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.it.xlf b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.it.xlf index 403ea8b6092ce..cc67c942f5d3b 100644 --- a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.it.xlf +++ b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.it.xlf @@ -410,11 +410,46 @@ Mostra elementi da spazi dei nomi non importati (sperimentale); Componenti di C# usati nell'IDE. A seconda del tipo e delle impostazioni del processo, è possibile che venga usata una versione diversa del compilatore. Help > About + + Always add new line on enter + Always add new line on enter + + + + Always include snippets + Always include snippets + + An empty C# script file. File di script C# vuoto. + + Default + Default + + + + Include snippets when Tab is typed after an identifier + Include snippets when Tab is typed after an identifier + + + + Never add new line on enter + Never add new line on enter + + + + Never include snippets + Never include snippets + + + + Only add new line on enter after end of fully typed word + Only add new line on enter after end of fully typed word + + Visual C# Script Script Visual C# diff --git a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.ja.xlf b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.ja.xlf index 07d35d0c7d099..4230d3f9bcefc 100644 --- a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.ja.xlf +++ b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.ja.xlf @@ -410,11 +410,46 @@ Enter キーで常に新しい行を追加する; IDE で使用する C# コンポーネント。プロジェクトの種類や設定に応じて、異なるバージョンのコンパイラを使用できます。 Help > About + + Always add new line on enter + Always add new line on enter + + + + Always include snippets + Always include snippets + + An empty C# script file. 空の C# スクリプト ファイルです。 + + Default + Default + + + + Include snippets when Tab is typed after an identifier + Include snippets when Tab is typed after an identifier + + + + Never add new line on enter + Never add new line on enter + + + + Never include snippets + Never include snippets + + + + Only add new line on enter after end of fully typed word + Only add new line on enter after end of fully typed word + + Visual C# Script Visual C# スクリプト diff --git a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.ko.xlf b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.ko.xlf index b8dfe3ce843b5..4460d043b7b27 100644 --- a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.ko.xlf +++ b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.ko.xlf @@ -410,11 +410,46 @@ Show items from unimported namespaces (experimental); IDE에서 사용되는 C# 구성 요소입니다. 프로젝트 형식 및 설정에 따라 다른 버전의 컴파일러를 사용할 수 있습니다. Help > About + + Always add new line on enter + Always add new line on enter + + + + Always include snippets + Always include snippets + + An empty C# script file. 비어 있는 C# 스크립트 파일입니다. + + Default + Default + + + + Include snippets when Tab is typed after an identifier + Include snippets when Tab is typed after an identifier + + + + Never add new line on enter + Never add new line on enter + + + + Never include snippets + Never include snippets + + + + Only add new line on enter after end of fully typed word + Only add new line on enter after end of fully typed word + + Visual C# Script Visual C# 스크립트 diff --git a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.pl.xlf b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.pl.xlf index c2dccb5b52ca1..19ea6c6762b82 100644 --- a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.pl.xlf +++ b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.pl.xlf @@ -409,11 +409,46 @@ Pokaż elementy z niezaimportowanych przestrzeni nazw (funkcja eksperymentalna); Składniki języka C# używane w środowisku IDE. Zależnie od typu projektu i jego ustawień może być używana inna wersja kompilatora. Help > About + + Always add new line on enter + Always add new line on enter + + + + Always include snippets + Always include snippets + + An empty C# script file. Pusty plik skryptu C#. + + Default + Default + + + + Include snippets when Tab is typed after an identifier + Include snippets when Tab is typed after an identifier + + + + Never add new line on enter + Never add new line on enter + + + + Never include snippets + Never include snippets + + + + Only add new line on enter after end of fully typed word + Only add new line on enter after end of fully typed word + + Visual C# Script Skrypt Visual C# Script diff --git a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.pt-BR.xlf b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.pt-BR.xlf index 8b9bcd7da5bc7..c8366eb29e386 100644 --- a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.pt-BR.xlf +++ b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.pt-BR.xlf @@ -410,11 +410,46 @@ Mostrar itens de namespaces não importados (experimental); Componentes de C# usados no IDE. Dependendo do seu tipo de projeto e configurações, uma versão diferente do compilador poderá ser usada. Help > About + + Always add new line on enter + Always add new line on enter + + + + Always include snippets + Always include snippets + + An empty C# script file. Um arquivo de script C# vazio. + + Default + Default + + + + Include snippets when Tab is typed after an identifier + Include snippets when Tab is typed after an identifier + + + + Never add new line on enter + Never add new line on enter + + + + Never include snippets + Never include snippets + + + + Only add new line on enter after end of fully typed word + Only add new line on enter after end of fully typed word + + Visual C# Script Script do Visual C# diff --git a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.ru.xlf b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.ru.xlf index 61817db61e8b0..2e4896f0c8b04 100644 --- a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.ru.xlf +++ b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.ru.xlf @@ -410,11 +410,46 @@ Show items from unimported namespaces (experimental); Компоненты C#, используемые в интегрированной среде разработки. В зависимости от типа и настроек проекта могут использоваться различные версии компилятора. Help > About + + Always add new line on enter + Always add new line on enter + + + + Always include snippets + Always include snippets + + An empty C# script file. Пустой файл скрипта C#. + + Default + Default + + + + Include snippets when Tab is typed after an identifier + Include snippets when Tab is typed after an identifier + + + + Never add new line on enter + Never add new line on enter + + + + Never include snippets + Never include snippets + + + + Only add new line on enter after end of fully typed word + Only add new line on enter after end of fully typed word + + Visual C# Script Скрипт Visual C# diff --git a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.tr.xlf b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.tr.xlf index 7a7cec52a10e5..31e976bd18239 100644 --- a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.tr.xlf +++ b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.tr.xlf @@ -410,11 +410,46 @@ Ad önerilerini göster; IDE’de kullanılan C# bileşenleri. Projenizin türüne ve ayarlarına bağlı olarak, derleyicinin farklı bir sürümü kullanılabilir. Help > About + + Always add new line on enter + Always add new line on enter + + + + Always include snippets + Always include snippets + + An empty C# script file. Boş C# betik dosyası. + + Default + Default + + + + Include snippets when Tab is typed after an identifier + Include snippets when Tab is typed after an identifier + + + + Never add new line on enter + Never add new line on enter + + + + Never include snippets + Never include snippets + + + + Only add new line on enter after end of fully typed word + Only add new line on enter after end of fully typed word + + Visual C# Script Visual C# Betiği diff --git a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.zh-Hans.xlf b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.zh-Hans.xlf index f56c59486fa8f..a7b7bc4b0976c 100644 --- a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.zh-Hans.xlf +++ b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.zh-Hans.xlf @@ -410,11 +410,46 @@ Show items from unimported namespaces (experimental); IDE 中使用的 C# 组件。可能使用其他版本的编译器,具体取决于你的项目类型和设置。 Help > About + + Always add new line on enter + Always add new line on enter + + + + Always include snippets + Always include snippets + + An empty C# script file. 一个空的 C# 脚本文件。 + + Default + Default + + + + Include snippets when Tab is typed after an identifier + Include snippets when Tab is typed after an identifier + + + + Never add new line on enter + Never add new line on enter + + + + Never include snippets + Never include snippets + + + + Only add new line on enter after end of fully typed word + Only add new line on enter after end of fully typed word + + Visual C# Script Visual C# 脚本 diff --git a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.zh-Hant.xlf b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.zh-Hant.xlf index f336ca3da7ede..22853fa56999e 100644 --- a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.zh-Hant.xlf +++ b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.zh-Hant.xlf @@ -410,11 +410,46 @@ Enter 鍵行為; 在 IDE 中使用的 C# 元件。根據您的專案類型與設定,可能會使用其他版本的編譯器。 Help > About + + Always add new line on enter + Always add new line on enter + + + + Always include snippets + Always include snippets + + An empty C# script file. 空白的 C# 指令碼檔。 + + Default + Default + + + + Include snippets when Tab is typed after an identifier + Include snippets when Tab is typed after an identifier + + + + Never add new line on enter + Never add new line on enter + + + + Never include snippets + Never include snippets + + + + Only add new line on enter after end of fully typed word + Only add new line on enter after end of fully typed word + + Visual C# Script Visual C# 指令碼 diff --git a/src/VisualStudio/Setup/Roslyn.VisualStudio.Setup.csproj b/src/VisualStudio/Setup/Roslyn.VisualStudio.Setup.csproj index ee3c8f5f5dc30..9af768dba8071 100644 --- a/src/VisualStudio/Setup/Roslyn.VisualStudio.Setup.csproj +++ b/src/VisualStudio/Setup/Roslyn.VisualStudio.Setup.csproj @@ -347,6 +347,7 @@ true false + diff --git a/src/VisualStudio/Setup/UnifiedSettings/csharpIntellisenseSettings.registration.json b/src/VisualStudio/Setup/UnifiedSettings/csharpIntellisenseSettings.registration.json new file mode 100644 index 0000000000000..2253fef5a7a06 --- /dev/null +++ b/src/VisualStudio/Setup/UnifiedSettings/csharpIntellisenseSettings.registration.json @@ -0,0 +1,247 @@ +{ + "properties": { + // CompletionOptionsStorage.TriggerOnTypingLetters + "textEditor.csharp.intellisense.triggerCompletionOnTypingLetters": { + "title": "@Show_completion_list_after_a_character_is_typed;..\\Microsoft.VisualStudio.LanguageServices.CSharp.dll", + "type": "boolean", + "default": true, + "order": 0, + "migration": { + "pass": { + "input": { + "store": "SettingsManager", + "path": "TextEditor.CSharp.Specific.TriggerOnTypingLetters" + } + } + } + }, + // CompletionOptionsStorage.TriggerOnDeletion + "textEditor.csharp.intellisense.triggerCompletionOnDeletion": { + "title": "@Show_completion_list_after_a_character_is_deleted;..\\Microsoft.VisualStudio.LanguageServices.CSharp.dll", + "type": "boolean", + "default": false, + "order": 1, + "enableWhen": "${config:textEditor.csharp.intellisense.triggerCompletionOnTypingLetters}=='true'", + "migration": { + "pass": { + "input": { + "store": "SettingsManager", + "path": "TextEditor.CSharp.Specific.TriggerOnDeletion" + } + } + } + }, + // CompletionOptionsStorage.TriggerInArgumentLists + "textEditor.csharp.intellisense.triggerCompletionInArgumentLists": { + "title": "@Automatically_show_completion_list_in_argument_lists;..\\Microsoft.VisualStudio.LanguageServices.CSharp.dll", + "type": "boolean", + "default": true, + "order": 10, + "migration": { + "pass": { + "input": { + "store": "SettingsManager", + "path": "TextEditor.CSharp.Specific.TriggerInArgumentLists" + } + } + } + }, + // CompletionViewOptionsStorage.HighlightMatchingPortionsOfCompletionListItems + "textEditor.csharp.intellisense.highlightMatchingPortionsOfCompletionListItems": { + "title": "@Highlight_matching_portions_of_completion_list_items;..\\Microsoft.VisualStudio.LanguageServices.CSharp.dll", + "type": "boolean", + "default": true, + "order": 20, + "migration": { + "pass": { + "input": { + "store": "SettingsManager", + "path": "TextEditor.CSharp.Specific.HighlightMatchingPortionsOfCompletionListItems" + } + } + } + }, + // CompletionViewOptionsStorage.ShowCompletionItemFilters + "textEditor.csharp.intellisense.showCompletionItemFilters": { + "title": "@Show_completion_item_filters;..\\Microsoft.VisualStudio.LanguageServices.CSharp.dll", + "type": "boolean", + "default": true, + "order": 30, + "migration": { + "pass": { + "input": { + "store": "SettingsManager", + "path": "TextEditor.CSharp.Specific.ShowCompletionItemFilters" + } + } + } + }, + // CompleteStatementOptionsStorage.AutomaticallyCompleteStatementOnSemicolon + "textEditor.csharp.intellisense.completeStatementOnSemicolon": { + "title": "@Automatically_complete_statement_on_semicolon;..\\Microsoft.VisualStudio.LanguageServices.CSharp.dll", + "type": "boolean", + "default": true, + "order": 40, + "migration": { + "pass": { + "input": { + "store": "SettingsManager", + "path": "TextEditor.AutomaticallyCompleteStatementOnSemicolon" + } + } + } + }, + // CompletionOptionsStorage.SnippetsBehavior + "textEditor.csharp.intellisense.snippetsBehavior": { + "title": "@Snippets_behavior;..\\Microsoft.VisualStudio.LanguageServices.CSharp.dll", + "type": "string", + "enum": [ "neverInclude", "alwaysInclude", "includeAfterTypingIdentifierQuestionTab" ], + "enumItemLabels": [ "@Never_include_snippets;{13c3bbb4-f18f-4111-9f54-a0fb010d9194}", "@Always_include_snippets;{13c3bbb4-f18f-4111-9f54-a0fb010d9194}", "@Include_snippets_when_Tab_is_typed_after_an_identifier;{13c3bbb4-f18f-4111-9f54-a0fb010d9194}" ], + "default": "alwaysInclude", + "order": 50, + "migration": { + "enumIntegerToString": { + "input": { + "store": "SettingsManager", + "path": "TextEditor.CSharp.Specific.SnippetsBehavior" + }, + "map": [ + { + "result": "neverInclude", + "match": 1 + }, + // '0' matches to SnippetsRule.Default. Means the behavior is decided by langauge. + // '2' matches to SnippetsRule.AlwaysInclude. It's the default behavior for C# + // Put both mapping here, so it's possible for unified setting to load '0' from the storage. + // Put '2' in front, so unifed settings would persist '2' to storage when 'alwasyInclude' is selected. + { + "result": "alwaysInclude", + "match": 2 + }, + { + "result": "alwaysInclude", + "match": 0 + }, + { + "result": "includeAfterTypingIdentifierQuestionTab", + "match": 3 + } + ] + } + } + }, + // CompletionOptionsStorage.EnterKeyBehavior + "textEditor.csharp.intellisense.returnKeyCompletionBehavior": { + "title": "@Enter_key_behavior_colon;..\\Microsoft.VisualStudio.LanguageServices.CSharp.dll", + "type": "string", + "enum": [ "never", "afterFullyTypedWord", "always" ], + "enumItemLabels": [ "@Never_add_new_line_on_enter;{13c3bbb4-f18f-4111-9f54-a0fb010d9194}", "@Only_add_new_line_on_enter_after_end_of_fully_typed_word;{13c3bbb4-f18f-4111-9f54-a0fb010d9194}", "@Always_add_new_line_on_enter;{13c3bbb4-f18f-4111-9f54-a0fb010d9194}" ], + "default": "never", + "order": 60, + "migration": { + "enumIntegerToString": { + "input": { + "store": "SettingsManager", + "path": "TextEditor.CSharp.Specific.EnterKeyBehavior" + }, + "map": [ + // '0' matches to EnterKeyRule.Default. Means the behavior is decided by langauge. + // '1' matches to SnippetsRule.Never. It's the default behavior for C# + // Put both mapping here, so it's possible for unified setting to load '0' from the storage. + // Put '1' in front, so unifed settings would persist '2' to storage when 'never' is selected. + { + "result": "never", + "match": 1 + }, + { + "result": "never", + "match": 0 + }, + { + "result": "always", + "match": 2 + }, + { + "result": "afterFullyTypedWord", + "match": 3 + } + ] + } + } + }, + // CompletionOptionsStorage.ShowNameSuggestions + "textEditor.csharp.intellisense.showNameCompletionSuggestions": { + "title": "@Show_name_suggestions;..\\Microsoft.VisualStudio.LanguageServices.CSharp.dll", + "type": "boolean", + "default": true, + "order": 70, + "migration": { + "pass": { + "input": { + "store": "SettingsManager", + "path": "TextEditor.CSharp.Specific.ShowNameSuggestions" + } + } + } + }, + // CompletionOptionsStorage.ShowItemsFromUnimportedNamespaces + "textEditor.csharp.intellisense.showCompletionItemsFromUnimportedNamespaces": { + "title": "@Show_items_from_unimported_namespaces;..\\Microsoft.VisualStudio.LanguageServices.CSharp.dll", + "type": "boolean", + "default": true, + "order": 80, + "migration": { + "pass": { + "input": { + "store": "SettingsManager", + "path": "TextEditor.CSharp.Specific.ShowItemsFromUnimportedNamespaces" + } + } + } + }, + // CompletionViewOptionsStorage.EnableArgumentCompletionSnippets + "textEditor.csharp.intellisense.enableArgumentCompletionSnippets": { + "title": "@Tab_twice_to_insert_arguments;..\\Microsoft.VisualStudio.LanguageServices.dll", + "type": "boolean", + "default": false, + "order": 90, + "migration": { + "pass": { + "input": { + "store": "SettingsManager", + "path": "TextEditor.CSharp.Specific.EnableArgumentCompletionSnippets" + } + } + } + }, + // CompletionOptionsStorage.ShowNewSnippetExperienceUserOption + "textEditor.csharp.intellisense.showNewSnippetExperience": { + "title": "@Show_new_snippet_experience_experimental;..\\Microsoft.VisualStudio.LanguageServices.CSharp.dll", + "type": "boolean", + "default": false, + "alternateDefault": { + // CompletionOptionsStorage.ShowNewSnippetExperienceFeatureFlag + "flagName": "Roslyn.SnippetCompletion", + "default": true + }, + "order": 100, + "migration": { + "pass": { + "input": { + "store": "SettingsManager", + "path": "TextEditor.CSharp.Specific.ShowNewSnippetExperience" + } + } + } + } + }, + "categories": { + "textEditor.csharp":{ + "title": "C#" + }, + "textEditor.csharp.intellisense": { + "title": "@103;{13c3bbb4-f18f-4111-9f54-a0fb010d9194}", + "legacyOptionPageId": "EDE66829-7A36-4c5d-8E20-9290195DCF80" + } + } +}