コード例 #1
0
        private bool IsInEmptyCodeBlock([NotNull] ITextControl textControl)
        {
            var lexer = GetCachingLexer(textControl);

            if (lexer == null)
            {
                return(false);
            }
            int caretOffset = textControl.Caret.Offset();

            if (!WebTypingAssistUtil.FindTokenAt(lexer, caretOffset))
            {
                return(false);
            }
            if (!(lexer.TokenType is T4TokenNodeType tokenType))
            {
                return(false);
            }
            if (tokenType != T4TokenNodeTypes.BLOCK_END)
            {
                return(false);
            }
            if (caretOffset != lexer.TokenStart)
            {
                return(false);
            }
            lexer.Advance(-1);
            var prevToken = lexer.TokenType;

            if (prevToken != null && T4TokenNodeTypes.CodeBlockStarts[prevToken])
            {
                return(true);
            }
            return(false);
        }
コード例 #2
0
 protected override bool IsSupported(ITextControl textControl)
 {
     if (!WebTypingAssistUtil.IsProjectFileSupported <T4ProjectFileType, CSharpLanguage>(textControl, Solution))
     {
         return(false);
     }
     if (WebTypingAssistUtil.IsSupported <ICSharpTokenNodeType>(GetCachingLexer(textControl), textControl))
     {
         return(true);
     }
     return(IsInEmptyCodeBlock(textControl));
 }
コード例 #3
0
 /// <summary>
 /// Gets whether a given text control is supported by the assistant.
 /// </summary>
 /// <param name="textControl">The text control to check.</param>
 /// <returns><c>true</c> if <paramref name="textControl"/> is a T4 file with C# code behind, <c>false</c> otherwise.</returns>
 protected override bool IsSupported(ITextControl textControl)
 {
     return(WebTypingAssistUtil.IsProjectFileSupported <T4ProjectFileType, CSharpLanguage>(textControl, Solution));
 }