提交 b43fd8e1 编写于 作者: R Ravi Chande 提交者: GitHub

Merge pull request #12852 from rchande/fixColonCommit

Commit C# completion on colon
......@@ -456,5 +456,55 @@ static void Main()
";
await VerifyNoItemsExistAsync(markup);
}
[Fact, Trait(Traits.Feature, Traits.Features.Completion)]
public async Task CommitWithColonWordFullyTyped()
{
var markup = @"
class Program
{
static void Main(string[] args)
{
Main(args$$)
}
}
";
var expected = @"
class Program
{
static void Main(string[] args)
{
Main(args:)
}
}
";
await VerifyProviderCommitAsync(markup, "args:", expected, ':', "args");
}
[Fact, Trait(Traits.Feature, Traits.Features.Completion)]
public async Task CommitWithColonWordPartiallyTyped()
{
var markup = @"
class Program
{
static void Main(string[] args)
{
Main(ar$$)
}
}
";
var expected = @"
class Program
{
static void Main(string[] args)
{
Main(args:)
}
}
";
await VerifyProviderCommitAsync(markup, "args:", expected, ':', "arg");
}
}
}
......@@ -1929,5 +1929,26 @@ class Program
Await state.AssertSelectedCompletionItem("Add", description:="void List<T>.Add(T item)")
End Using
End Function
<WpfFact, Trait(Traits.Feature, Traits.Features.Completion)>
Public Async Function TestCommitNamedParameterWithColon() As Task
Using state = TestState.CreateCSharpTestState(
<Document><![CDATA[
using System.Collections.Generic;
class Program
{
static void Main(int args)
{
Main(args$$
}
}]]></Document>, extraExportedTypes:={GetType(CSharpEditorFormattingService)}.ToList())
state.SendInvokeCompletionList()
state.SendTypeChars(":")
Await state.AssertNoCompletionSession()
Assert.Contains("args:", state.GetLineTextFromCaretPosition())
End Using
End Function
End Class
End Namespace
\ No newline at end of file
......@@ -23,6 +23,11 @@ internal partial class NamedParameterCompletionProvider : CommonCompletionProvid
{
private const string ColonString = ":";
// Explicitly remove ":" from the set of filter characters because (by default)
// any character that appears in DisplayText gets treated as a filter char.
private static readonly CompletionItemRules s_rules = CompletionItemRules.Default
.WithFilterCharacterRule(CharacterSetModificationRule.Create(CharacterSetModificationKind.Remove, ':'));
internal override bool IsInsertionTrigger(SourceText text, int characterPosition, OptionSet options)
{
return CompletionUtilities.IsTriggerCharacter(text, characterPosition, options);
......@@ -96,7 +101,7 @@ public override async Task ProvideCompletionsAsync(CompletionContext context)
symbol: parameter,
contextPosition: token.SpanStart,
filterText: escapedName,
rules: CompletionItemRules.Default,
rules: s_rules,
matchPriority: SymbolMatchPriority.PreferNamedArgument));
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册