Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,12 @@
<CheckBox x:Uid="Show_completion_list_after_a_character_is_typed"
x:Name="Show_completion_list_after_a_character_is_typed"
Content="{x:Static local:IntelliSenseOptionPageStrings.Option_Show_completion_list_after_a_character_is_typed}"
Checked="Show_completion_list_after_a_character_is_typed_Checked"
Checked="Show_completion_list_after_a_character_is_typed_Checked"
Unchecked="Show_completion_list_after_a_character_is_typed_Unchecked"/>
<StackPanel Margin="15, 0, 0, 0">
<CheckBox x:Uid="Show_completion_list_after_a_character_is_deleted"
x:Name="Show_completion_list_after_a_character_is_deleted"
Content="{x:Static local:IntelliSenseOptionPageStrings.Option_Show_completion_list_after_a_character_is_deleted}"
Checked="Show_completion_list_after_a_character_is_deleted_Checked"
Unchecked="Show_completion_list_after_a_character_is_deleted_Unchecked"/>
Content="{x:Static local:IntelliSenseOptionPageStrings.Option_Show_completion_list_after_a_character_is_deleted}" />
</StackPanel>

<CheckBox x:Uid="Automatically_show_completion_list_in_argument_lists"
Expand Down Expand Up @@ -74,27 +72,15 @@

<CheckBox x:Uid="Show_items_from_unimported_namespaces"
x:Name="Show_items_from_unimported_namespaces"
Content="{x:Static local:IntelliSenseOptionPageStrings.Option_Show_items_from_unimported_namespaces}"
Checked="Show_items_from_unimported_namespaces_CheckedChanged"
Unchecked="Show_items_from_unimported_namespaces_CheckedChanged"
Indeterminate="Show_items_from_unimported_namespaces_CheckedChanged"
IsThreeState="True"/>
Content="{x:Static local:IntelliSenseOptionPageStrings.Option_Show_items_from_unimported_namespaces}" />
Copy link
Member Author

@Cosifne Cosifne Jan 23, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Show_items_from_unimported_namespaces, Tab_twice_to_insert_arguments and Show_new_snippet_experience
are using the three state checkbox tricks to indicate they are in experiment.
However, I found

  1. Show_items_from_unimported_namespaces is on by default. I can't find its feature flag.
  2. Tab_twice_to_insert_arguments is off by default now. I also can't find the feature flag. I synced with Sam and he intend to keep it off.
  3. Show_new_snippet_experience has the feature flag. But it no longer need to use the three state trick because the value could be fetched from the feature flag when it's null.


<CheckBox x:Uid="Tab_twice_to_insert_arguments"
x:Name="Tab_twice_to_insert_arguments"
Content="{x:Static local:IntelliSenseOptionPageStrings.Option_Tab_twice_to_insert_arguments}"
Checked="Tab_twice_to_insert_arguments_CheckedChanged"
Unchecked="Tab_twice_to_insert_arguments_CheckedChanged"
Indeterminate="Tab_twice_to_insert_arguments_CheckedChanged"
IsThreeState="True"/>
Content="{x:Static local:IntelliSenseOptionPageStrings.Option_Tab_twice_to_insert_arguments}" />

<CheckBox x:Uid="Show_new_snippet_experience"
x:Name="Show_new_snippet_experience"
Content="{x:Static local:IntelliSenseOptionPageStrings.Option_Show_new_snippet_experience_experimental}"
Checked="Show_new_snippet_experience_CheckedChanged"
Unchecked="Show_new_snippet_experience_CheckedChanged"
Indeterminate="Show_new_snippet_experience_CheckedChanged"
IsThreeState="True"/>
Content="{x:Static local:IntelliSenseOptionPageStrings.Option_Show_new_snippet_experience_experimental}" />
</StackPanel>
</GroupBox>
</StackPanel>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Completion;
using Microsoft.CodeAnalysis.Editor.CSharp.CompleteStatement;
using Microsoft.CodeAnalysis.Editor.Shared.Options;
using Microsoft.VisualStudio.LanguageServices.Implementation.Options;

