/* TextEditor::checkBraceMatch * Checks for a brace match at the current cursor position *******************************************************************/ void TextEditor::checkBraceMatch() { #ifdef __WXMAC__ bool refresh = false; #else bool refresh = true; #endif // Check for brace match at current position int bracematch = BraceMatch(GetCurrentPos()); if (bracematch != wxSTC_INVALID_POSITION) { BraceHighlight(GetCurrentPos(), bracematch); if (refresh) Refresh(); return; } // No match, check for match at previous position bracematch = BraceMatch(GetCurrentPos() - 1); if (bracematch != wxSTC_INVALID_POSITION) { BraceHighlight(GetCurrentPos() - 1, bracematch); if (refresh) Refresh(); return; } // No match at all, clear any previous brace match BraceHighlight(-1, -1); if (refresh) Refresh(); }
void CodeEditor::HighlightBraces() { int currPos = GetCurrentPos(); int newPos = BraceMatch(currPos); if (newPos == wxSCI_INVALID_POSITION) { if(currPos > 0) newPos = BraceMatch(--currPos); } wxChar ch = GetCharAt(currPos); if (ch == wxT('{') || ch == wxT('[') || ch == wxT('(') || ch == wxT('}') || ch == wxT(']') || ch == wxT(')')) { if (newPos != wxSCI_INVALID_POSITION) { BraceHighlight(currPos, newPos); } else { BraceBadLight(currPos); } } else BraceHighlight(-1, -1); Refresh(false); }
/* TextEditor::checkBraceMatch * Checks for a brace match at the current cursor position *******************************************************************/ void TextEditor::checkBraceMatch() { #ifdef __WXMAC__ bool refresh = false; #else bool refresh = true; #endif // Ignore if cursor position hasn't changed since the last check if (GetCurrentPos() == bm_cursor_last_pos) return; bm_cursor_last_pos = GetCurrentPos(); // Check for brace match at current position int bracematch = BraceMatch(GetCurrentPos()); if (bracematch != wxSTC_INVALID_POSITION) { BraceHighlight(GetCurrentPos(), bracematch); if (refresh) { Refresh(); Update(); } return; } // No match, check for match at previous position bracematch = BraceMatch(GetCurrentPos() - 1); if (bracematch != wxSTC_INVALID_POSITION) { BraceHighlight(GetCurrentPos() - 1, bracematch); if (refresh) { Refresh(); Update(); } return; } // No match at all, clear any previous brace match BraceHighlight(-1, -1); if (refresh) { Refresh(); Update(); } }
void Edit::OnBraceMatch (wxCommandEvent &WXUNUSED(event)) { int min = GetCurrentPos (); int max = BraceMatch (min); if (max > (min+1)) { BraceHighlight (min+1, max); SetSelection (min+1, max); }else{ BraceBadLight (min); } }
void ctlSQLBox::OnPositionStc(wxStyledTextEvent &event) { int pos = GetCurrentPos(); wxChar ch = GetCharAt(pos - 1); int st = GetStyleAt(pos - 1); int match; // Line numbers // Ensure we don't recurse through any paint handlers on Mac #ifdef __WXMAC__ Freeze(); #endif UpdateLineNumber(); #ifdef __WXMAC__ Thaw(); #endif // Clear all highlighting BraceBadLight(wxSTC_INVALID_POSITION); // Check for braces that aren't in comment styles, // double quoted styles or single quoted styles if ((ch == '{' || ch == '}' || ch == '[' || ch == ']' || ch == '(' || ch == ')') && st != 2 && st != 6 && st != 7) { match = BraceMatch(pos - 1); if (match != wxSTC_INVALID_POSITION) BraceHighlight(pos - 1, match); } // Roll back through the doc and highlight any unmatched braces while ((pos--) >= 0) { ch = GetCharAt(pos); st = GetStyleAt(pos); if ((ch == '{' || ch == '}' || ch == '[' || ch == ']' || ch == '(' || ch == ')') && st != 2 && st != 6 && st != 7) { match = BraceMatch(pos); if (match == wxSTC_INVALID_POSITION) { BraceBadLight(pos); break; } } } event.Skip(); }