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# ScriptSkript 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# ScriptVisual 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# ScriptScript 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# ScriptScript 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# ScriptScript 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# ScriptVisual 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# ScriptVisual 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# ScriptSkrypt 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# ScriptScript 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# ScriptVisual 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# ScriptVisual 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# ScriptVisual 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 @@
truefalse
+
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"
+ }
+ }
+}