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); }
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)); }
/// <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)); }