private async void HighlightBrackets(object sender, EventArgs eventArgs) { if (TextArea.Caret.Offset < 1) { _bracketRenderer.SetHighlight(null); return; } var charBack = Text[TextArea.Caret.Offset - 1]; var charFront = Text.Length > TextArea.Caret.Offset ? Text[TextArea.Caret.Offset] : '\0'; var character = '\0'; var isInFrontOf = false; if (KeystrokeService.IsBracketOrParen(charBack)) { character = charBack; } else if (KeystrokeService.IsBracketOrParen(charFront)) { character = charFront; isInFrontOf = true; } if (character != '\0') { var openToken = default(TokenKind); //character == '{' ? TokenKind.LCurly : TokenKind.LParen; var closeToken = default(TokenKind); // character == '}' ? TokenKind.RCurly : TokenKind.RParen; var startWithClose = false; if (character == '{' || character == '}') { openToken = TokenKind.LCurly; closeToken = TokenKind.RCurly; } else { openToken = TokenKind.LParen; closeToken = TokenKind.RParen; } if (character == '}' || character == ')') { startWithClose = true; } var offset = TextArea.Caret.Offset; if (!isInFrontOf) { offset -= 1; } var result = await _languageContext.FindBracketMatch(offset, openToken, closeToken, startWithClose); if (result == null) { _bracketRenderer.SetHighlight(null); return; } _bracketRenderer.SetHighlight(result); } else { _bracketRenderer.SetHighlight(null); } }