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));
}
Example #2
0
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);
        }
    }
}