提交 72d75b69 编写于 作者: M Manish Vasani

Revert field types for completion options that are used by TypeScript to avoid a binary break.

上级 e16d3906
......@@ -102,7 +102,7 @@ internal CompletionSource(ITextView textView, Lazy<IStreamingFindUsagesPresenter
// There could be mixed desired behavior per textView and even per same completion session.
// The right fix would be to send this information as a result of the method.
// Then, the Editor would choose the right behavior for mixed cases.
_textView.Options.GlobalOptions.SetOptionValue(NonBlockingCompletionEditorOption, !document.Project.Solution.Workspace.Options.GetOption(CompletionOptions.BlockForCompletionItems, service.Language));
_textView.Options.GlobalOptions.SetOptionValue(NonBlockingCompletionEditorOption, !document.Project.Solution.Workspace.Options.GetOption(CompletionOptions.BlockForCompletionItems2, service.Language));
// In case of calls with multiple completion services for the same view (e.g. TypeScript and C#), those completion services must not be called simultaneously for the same session.
// Therefore, in each completion session we use a list of commit character for a specific completion service and a specific content type.
......
......@@ -4125,7 +4125,7 @@ class C
Dim workspace = state.Workspace
workspace.TryApplyChanges(workspace.CurrentSolution.WithOptions(workspace.Options _
.WithChangedOption(CompletionOptions.BlockForCompletionItems, LanguageNames.CSharp, False)))
.WithChangedOption(CompletionOptions.BlockForCompletionItems2, LanguageNames.CSharp, False)))
state.SendTypeChars("Sys.")
Await state.AssertNoCompletionSession()
......@@ -4147,7 +4147,7 @@ class C
Dim workspace = state.Workspace
workspace.TryApplyChanges(workspace.CurrentSolution.WithOptions(workspace.Options _
.WithChangedOption(CompletionOptions.BlockForCompletionItems, LanguageNames.CSharp, False)))
.WithChangedOption(CompletionOptions.BlockForCompletionItems2, LanguageNames.CSharp, False)))
state.SendTypeChars("Sys")
Await state.AssertSelectedCompletionItem(displayText:="System")
......@@ -4182,7 +4182,7 @@ class C
Dim workspace = state.Workspace
workspace.TryApplyChanges(workspace.CurrentSolution.WithOptions(workspace.Options _
.WithChangedOption(CompletionOptions.BlockForCompletionItems, LanguageNames.CSharp, False)))
.WithChangedOption(CompletionOptions.BlockForCompletionItems2, LanguageNames.CSharp, False)))
state.SendTypeChars("Sys")
......@@ -4261,7 +4261,7 @@ class C
Dim workspace = state.Workspace
workspace.TryApplyChanges(workspace.CurrentSolution.WithOptions(workspace.Options _
.WithChangedOption(CompletionOptions.BlockForCompletionItems, LanguageNames.CSharp, False)))
.WithChangedOption(CompletionOptions.BlockForCompletionItems2, LanguageNames.CSharp, False)))
state.SendTypeChars("Sys")
Dim task1 As Task = Nothing
......@@ -4353,7 +4353,7 @@ class C
' Switch to the non-blocking mode
Dim workspace = state.Workspace
workspace.TryApplyChanges(workspace.CurrentSolution.WithOptions(workspace.Options _
.WithChangedOption(CompletionOptions.BlockForCompletionItems, LanguageNames.CSharp, False)))
.WithChangedOption(CompletionOptions.BlockForCompletionItems2, LanguageNames.CSharp, False)))
' re-use of TestNoBlockOnCompletionItems1
state.SendTypeChars("Sys.")
......@@ -4373,7 +4373,7 @@ class C
' Switch to the blocking mode
workspace.TryApplyChanges(workspace.CurrentSolution.WithOptions(workspace.Options _
.WithChangedOption(CompletionOptions.BlockForCompletionItems, LanguageNames.CSharp, True)))
.WithChangedOption(CompletionOptions.BlockForCompletionItems2, LanguageNames.CSharp, True)))
#Disable Warning BC42358 ' Because this call is not awaited, execution of the current method continues before the call is completed
Task.Run(Function()
......
......@@ -962,7 +962,7 @@ protected async Task VerifyItemInLinkedFilesAsync(string xmlString, string expec
var position = hostDocument.CursorPosition.Value;
var text = hostDocument.GetTextBuffer().CurrentSnapshot.AsText();
var options = workspace.Options
.WithChangedOption(CompletionOptions.TriggerOnTypingLetters, hostDocument.Project.Language, triggerOnLetter)
.WithChangedOption(CompletionOptions.TriggerOnTypingLetters2, hostDocument.Project.Language, triggerOnLetter)
.WithChangedOption(CompletionOptions.TriggerInArgumentLists, hostDocument.Project.Language, showCompletionInArgumentLists);
var trigger = RoslynCompletion.CompletionTrigger.CreateInsertionTrigger(text[position]);
......
......@@ -61,7 +61,7 @@ internal static bool IsTriggerCharacter(SourceText text, int characterPosition,
return true;
}
if (options.GetOption(CompletionOptions.TriggerOnTypingLetters, LanguageNames.CSharp) && IsStartingNewWord(text, characterPosition))
if (options.GetOption(CompletionOptions.TriggerOnTypingLetters2, LanguageNames.CSharp) && IsStartingNewWord(text, characterPosition))
{
return true;
}
......@@ -93,7 +93,7 @@ internal static bool IsTriggerAfterSpaceOrStartOfWordCharacter(SourceText text,
// Bring up on space or at the start of a word.
var ch = text[characterPosition];
return SpaceTypedNotBeforeWord(ch, text, characterPosition) ||
(IsStartingNewWord(text, characterPosition) && options.GetOption(CompletionOptions.TriggerOnTypingLetters, LanguageNames.CSharp));
(IsStartingNewWord(text, characterPosition) && options.GetOption(CompletionOptions.TriggerOnTypingLetters2, LanguageNames.CSharp));
}
internal static ImmutableHashSet<char> SpaceTriggerCharacter => ImmutableHashSet.Create(' ');
......
......@@ -47,7 +47,7 @@ internal override bool IsInsertionTrigger(SourceText text, int characterPosition
ch == '[' ||
ch == '(' ||
ch == '~' ||
(options.GetOption(CompletionOptions.TriggerOnTypingLetters, LanguageNames.CSharp) && CompletionUtilities.IsStartingNewWord(text, characterPosition));
(options.GetOption(CompletionOptions.TriggerOnTypingLetters2, LanguageNames.CSharp) && CompletionUtilities.IsStartingNewWord(text, characterPosition));
}
internal override ImmutableHashSet<char> TriggerCharacters { get; } = ImmutableHashSet.Create(' ', '[', '(', '~');
......
......@@ -52,7 +52,7 @@ protected override SyntaxToken GetToken(CompletionItem completionItem, SyntaxTre
internal override bool IsInsertionTrigger(SourceText text, int characterPosition, OptionSet options)
{
var ch = text[characterPosition];
return ch == ' ' || (CompletionUtilities.IsStartingNewWord(text, characterPosition) && options.GetOption(CompletionOptions.TriggerOnTypingLetters, LanguageNames.CSharp));
return ch == ' ' || (CompletionUtilities.IsStartingNewWord(text, characterPosition) && options.GetOption(CompletionOptions.TriggerOnTypingLetters2, LanguageNames.CSharp));
}
internal override ImmutableHashSet<char> TriggerCharacters { get; } = CompletionUtilities.SpaceTriggerCharacter;
......
......@@ -50,7 +50,7 @@ internal override bool IsInsertionTrigger(SourceText text, int characterPosition
var ch = text[characterPosition];
return ch == ' ' ||
(CompletionUtilities.IsStartingNewWord(text, characterPosition) &&
options.GetOption(CompletionOptions.TriggerOnTypingLetters, LanguageNames.CSharp));
options.GetOption(CompletionOptions.TriggerOnTypingLetters2, LanguageNames.CSharp));
}
internal override ImmutableHashSet<char> TriggerCharacters { get; } = CompletionUtilities.SpaceTriggerCharacter;
......
......@@ -17,8 +17,13 @@ internal static class CompletionOptions
// This is serialized by the Visual Studio-specific LanguageSettingsPersister
public static readonly PerLanguageOption2<bool> TriggerOnTyping = new PerLanguageOption2<bool>(nameof(CompletionOptions), nameof(TriggerOnTyping), defaultValue: true);
public static readonly PerLanguageOption2<bool> TriggerOnTypingLetters = new PerLanguageOption2<bool>(nameof(CompletionOptions), nameof(TriggerOnTypingLetters), defaultValue: true,
public static readonly PerLanguageOption2<bool> TriggerOnTypingLetters2 = new PerLanguageOption2<bool>(nameof(CompletionOptions), nameof(TriggerOnTypingLetters), defaultValue: true,
storageLocations: new RoamingProfileStorageLocation("TextEditor.%LANGUAGE%.Specific.TriggerOnTypingLetters"));
#pragma warning disable RS0030 // Do not used banned APIs - Used by TypeScript through IVT, so we cannot change the field type.
public static readonly PerLanguageOption<bool> TriggerOnTypingLetters = (PerLanguageOption<bool>)TriggerOnTypingLetters2!;
#pragma warning restore RS0030 // Do not used banned APIs
public static readonly PerLanguageOption2<bool?> TriggerOnDeletion = new PerLanguageOption2<bool?>(nameof(CompletionOptions), nameof(TriggerOnDeletion), defaultValue: null,
storageLocations: new RoamingProfileStorageLocation("TextEditor.%LANGUAGE%.Specific.TriggerOnDeletion"));
......@@ -37,9 +42,13 @@ internal static class CompletionOptions
public static readonly PerLanguageOption2<bool> HighlightMatchingPortionsOfCompletionListItems = new PerLanguageOption2<bool>(nameof(CompletionOptions), nameof(HighlightMatchingPortionsOfCompletionListItems), defaultValue: true,
storageLocations: new RoamingProfileStorageLocation("TextEditor.%LANGUAGE%.Specific.HighlightMatchingPortionsOfCompletionListItems"));
public static readonly PerLanguageOption2<bool> BlockForCompletionItems = new PerLanguageOption2<bool>(
nameof(CompletionOptions), nameof(BlockForCompletionItems), defaultValue: true,
storageLocations: new RoamingProfileStorageLocation($"TextEditor.%LANGUAGE%.Specific.{BlockForCompletionItems}"));
public static readonly PerLanguageOption2<bool> BlockForCompletionItems2 = new PerLanguageOption2<bool>(
nameof(CompletionOptions), nameof(BlockForCompletionItems2), defaultValue: true,
storageLocations: new RoamingProfileStorageLocation($"TextEditor.%LANGUAGE%.Specific.{BlockForCompletionItems2}"));
#pragma warning disable RS0030 // Do not used banned APIs - Used by TypeScript through IVT, so we cannot change the field type.
public static readonly PerLanguageOption<bool> BlockForCompletionItems = (PerLanguageOption<bool>)BlockForCompletionItems2!;
#pragma warning restore RS0030 // Do not used banned APIs
public static readonly PerLanguageOption2<bool> ShowNameSuggestions =
new PerLanguageOption2<bool>(nameof(CompletionOptions), nameof(ShowNameSuggestions), defaultValue: true,
......
......@@ -20,7 +20,7 @@ public CompletionOptionsProvider()
public ImmutableArray<IOption> Options { get; } = ImmutableArray.Create<IOption>(
CompletionOptions.HideAdvancedMembers,
CompletionOptions.TriggerOnTyping,
CompletionOptions.TriggerOnTypingLetters,
CompletionOptions.TriggerOnTypingLetters2,
CompletionOptions.ShowCompletionItemFilters,
CompletionOptions.HighlightMatchingPortionsOfCompletionListItems,
CompletionOptions.EnterKeyBehavior,
......
......@@ -71,7 +71,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Completion.Providers
End Function
Private Function IsStartingNewWord(text As SourceText, characterPosition As Integer, options As OptionSet) As Boolean
If Not options.GetOption(CompletionOptions.TriggerOnTypingLetters, LanguageNames.VisualBasic) Then
If Not options.GetOption(CompletionOptions.TriggerOnTypingLetters2, LanguageNames.VisualBasic) Then
Return False
End If
......
......@@ -94,7 +94,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Completion.Providers
text(characterPosition) = "("c OrElse
(characterPosition > 1 AndAlso text(characterPosition) = "="c AndAlso text(characterPosition - 1) = ":"c) OrElse
SyntaxFacts.IsIdentifierStartCharacter(text(characterPosition)) AndAlso
options.GetOption(CompletionOptions.TriggerOnTypingLetters, LanguageNames.VisualBasic)
options.GetOption(CompletionOptions.TriggerOnTypingLetters2, LanguageNames.VisualBasic)
End Function
Friend Overrides ReadOnly Property TriggerCharacters As ImmutableHashSet(Of Char) = ImmutableHashSet.Create(" "c, "("c, "="c)
......
......@@ -11,6 +11,6 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.FSharp.Completion
internal static class FSharpCompletionOptions
{
// Suppression due to https://github.com/dotnet/roslyn/issues/42614
public static PerLanguageOption<bool> BlockForCompletionItems { get; } = ((PerLanguageOption<bool>)Microsoft.CodeAnalysis.Completion.CompletionOptions.BlockForCompletionItems)!;
public static PerLanguageOption<bool> BlockForCompletionItems { get; } = ((PerLanguageOption<bool>)Microsoft.CodeAnalysis.Completion.CompletionOptions.BlockForCompletionItems2)!;
}
}
......@@ -59,8 +59,8 @@ public int AutoInsertAsteriskForNewLinesOfBlockComments
public int BringUpOnIdentifier
{
get { return GetBooleanOption(CompletionOptions.TriggerOnTypingLetters); }
set { SetBooleanOption(CompletionOptions.TriggerOnTypingLetters, value); }
get { return GetBooleanOption(CompletionOptions.TriggerOnTypingLetters2); }
set { SetBooleanOption(CompletionOptions.TriggerOnTypingLetters2, value); }
}
public int HighlightMatchingPortionsOfCompletionListItems
......
......@@ -18,7 +18,7 @@ public IntelliSenseOptionPageControl(OptionStore optionStore) : base(optionStore
BindToOption(Show_completion_item_filters, CompletionOptions.ShowCompletionItemFilters, LanguageNames.CSharp);
BindToOption(Highlight_matching_portions_of_completion_list_items, CompletionOptions.HighlightMatchingPortionsOfCompletionListItems, LanguageNames.CSharp);
BindToOption(Show_completion_list_after_a_character_is_typed, CompletionOptions.TriggerOnTypingLetters, LanguageNames.CSharp);
BindToOption(Show_completion_list_after_a_character_is_typed, CompletionOptions.TriggerOnTypingLetters2, LanguageNames.CSharp);
Show_completion_list_after_a_character_is_deleted.IsChecked = this.OptionStore.GetOption(CompletionOptions.TriggerOnDeletion, LanguageNames.CSharp) == true;
Show_completion_list_after_a_character_is_deleted.IsEnabled = Show_completion_list_after_a_character_is_typed.IsChecked == true;
......
......@@ -15,7 +15,7 @@ Namespace Microsoft.VisualStudio.LanguageServices.VisualBasic.Options
MyBase.New(optionStore)
InitializeComponent()
BindToOption(Show_completion_list_after_a_character_is_typed, CompletionOptions.TriggerOnTypingLetters, LanguageNames.VisualBasic)
BindToOption(Show_completion_list_after_a_character_is_typed, CompletionOptions.TriggerOnTypingLetters2, LanguageNames.VisualBasic)
Show_completion_list_after_a_character_is_deleted.IsChecked = Me.OptionStore.GetOption(
CompletionOptions.TriggerOnDeletion, LanguageNames.VisualBasic) <> False
......
......@@ -89,7 +89,7 @@ Namespace Microsoft.VisualStudio.LanguageServices.VisualBasic.Snippets
Friend Overrides Function IsInsertionTrigger(text As SourceText, characterPosition As Integer, options As OptionSet) As Boolean
Return Char.IsLetterOrDigit(text(characterPosition)) AndAlso
options.GetOption(CompletionOptions.TriggerOnTypingLetters, LanguageNames.VisualBasic)
options.GetOption(CompletionOptions.TriggerOnTypingLetters2, LanguageNames.VisualBasic)
End Function
Friend Overrides ReadOnly Property TriggerCharacters As ImmutableHashSet(Of Char) = ImmutableHashSet(Of Char).Empty
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册