private void scintillaControl_UpdateUI(object sender, UpdateUIEventArgs e) { // Has the caret changed position? var caretPosition = _scintillaControl.CurrentPosition; if (_lastCaretPosition != caretPosition) { _lastCaretPosition = caretPosition; BraceInfo braceInfo = GetCurrentBraceInfo(); if (braceInfo != null) { int bracePosition2 = _scintillaControl.BraceMatch(braceInfo.Position); if (bracePosition2 == Scintilla.InvalidPosition) { _scintillaControl.BraceBadLight(braceInfo.Position); } else { _scintillaControl.BraceHighlight(braceInfo.Position, bracePosition2); } } else { _scintillaControl.BraceHighlight(Scintilla.InvalidPosition, Scintilla.InvalidPosition); } } }
private void codeBox_UpdateUI(object sender, UpdateUIEventArgs e) { const string openBraces = "([{"; const string closeBraces = ")]}"; var caretPos = _codeBox.CurrentPosition; if (caretPos != _lastCaretPos) { int lastLine = _codeBox.LineFromPosition(_lastCaretPos); int currentLine = _codeBox.LineFromPosition(caretPos); _codeBox.MarkerDeleteAll(3); if (_highlightLine) { _codeBox.Lines[currentLine].MarkerAdd(3); } char charBefore = (char)_codeBox.GetCharAt(caretPos - 1); char charAfter = (char)_codeBox.GetCharAt(caretPos); int brace1Pos = Scintilla.InvalidPosition; if (closeBraces.Contains(charBefore)) { brace1Pos = caretPos - 1; } else if (openBraces.Contains(charAfter)) { brace1Pos = caretPos; } if (brace1Pos != Scintilla.InvalidPosition) { int brace2Pos = _codeBox.BraceMatch(brace1Pos); if (brace2Pos != Scintilla.InvalidPosition) { _codeBox.BraceHighlight(brace1Pos, brace2Pos); } else { _codeBox.BraceBadLight(brace1Pos); } } else { _codeBox.BraceHighlight(Scintilla.InvalidPosition, Scintilla.InvalidPosition); } _lastCaretPos = caretPos; } }
private void Scintilla_UpdateUI(object sender, UpdateUIEventArgs e) { var caretPos = Scintilla.CurrentPosition; if (_lastCaretPos == caretPos) { return; } _lastCaretPos = caretPos; var openingBracePos = -1; if (caretPos > 0 && IsBrace(Scintilla.GetCharAt(caretPos - 1))) { openingBracePos = caretPos - 1; } else if (IsBrace(Scintilla.GetCharAt(caretPos))) { openingBracePos = caretPos; } if (openingBracePos != -1) { var closingBracePos = Scintilla.BraceMatch(openingBracePos); if (closingBracePos == Scintilla.InvalidPosition) { Scintilla.BraceBadLight(openingBracePos); Scintilla.HighlightGuide = 0; } else { Scintilla.BraceHighlight(openingBracePos, closingBracePos); Scintilla.HighlightGuide = Scintilla.GetColumn(openingBracePos); } } else { Scintilla.BraceHighlight(Scintilla.InvalidPosition, Scintilla.InvalidPosition); Scintilla.HighlightGuide = 0; } }