void SetAStyle(Editor& ed, int style, Colour fore, Colour back=0xFFFFFFFF, int size=-1, const char *face=0) { ed.Command(SCI_STYLESETFORE, style, fore); ed.Command(SCI_STYLESETBACK, style, back); if (size >= 1) ed.Command(SCI_STYLESETSIZE, style, size); if (face) ed.Command(SCI_STYLESETFONT, style, reinterpret_cast<sptr_t>(face)); }
void BraceMatch(Editor& ed) { int braceAtCaret = -1; int braceOpposite = -1; int caretPos = int(ed.Command(SCI_GETCURRENTPOS)); char charBefore = '\0'; int lengthDoc = int(ed.Command(SCI_GETLENGTH)); if ((lengthDoc > 0) && (caretPos > 0)) { charBefore = ed.Command(SCI_GETCHARAT, caretPos - 1, 0); } // Priority goes to character before caret if (charBefore && strchr("[](){}", charBefore)) { braceAtCaret = caretPos - 1; } if (lengthDoc > 0 && (braceAtCaret < 0)) { // No brace found so check other side char charAfter = ed.Command(SCI_GETCHARAT, caretPos, 0); if (charAfter && strchr("[](){}", charAfter)) { braceAtCaret = caretPos; } } if (braceAtCaret >= 0) braceOpposite = int(ed.Command(SCI_BRACEMATCH, braceAtCaret, 0)); if ((braceAtCaret != -1) && (braceOpposite == -1)) { ed.Command(SCI_BRACEBADLIGHT, braceAtCaret); ed.Command(SCI_SETHIGHLIGHTGUIDE, 0); } else { ed.Command(SCI_BRACEHIGHLIGHT, braceAtCaret, braceOpposite); //if (_pEditView->isShownIndentGuide()) { int columnAtCaret = int(ed.Command(SCI_GETCOLUMN, braceAtCaret)); int columnOpposite = int(ed.Command(SCI_GETCOLUMN, braceOpposite)); ed.Command(SCI_SETHIGHLIGHTGUIDE, (columnAtCaret < columnOpposite)?columnAtCaret:columnOpposite); } } }