Skip to content

Commit c083ff0

Browse files
Don't expose RazorDelegationTriggerCharacters set
Rather than directly exposing a set, this change adds an instance method to test for the Razor delegation trigger character (i.e. '@').
1 parent 4357270 commit c083ff0

File tree

2 files changed

+14
-9
lines changed

2 files changed

+14
-9
lines changed

src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/CompletionTriggerAndCommitCharacters.cs

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,24 +10,26 @@ namespace Microsoft.CodeAnalysis.Razor.Completion;
1010

1111
internal class CompletionTriggerAndCommitCharacters(LanguageServerFeatureOptions languageServerFeatureOptions)
1212
{
13+
/// <summary>
14+
/// Trigger character that can trigger both Razor and Delegation completion
15+
/// </summary>
16+
private const string RazorDelegationTriggerCharacter = "@";
17+
1318
private readonly LanguageServerFeatureOptions _languageServerFeatureOptions = languageServerFeatureOptions;
1419

15-
private static readonly FrozenSet<string> s_vsHtmlTriggerCharacters = new[] { ":", "@", "#", ".", "!", "*", ",", "(", "[", "-", "<", "&", "\\", "/", "'", "\"", "=", ":", " ", "`" }.ToFrozenSet();
16-
private static readonly FrozenSet<string> s_vsCodeHtmlTriggerCharacters = new[] { "@", "#", ".", "!", ",", "-", "<", }.ToFrozenSet();
20+
private static readonly FrozenSet<string> s_vsHtmlTriggerCharacters = new[] { RazorDelegationTriggerCharacter, ":", "#", ".", "!", "*", ",", "(", "[", "-", "<", "&", "\\", "/", "'", "\"", "=", ":", " ", "`" }.ToFrozenSet();
21+
private static readonly FrozenSet<string> s_vsCodeHtmlTriggerCharacters = new[] { RazorDelegationTriggerCharacter, "#", ".", "!", ",", "-", "<", }.ToFrozenSet();
1722
private FrozenSet<string>? _allDelegationTriggerCharacters;
1823
private string[]? _allTriggerCharacters;
1924

20-
private static readonly FrozenSet<string> s_razorTriggerCharacters = new[] { "@", "<", ":", " " }.ToFrozenSet();
21-
/// <summary>
22-
/// Tigger characters that can trigger both Razor and Delegation completion (e.g."@" triggers Razor directives and C#)
23-
/// </summary>
24-
public static FrozenSet<string> RazorDelegationTriggerCharacters { get; } = new[] { "@" }.ToFrozenSet();
25+
private static readonly FrozenSet<string> s_razorTriggerCharacters = new[] { RazorDelegationTriggerCharacter, "<", ":", " " }.ToFrozenSet();
26+
private static readonly FrozenSet<string> s_razorDelegationTriggerCharacters = new[] { RazorDelegationTriggerCharacter }.ToFrozenSet();
2527
private static readonly FrozenSet<string> s_csharpTriggerCharacters = new[] { " ", "(", "=", "#", ".", "<", "[", "{", "\"", "/", ":", "~" }.ToFrozenSet();
2628
public FrozenSet<string> HtmlTriggerCharacters =>
2729
_languageServerFeatureOptions.UseVsCodeCompletionTriggerCharacters ? s_vsCodeHtmlTriggerCharacters : s_vsHtmlTriggerCharacters;
2830

2931
public FrozenSet<string> AllDelegationTriggerCharacters => _allDelegationTriggerCharacters
30-
??= RazorDelegationTriggerCharacters.Union(s_csharpTriggerCharacters).Union(HtmlTriggerCharacters).ToFrozenSet();
32+
??= s_razorDelegationTriggerCharacters.Union(s_csharpTriggerCharacters).Union(HtmlTriggerCharacters).ToFrozenSet();
3133

3234
public string[] AllTriggerCharacters => _allTriggerCharacters ??= [.. s_razorTriggerCharacters.Union(AllDelegationTriggerCharacters)];
3335

@@ -55,4 +57,7 @@ public bool IsCSharpTriggerCharacter(string ch)
5557

5658
public bool IsRazorTriggerCharacter(string ch)
5759
=> s_razorTriggerCharacters.Contains(ch);
60+
61+
public bool IsRazorDelegationTriggerCharacter(string ch)
62+
=> ch == RazorDelegationTriggerCharacter;
5863
}

src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/Delegation/DelegatedCompletionHelper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ internal static class DelegatedCompletionHelper
8080
};
8181

8282
if (languageKind == RazorLanguageKind.CSharp
83-
&& CompletionTriggerAndCommitCharacters.RazorDelegationTriggerCharacters.Contains(triggerCharacter))
83+
&& triggerAndCommitCharacters.IsRazorDelegationTriggerCharacter(triggerCharacter))
8484
{
8585
// The C# language server will not return any completions for the '@' character unless we
8686
// send the completion request explicitly.

0 commit comments

Comments
 (0)