@@ -10,24 +10,26 @@ namespace Microsoft.CodeAnalysis.Razor.Completion;
1010
1111internal 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}
0 commit comments