namespace Microsoft.VisualStudio.LanguageServices.CSharp.Options
Expand All @@ -19,15 +18,15 @@ public IntelliSenseOptionPageControl(OptionStore optionStore) : base(optionStore
{
InitializeComponent();

BindToOption(Automatically_complete_statement_on_semicolon, CompleteStatementOptionsStorage.AutomaticallyCompleteStatementOnSemicolon);
BindToOption(Show_completion_list_after_a_character_is_typed, CompletionOptionsStorage.TriggerOnTypingLetters, LanguageNames.CSharp);
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I reorder the sequence here to match the order in xaml.
image

BindToOption(Show_completion_list_after_a_character_is_deleted, CompletionOptionsStorage.TriggerOnDeletion, LanguageNames.CSharp, onNullValue: static () => false);
Show_completion_list_after_a_character_is_deleted.IsEnabled = Show_completion_list_after_a_character_is_typed.IsChecked == true;

BindToOption(Show_completion_item_filters, CompletionViewOptionsStorage.ShowCompletionItemFilters, LanguageNames.CSharp);
BindToOption(Automatically_show_completion_list_in_argument_lists, CompletionOptionsStorage.TriggerInArgumentLists, LanguageNames.CSharp);
BindToOption(Highlight_matching_portions_of_completion_list_items, CompletionViewOptionsStorage.HighlightMatchingPortionsOfCompletionListItems, LanguageNames.CSharp);
BindToOption(Show_completion_item_filters, CompletionViewOptionsStorage.ShowCompletionItemFilters, LanguageNames.CSharp);

BindToOption(Show_completion_list_after_a_character_is_typed, CompletionOptionsStorage.TriggerOnTypingLetters, LanguageNames.CSharp);
Show_completion_list_after_a_character_is_deleted.IsChecked = this.OptionStore.GetOption(CompletionOptionsStorage.TriggerOnDeletion, LanguageNames.CSharp) == true;
Show_completion_list_after_a_character_is_deleted.IsEnabled = Show_completion_list_after_a_character_is_typed.IsChecked == true;
AddSearchHandler(Show_completion_list_after_a_character_is_deleted);
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);
Expand All @@ -38,16 +37,12 @@ public IntelliSenseOptionPageControl(OptionStore optionStore) : base(optionStore
BindToOption(Always_add_new_line_on_enter, CompletionOptionsStorage.EnterKeyBehavior, EnterKeyRule.Always, LanguageNames.CSharp);

BindToOption(Show_name_suggestions, CompletionOptionsStorage.ShowNameSuggestions, LanguageNames.CSharp);
BindToOption(Automatically_show_completion_list_in_argument_lists, CompletionOptionsStorage.TriggerInArgumentLists, LanguageNames.CSharp);

Show_items_from_unimported_namespaces.IsChecked = this.OptionStore.GetOption(CompletionOptionsStorage.ShowItemsFromUnimportedNamespaces, LanguageNames.CSharp);
AddSearchHandler(Show_items_from_unimported_namespaces);

Tab_twice_to_insert_arguments.IsChecked = this.OptionStore.GetOption(CompletionViewOptionsStorage.EnableArgumentCompletionSnippets, LanguageNames.CSharp);
AddSearchHandler(Tab_twice_to_insert_arguments);
BindToOption(Show_items_from_unimported_namespaces, CompletionOptionsStorage.ShowItemsFromUnimportedNamespaces, LanguageNames.CSharp, onNullValue: static () => true);

Show_new_snippet_experience.IsChecked = this.OptionStore.GetOption(CompletionOptionsStorage.ShowNewSnippetExperienceUserOption, LanguageNames.CSharp);
AddSearchHandler(Show_new_snippet_experience);
BindToOption(Tab_twice_to_insert_arguments, CompletionViewOptionsStorage.EnableArgumentCompletionSnippets, LanguageNames.CSharp, onNullValue: static () => false);
BindToOption(Show_new_snippet_experience, CompletionOptionsStorage.ShowNewSnippetExperienceUserOption, LanguageNames.CSharp,
onNullValue: () => this.OptionStore.GetOption(CompletionOptionsStorage.ShowNewSnippetExperienceFeatureFlag));
}

private void Show_completion_list_after_a_character_is_typed_Checked(object sender, RoutedEventArgs e)
Expand All @@ -57,31 +52,6 @@ private void Show_completion_list_after_a_character_is_typed_Unchecked(object se
{
Show_completion_list_after_a_character_is_deleted.IsEnabled = Show_completion_list_after_a_character_is_typed.IsChecked == true;
Show_completion_list_after_a_character_is_deleted.IsChecked = false;
Show_completion_list_after_a_character_is_deleted_Unchecked(sender, e);
}

private void Show_completion_list_after_a_character_is_deleted_Checked(object sender, RoutedEventArgs e)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Show_completion_list_after_a_character_is_deleted_Checked and Show_completion_list_after_a_character_is_deleted_Unchecked could be removed because on line 22
BindToOption(Show_completion_list_after_a_character_is_deleted, CompletionOptionsStorage.TriggerOnDeletion, LanguageNames.CSharp, onNullValue: () => false);

=> this.OptionStore.SetOption(CompletionOptionsStorage.TriggerOnDeletion, LanguageNames.CSharp, value: true);

private void Show_completion_list_after_a_character_is_deleted_Unchecked(object sender, RoutedEventArgs e)
=> this.OptionStore.SetOption(CompletionOptionsStorage.TriggerOnDeletion, LanguageNames.CSharp, value: false);

private void Show_items_from_unimported_namespaces_CheckedChanged(object sender, RoutedEventArgs e)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On line 41, BindToOption(Show_items_from_unimported_namespaces, CompletionOptionsStorage.ShowItemsFromUnimportedNamespaces, LanguageNames.CSharp, onNullValue: static () => true);, so we don't need the three state trick

{
Show_items_from_unimported_namespaces.IsThreeState = false;
this.OptionStore.SetOption(CompletionOptionsStorage.ShowItemsFromUnimportedNamespaces, LanguageNames.CSharp, value: Show_items_from_unimported_namespaces.IsChecked);
}

private void Tab_twice_to_insert_arguments_CheckedChanged(object sender, RoutedEventArgs e)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On line 43 BindToOption(Tab_twice_to_insert_arguments, CompletionViewOptionsStorage.EnableArgumentCompletionSnippets, LanguageNames.CSharp, onNullValue: static () => false); , so these methods could be removed

{
Tab_twice_to_insert_arguments.IsThreeState = false;
this.OptionStore.SetOption(CompletionViewOptionsStorage.EnableArgumentCompletionSnippets, LanguageNames.CSharp, value: Tab_twice_to_insert_arguments.IsChecked);
}

private void Show_new_snippet_experience_CheckedChanged(object sender, RoutedEventArgs e)
{
Show_new_snippet_experience.IsThreeState = false;
this.OptionStore.SetOption(CompletionOptionsStorage.ShowNewSnippetExperienceUserOption, LanguageNames.CSharp, value: Show_new_snippet_experience.IsChecked);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,7 @@
<StackPanel Margin="15, 0, 0, 0">
<CheckBox x:Uid="Show_completion_list_after_a_character_is_deleted"
x:Name="Show_completion_list_after_a_character_is_deleted"
Content="{x:Static local:IntelliSenseOptionPageStrings.Option_Show_completion_list_after_a_character_is_deleted}"
Checked="Show_completion_list_after_a_character_is_deleted_Checked"
Unchecked="Show_completion_list_after_a_character_is_deleted_Unchecked"/>
Content="{x:Static local:IntelliSenseOptionPageStrings.Option_Show_completion_list_after_a_character_is_deleted}" />
</StackPanel>

<CheckBox x:Uid="Highlight_matching_portions_of_completion_list_items"
Expand Down Expand Up @@ -61,19 +59,11 @@

<CheckBox x:Uid="Show_items_from_unimported_namespaces"
x:Name="Show_items_from_unimported_namespaces"
Content="{x:Static local:IntelliSenseOptionPageStrings.Option_Show_items_from_unimported_namespaces}"
Checked="Show_items_from_unimported_namespaces_CheckedChanged"
Unchecked="Show_items_from_unimported_namespaces_CheckedChanged"
Indeterminate="Show_items_from_unimported_namespaces_CheckedChanged"
IsThreeState="True"/>
Content="{x:Static local:IntelliSenseOptionPageStrings.Option_Show_items_from_unimported_namespaces}" />

<CheckBox x:Uid="Tab_twice_to_insert_arguments"
x:Name="Tab_twice_to_insert_arguments"
Content="{x:Static local:IntelliSenseOptionPageStrings.Option_Tab_twice_to_insert_arguments}"
Checked="Tab_twice_to_insert_arguments_CheckedChanged"
Unchecked="Tab_twice_to_insert_arguments_CheckedChanged"
Indeterminate="Tab_twice_to_insert_arguments_CheckedChanged"
IsThreeState="True"/>
Content="{x:Static local:IntelliSenseOptionPageStrings.Option_Tab_twice_to_insert_arguments}" />
</StackPanel>
</GroupBox>
</StackPanel>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
' The .NET Foundation licenses this file to you under the MIT license.
' See the LICENSE file in the project root for more information.

Imports System.Windows
Imports Microsoft.CodeAnalysis
Imports Microsoft.CodeAnalysis.Completion
Imports Microsoft.VisualStudio.LanguageServices.Implementation.Options
Expand All @@ -16,11 +15,10 @@ Namespace Microsoft.VisualStudio.LanguageServices.VisualBasic.Options
InitializeComponent()

BindToOption(Show_completion_list_after_a_character_is_typed, CompletionOptionsStorage.TriggerOnTypingLetters, LanguageNames.VisualBasic)
Show_completion_list_after_a_character_is_deleted.IsChecked = Me.OptionStore.GetOption(
CompletionOptionsStorage.TriggerOnDeletion, LanguageNames.VisualBasic) <> False
BindToOption(Show_completion_list_after_a_character_is_deleted, CompletionOptionsStorage.TriggerOnDeletion, LanguageNames.VisualBasic, onNullValue:=function() True)

BindToOption(Show_completion_item_filters, CompletionViewOptionsStorage.ShowCompletionItemFilters, LanguageNames.VisualBasic)
BindToOption(Highlight_matching_portions_of_completion_list_items, CompletionViewOptionsStorage.HighlightMatchingPortionsOfCompletionListItems, LanguageNames.VisualBasic)
BindToOption(Show_completion_item_filters, CompletionViewOptionsStorage.ShowCompletionItemFilters, LanguageNames.VisualBasic)

BindToOption(Never_include_snippets, CompletionOptionsStorage.SnippetsBehavior, SnippetsRule.NeverInclude, LanguageNames.VisualBasic)
BindToOption(Always_include_snippets, CompletionOptionsStorage.SnippetsBehavior, SnippetsRule.AlwaysInclude, LanguageNames.VisualBasic)
Expand All @@ -30,26 +28,8 @@ Namespace Microsoft.VisualStudio.LanguageServices.VisualBasic.Options
BindToOption(Only_add_new_line_on_enter_with_whole_word, CompletionOptionsStorage.EnterKeyBehavior, EnterKeyRule.AfterFullyTypedWord, LanguageNames.VisualBasic)
BindToOption(Always_add_new_line_on_enter, CompletionOptionsStorage.EnterKeyBehavior, EnterKeyRule.Always, LanguageNames.VisualBasic)

Show_items_from_unimported_namespaces.IsChecked = Me.OptionStore.GetOption(CompletionOptionsStorage.ShowItemsFromUnimportedNamespaces, LanguageNames.VisualBasic)
Tab_twice_to_insert_arguments.IsChecked = Me.OptionStore.GetOption(CompletionViewOptionsStorage.EnableArgumentCompletionSnippets, LanguageNames.VisualBasic)
End Sub

Private Sub Show_completion_list_after_a_character_is_deleted_Checked(sender As Object, e As RoutedEventArgs)
Me.OptionStore.SetOption(CompletionOptionsStorage.TriggerOnDeletion, LanguageNames.VisualBasic, value:=True)
End Sub

Private Sub Show_completion_list_after_a_character_is_deleted_Unchecked(sender As Object, e As RoutedEventArgs)
Me.OptionStore.SetOption(CompletionOptionsStorage.TriggerOnDeletion, LanguageNames.VisualBasic, value:=False)
End Sub

Private Sub Show_items_from_unimported_namespaces_CheckedChanged(sender As Object, e As RoutedEventArgs)
Show_items_from_unimported_namespaces.IsThreeState = False
Me.OptionStore.SetOption(CompletionOptionsStorage.ShowItemsFromUnimportedNamespaces, LanguageNames.VisualBasic, Show_items_from_unimported_namespaces.IsChecked)
End Sub

Private Sub Tab_twice_to_insert_arguments_CheckedChanged(sender As Object, e As RoutedEventArgs)
Tab_twice_to_insert_arguments.IsThreeState = False
Me.OptionStore.SetOption(CompletionViewOptionsStorage.EnableArgumentCompletionSnippets, LanguageNames.VisualBasic, Tab_twice_to_insert_arguments.IsChecked)
BindToOption(Show_items_from_unimported_namespaces, CompletionOptionsStorage.ShowItemsFromUnimportedNamespaces, LanguageNames.VisualBasic, onNullValue:=function() True)
BindToOption(Tab_twice_to_insert_arguments, CompletionViewOptionsStorage.EnableArgumentCompletionSnippets, LanguageNames.VisualBasic, onNullValue:=function() False)
End Sub
End Class
End Namespace