예제 #1
0
        private void InitSyntaxColoring()
        {
            Color foreColor = IntToColor(MainWindow.FORE_COLOR);
            Color backColor = IntToColor(MainWindow.BACK_COLOR);

            if (theme == 1)
            {
                foreColor = IntToColor(MainWindow.BACK_COLOR);
                backColor = IntToColor(MainWindow.FORE_COLOR);
            }

            // Configure the default style
            textArea.StyleResetDefault();
            //textArea.Styles[Style.CallTip].Font = "Consolas";
            //textArea.Styles[Style.CallTip].Size = 20;
            textArea.Styles[Style.Default].Font      = "Consolas";
            textArea.Styles[Style.Default].Size      = 10;
            textArea.Styles[Style.Default].BackColor = backColor;
            textArea.Styles[Style.Default].ForeColor = foreColor;
            textArea.CaretForeColor = foreColor;
            textArea.TabWidth       = MainWindow.indentSpaces;
            spaces = "";
            for (int i = 0; i < textArea.TabWidth; i++)
            {
                spaces += " ";
            }
            textArea.StyleClearAll();

            textArea.Styles[Style.LineNumber].ForeColor  = IntToColor(MainWindow.FORE_MARGIN_COLOR);
            textArea.Styles[Style.LineNumber].BackColor  = IntToColor(MainWindow.BACK_MARGIN_COLOR);
            textArea.Styles[Style.IndentGuide].ForeColor = IntToColor(MainWindow.FORE_FOLDING_COLOR);
            textArea.Styles[Style.IndentGuide].BackColor = IntToColor(MainWindow.BACK_FOLDING_COLOR);

            textArea.Styles[STYLE_SPACE].ForeColor      = foreColor;
            textArea.Styles[STYLE_COMMENT].ForeColor    = IntToColor(MainWindow.COMMENT_COLOR);
            textArea.Styles[STYLE_STRING].ForeColor     = IntToColor(MainWindow.STRING_COLOR);
            textArea.Styles[STYLE_OPERATOR].ForeColor   = IntToColor(MainWindow.OPERATOR_COLOR);
            textArea.Styles[STYLE_KEYWORD].ForeColor    = IntToColor(MainWindow.KEYWORD_COLOR);
            textArea.Styles[STYLE_OBJECT].ForeColor     = IntToColor(MainWindow.OBJECT_COLOR);
            textArea.Styles[STYLE_METHOD].ForeColor     = IntToColor(MainWindow.METHOD_COLOR);
            textArea.Styles[STYLE_SUBROUTINE].ForeColor = foreColor;
            textArea.Styles[STYLE_LABEL].ForeColor      = foreColor;
            textArea.Styles[STYLE_VARIABLE].ForeColor   = foreColor;
            textArea.Styles[STYLE_LITERAL].ForeColor    = IntToColor(MainWindow.LITERAL_COLOR);

            textArea.Styles[STYLE_COMMENT].Italic = true;
            textArea.Styles[STYLE_KEYWORD].Bold   = true;

            styles.Add(new SBStyle(STYLE_COMMENT, new Regex("^[\'].*")));
            styles.Add(new SBStyle(STYLE_STRING, new Regex("^[\"][^\"\\n]*[\"\\n]")));
            styles.Add(new SBStyle(STYLE_OPERATOR, new Regex("^[\\+|\\-|*|/|<|>|=]|^( AND | OR )")));
            styles.Add(new SBStyle(STYLE_SPACE, new Regex("^[\\s]")));
            styles.Add(new SBStyle(STYLE_KEYWORD, new Regex("^[\\W](" + keywords.ToUpper() + ")[\\W]")));
            styles.Add(new SBStyle(STYLE_OBJECT, new Regex("^[A-Za-z_][\\w]*[\\.][A-Za-z_][\\w]*")));
            styles.Add(new SBStyle(STYLE_SUBROUTINE, new Regex("^[A-Za-z_][\\w]*[(]")));
            styles.Add(new SBStyle(STYLE_LABEL, new Regex("^[A-Za-z_][\\w]*[ ]*[:]")));
            styles.Add(new SBStyle(STYLE_VARIABLE, new Regex("^[A-Za-z_][\\w]*[\\W]")));
            styles.Add(new SBStyle(STYLE_LITERAL, new Regex("^[-?\\d*\\.?\\d*]")));

            // Configure the lexer styles
            textArea.Lexer = Lexer.Container;

            const int SCI_CALLTIPSETBACK = 2205;
            const int SCI_CALLTIPSETFORE = 2206;

            textArea.DirectMessage(SCI_CALLTIPSETBACK, new IntPtr(ColorTranslator.ToWin32(SBDocument.IntToColor(MainWindow.BACK_CALLTIP_COLOR))), IntPtr.Zero);
            textArea.DirectMessage(SCI_CALLTIPSETFORE, new IntPtr(ColorTranslator.ToWin32(SBDocument.IntToColor(MainWindow.FORE_CALLTIP_COLOR))), IntPtr.Zero);
            textArea.CallTipSetForeHlt(SBDocument.IntToColor(MainWindow.HIGHLIGHT_CALLTIP_COLOR));
        }