Example #1
0
        private void setHighlighterMUC()
        {
            Sgry.Azuki.Highlighter.KeywordHighlighter keywordHighlighter = new Sgry.Azuki.Highlighter.KeywordHighlighter();
            //keywordHighlighter.AddRegex("^.*", false, CharClass.DocComment);
            keywordHighlighter.AddRegex("^[A-Z]+ ", CharClass.Keyword);
            keywordHighlighter.AddRegex("^#[A-Za-z0-9]* ", CharClass.Keyword);
            keywordHighlighter.AddRegex("^#\\S*\\*", CharClass.Keyword);
            keywordHighlighter.AddRegex("^'@", CharClass.Keyword);
            keywordHighlighter.AddRegex("^'%\\S+ ", CharClass.Keyword);
            keywordHighlighter.AddRegex("^\\{ .*", CharClass.DocComment);
            keywordHighlighter.AddRegex("^\\}.*", CharClass.DocComment);
            keywordHighlighter.AddRegex("\\;.*", CharClass.Comment);
            //keywordHighlighter.AddEnclosure("{", "}", CharClass.Comment, true);
            azukiControl                  = new AzukiControl();
            azukiControl.Font             = new Font(setting.other.TextFontName, setting.other.TextFontSize, setting.other.TextFontStyle);
            azukiControl.Dock             = DockStyle.Fill;
            azukiControl.ShowsIconBar     = true;
            azukiControl.Highlighter      = keywordHighlighter;
            azukiControl.IconBarImageList = imglstIconBar;
            azukiControl.IconBarClicked  += AzukiControl_IconBarClicked;
            azukiControl.TextChanged     += AzukiControl_TextChanged;
            azukiControl.KeyDown         += AzukiControl_KeyDown;
            azukiControl.HScroll         += AzukiControl_CancelSien;
            azukiControl.VScroll         += AzukiControl_CancelSien;
            azukiControl.LocationChanged += AzukiControl_CancelSien;
            azukiControl.SizeChanged     += AzukiControl_CancelSien;
            azukiControl.CaretMoved      += AzukiControl_CaretMoved;
            azukiControl.AllowDrop        = true;
            azukiControl.DragOver        += AzukiControl_DragOver;
            azukiControl.DragDrop        += AzukiControl_DragDrop;
            azukiControl.Silence          = true;

            azukiControl.ColorScheme.ForeColor          = Color.FromArgb(setting.ColorScheme.Azuki_ForeColor);
            azukiControl.ColorScheme.BackColor          = Color.FromArgb(setting.ColorScheme.Azuki_BackColor);
            azukiControl.ColorScheme.IconBarBack        = Color.FromArgb(setting.ColorScheme.Azuki_IconBarBack);
            azukiControl.ColorScheme.LineNumberBack     = Color.FromArgb(setting.ColorScheme.Azuki_LineNumberBack_Normal);
            azukiControl.ColorScheme.LineNumberFore     = Color.FromArgb(setting.ColorScheme.Azuki_LineNumberFore_Normal);
            azukiControl.ColorScheme.SelectionBack      = Color.FromArgb(setting.ColorScheme.Azuki_SelectionBack_Normal);
            azukiControl.ColorScheme.SelectionFore      = Color.FromArgb(setting.ColorScheme.Azuki_SelectionFore_Normal);
            azukiControl.ColorScheme.MatchedBracketBack = Color.FromArgb(setting.ColorScheme.Azuki_MatchedBracketBack_Normal);
            azukiControl.ColorScheme.MatchedBracketFore = Color.FromArgb(setting.ColorScheme.Azuki_MatchedBracketFore_Normal);
            azukiControl.ColorScheme.SetColor(CharClass.Keyword, Color.FromArgb(setting.ColorScheme.Azuki_Keyword), Color.Transparent);
            azukiControl.ColorScheme.SetColor(CharClass.Comment, Color.FromArgb(setting.ColorScheme.Azuki_Comment), Color.Transparent);
            azukiControl.ColorScheme.SetColor(CharClass.DocComment, Color.FromArgb(setting.ColorScheme.Azuki_DocComment), Color.Transparent);
            azukiControl.ColorScheme.SetColor(CharClass.Number, Color.FromArgb(setting.ColorScheme.Azuki_Number), Color.Transparent);
            azukiControl.ColorScheme.SetColor(CharClass.Delimiter, Color.FromArgb(setting.ColorScheme.Azuki_Number), Color.Transparent);

            MarkingInfo info = new MarkingInfo(1, "TraceInfo");

            Marking.Register(info);
            TextDecoration dec = new BgColorTextDecoration(Color.DarkGoldenrod);

            azukiControl.ColorScheme.SetMarkingDecoration(1, dec);

            this.Controls.Add(azukiControl);

            frmSien        = new FrmSien(setting);
            frmSien.parent = main;
            frmSien.Show();
        }
Example #2
0
        /// <summary>
        /// 標準の色分け設定、コマンド種別の色分けを適用します。
        /// </summary>
        public void ApplyColorSettings()
        {
            var Highlighter = new Sgry.Azuki.Highlighter.KeywordHighlighter();
            var SQkeywords  = Resources.SquirrelKeywords.Replace("\r", "").Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);    //リソースからスクリプトのキーワード一覧を読み込む

            //スクリプトのキーワード情報をコメント等余計な部分を落とす
            for (var i = 0; i < SQkeywords.Length; i++)
            {
                SQkeywords[i] = SQkeywords[i].Substring(0, SQkeywords[i].IndexOf(";"));
            }

            //キーワード色分け設定
            Highlighter.AddKeywordSet(SQkeywords, Sgry.Azuki.CharClass.Keyword);
            Highlighter.AddKeywordSet(CtrlComponent.Text.ctlCommandTree.CodeContainers.ToArray(), Sgry.Azuki.CharClass.Keyword2);
            Highlighter.AddKeywordSet(CtrlComponent.Text.ctlCommandTree.CodeMembers.ToArray(), Sgry.Azuki.CharClass.Keyword3);

            //コメント色分け設定
            Highlighter.AddEnclosure("\"", "\"", Sgry.Azuki.CharClass.String, false);
            Highlighter.AddEnclosure(Resources.Code_CommentStart, Resources.Code_CommentEnd, Sgry.Azuki.CharClass.Comment, true);
            Highlighter.AddLineHighlight(Resources.Code_Comment1, Sgry.Azuki.CharClass.Comment);

            this.azkEditor.Highlighter = Highlighter;
        }
Example #3
0
        private void setupAzuki()
        {
            Debug.WriteLine("setupAzuki");
            var editor      = txtScript;
            var highlighter = new Sgry.Azuki.Highlighter.KeywordHighlighter();

            RcChipBase chip;

            // チップ名
            {
                List <string> list = new List <string>();
                for (int i = 0; i < RcData.MaxChipCount; i++)
                {
                    chip = data.GetChipFromLib(i);
                    if (chip != null && chip.Name != null && chip.Name != "")
                    {
                        list.Add(data.luascript ? chip.Name.ToUpper() : chip.Name);
                    }
                }
                list.Sort();
                //highlighter.SetKeywords(list.ToArray(), Sgry.Azuki.CharClass.Keyword);
                highlighter.AddKeywordSet(list.ToArray(), Sgry.Azuki.CharClass.Keyword);
            }

            // 変数名
            {
                List <string> list = new List <string>();
                foreach (RcVal v in data.vals.List)
                {
                    list.Add(data.luascript ? v.ValName.ToUpper() : v.ValName);
                }
                list.Sort();
                //highlighter.SetKeywords(list.ToArray(), Sgry.Azuki.CharClass.Keyword2);
                highlighter.AddKeywordSet(list.ToArray(), Sgry.Azuki.CharClass.Keyword2);
            }
            // 関数名
            {
                List <string> list = new List <string>();
                if (functionList == null)
                {
                    updateFunctionList();
                }
                foreach (var s in functionList)
                {
                    if (s.Text[0] != '_' && s.Text[0] != 'm')
                    {
                        continue;
                    }
                    string f = s.Text.Split('(')[0];
                    if (f.Contains("?"))
                    {
                        list.Add(f.Replace('?', 'X'));
                        list.Add(f.Replace('?', 'Y'));
                        list.Add(f.Replace('?', 'Z'));
                    }
                    else
                    {
                        list.Add(f);
                    }
                }
                list.Sort();
                //highlighter.SetKeywords(list.ToArray(), Sgry.Azuki.CharClass.Keyword3);
                highlighter.AddKeywordSet(list.ToArray(), Sgry.Azuki.CharClass.Keyword3);
            }
            // その他
            highlighter.AddEnclosure("\"", "\"", Sgry.Azuki.CharClass.String);
            if (data.luascript)
            {
                // Luaの設定
                var kwd = new[] {
                    "and",
                    "break",
                    "do",
                    "else",
                    "elseif",
                    "end",
                    "false",
                    "for",
                    "function",
                    "if",
                    "in",
                    "local",
                    "nil",
                    "not",
                    "or",
                    "repeat",
                    "return",
                    "then",
                    "true",
                    "until",
                    "while",
                    // ここからLua組み込み関数
                    "assert",
                    "collectgarbage",
                    "dofile",
                    "error",
                    "_G",
                    "getfenv",
                    "getmetatable",
                    "loadfile",
                    "loadlib",
                    "loadstring",
                    "next",
                    "pairs",
                    "pcall",
                    "print",
                    "rawequal",
                    "rawget",
                    "rawset",
                    "require",
                    "setfenv",
                    "setmetatable",
                    "tonumber",
                    "tostring",
                    "type",
                    "unpack",
                    "_VERSION",
                    "xpcall",
                };
                Array.Sort <string>(kwd);
                //highlighter.SetKeywords(kwd, Sgry.Azuki.CharClass.Macro);
                highlighter.AddKeywordSet(kwd, Sgry.Azuki.CharClass.Macro);
                var op = new[] { "+", "-", "*", "/", "^", "=", "~=", "<=", ">=", "<", ">", "==", ",", ".", "..", "...", };
                Array.Sort <string>(op);
                //highlighter.SetKeywords(op, Sgry.Azuki.CharClass.Delimitter);
                //highlighter.SetKeywords(op, Sgry.Azuki.CharClass.Delimiter);
                highlighter.AddKeywordSet(op, Sgry.Azuki.CharClass.Delimiter);
                var lib = new[] {
                    "coroutine",
                    "string",
                    "table",
                    "math",
                };
                Array.Sort <string>(lib);
                //highlighter.SetKeywords(lib, Sgry.Azuki.CharClass.Type);
                highlighter.AddKeywordSet(lib, Sgry.Azuki.CharClass.Type);
                highlighter.AddLineHighlight("--", Sgry.Azuki.CharClass.Comment);
                highlighter.AddEnclosure("[[", "]]", Sgry.Azuki.CharClass.Comment);
            }
            else
            {
                // Scriptの設定
                var kwd = new[] { "if", "goto", "label", "print" };
                Array.Sort <string>(kwd);
                //highlighter.SetKeywords(kwd, Sgry.Azuki.CharClass.Macro);
                highlighter.AddKeywordSet(kwd, Sgry.Azuki.CharClass.Macro);
                var op = new[] { "+", "-", "*", "/", "=", "!=", "<>", ">", "<", ">=", "<=", "&", "|" };
                Array.Sort <string>(op);
                //highlighter.SetKeywords(op, Sgry.Azuki.CharClass.Delimiter);
                highlighter.AddKeywordSet(op, Sgry.Azuki.CharClass.Delimiter);
                highlighter.AddLineHighlight("//", Sgry.Azuki.CharClass.Comment);
            }


            editor.Highlighter = highlighter;

            // タブ幅は出力オプションから継承
            editor.TabWidth = (int)data.OutputOption.IndentNum;

            // 色設定
            editor.ColorScheme.ForeColor = Color.Black;
            editor.ColorScheme.BackColor = Color.White;
            editor.ColorScheme.SetColor(Sgry.Azuki.CharClass.Keyword, Color.DarkCyan, Color.White);      // チップ名
            editor.ColorScheme.SetColor(Sgry.Azuki.CharClass.Keyword2, Color.DarkBlue, Color.White);     // 変数名
            editor.ColorScheme.SetColor(Sgry.Azuki.CharClass.Keyword3, Color.Red, Color.White);          // 関数名
            editor.ColorScheme.SetColor(Sgry.Azuki.CharClass.String, Color.DarkRed, Color.White);        // 文字列
            editor.ColorScheme.SetColor(Sgry.Azuki.CharClass.Comment, Color.Green, Color.White);         // コメント
            editor.ColorScheme.SetColor(Sgry.Azuki.CharClass.Macro, Color.Blue, Color.White);            // 制御構文
            editor.ColorScheme.SetColor(Sgry.Azuki.CharClass.Delimiter, Color.Violet, Color.White);      // 演算子
            editor.ColorScheme.SetColor(Sgry.Azuki.CharClass.Type, Color.Gold, Color.White);             // ライブラリ名(Luaのみ)
            editor.ColorScheme.SetColor(Sgry.Azuki.CharClass.Number, Color.DarkGreen, Color.White);      // 数値
        }
Example #4
0
        public FrmEditor(Setting setting)
        {
            InitializeComponent();
            this.setting = setting;

            Sgry.Azuki.Highlighter.KeywordHighlighter keywordHighlighter = new Sgry.Azuki.Highlighter.KeywordHighlighter();
            keywordHighlighter.AddRegex("^[^'].*", false, CharClass.DocComment);
            keywordHighlighter.AddRegex("^'[A-Za-z0-9\\-\\,]+ ", CharClass.Keyword);
            keywordHighlighter.AddRegex("^'@ ", CharClass.Keyword);
            keywordHighlighter.AddRegex("^'%\\S+ ", CharClass.Keyword);
            keywordHighlighter.AddEnclosure("'{", "}", CharClass.Comment, true);
            azukiControl                  = new AzukiControl();
            azukiControl.Font             = new Font(setting.other.TextFontName, setting.other.TextFontSize, setting.other.TextFontStyle);
            azukiControl.Dock             = DockStyle.Fill;
            azukiControl.ShowsIconBar     = true;
            azukiControl.Highlighter      = keywordHighlighter;
            azukiControl.IconBarImageList = imglstIconBar;
            azukiControl.IconBarClicked  += AzukiControl_IconBarClicked;
            azukiControl.TextChanged     += AzukiControl_TextChanged;
            azukiControl.KeyDown         += AzukiControl_KeyDown;
            azukiControl.HScroll         += AzukiControl_CancelSien;
            azukiControl.VScroll         += AzukiControl_CancelSien;
            azukiControl.LocationChanged += AzukiControl_CancelSien;
            azukiControl.SizeChanged     += AzukiControl_CancelSien;
            azukiControl.CaretMoved      += AzukiControl_CaretMoved;
            azukiControl.AllowDrop        = true;
            azukiControl.DragOver        += AzukiControl_DragOver;
            azukiControl.DragDrop        += AzukiControl_DragDrop;
            azukiControl.Silence          = true;

            azukiControl.ColorScheme.ForeColor          = Color.FromArgb(setting.ColorScheme.Azuki_ForeColor);
            azukiControl.ColorScheme.BackColor          = Color.FromArgb(setting.ColorScheme.Azuki_BackColor);
            azukiControl.ColorScheme.IconBarBack        = Color.FromArgb(setting.ColorScheme.Azuki_IconBarBack);
            azukiControl.ColorScheme.LineNumberBack     = Color.FromArgb(setting.ColorScheme.Azuki_LineNumberBack_Normal);
            azukiControl.ColorScheme.LineNumberFore     = Color.FromArgb(setting.ColorScheme.Azuki_LineNumberFore_Normal);
            azukiControl.ColorScheme.SelectionBack      = Color.FromArgb(setting.ColorScheme.Azuki_SelectionBack_Normal);
            azukiControl.ColorScheme.SelectionFore      = Color.FromArgb(setting.ColorScheme.Azuki_SelectionFore_Normal);
            azukiControl.ColorScheme.MatchedBracketBack = Color.FromArgb(setting.ColorScheme.Azuki_MatchedBracketBack_Normal);
            azukiControl.ColorScheme.MatchedBracketFore = Color.FromArgb(setting.ColorScheme.Azuki_MatchedBracketFore_Normal);
            azukiControl.ColorScheme.SetColor(CharClass.Keyword, Color.FromArgb(setting.ColorScheme.Azuki_Keyword), Color.Transparent);
            azukiControl.ColorScheme.SetColor(CharClass.Comment, Color.FromArgb(setting.ColorScheme.Azuki_Comment), Color.Transparent);
            azukiControl.ColorScheme.SetColor(CharClass.DocComment, Color.FromArgb(setting.ColorScheme.Azuki_DocComment), Color.Transparent);
            azukiControl.ColorScheme.SetColor(CharClass.Number, Color.FromArgb(setting.ColorScheme.Azuki_Number), Color.Transparent);
            azukiControl.ColorScheme.SetColor(CharClass.Delimiter, Color.FromArgb(setting.ColorScheme.Azuki_Number), Color.Transparent);

            MarkingInfo info = new MarkingInfo(1, "TraceInfo");

            Marking.Register(info);
            TextDecoration dec = new BgColorTextDecoration(Color.DarkGoldenrod);

            azukiControl.ColorScheme.SetMarkingDecoration(1, dec);

            azukiControl.SetKeyBind(Keys.Home, ActionHome);
            azukiControl.SetKeyBind((uint)(Keys.Shift | Keys.Enter), ActionShiftEnter);
            azukiControl.SetKeyBind((uint)(Keys.Control | Keys.Divide), ActionComment);
            azukiControl.SetKeyBind((uint)(Keys.Control | Keys.OemQuestion), ActionComment);
            azukiControl.SetKeyBind((uint)(Keys.Control | Keys.F), ActionFind);
            azukiControl.SetKeyBind((uint)(Keys.Control | Keys.PageDown), ActionJumpAnchorNext);
            azukiControl.SetKeyBind((uint)(Keys.Control | Keys.PageUp), ActionJumpAnchorPrevious);
            azukiControl.SetKeyBind((uint)(Keys.F3), ActionFindNext);
            azukiControl.SetKeyBind((uint)(Keys.Shift | Keys.F3), ActionFindPrevious);

            this.Controls.Add(azukiControl);

            frmSien        = new FrmSien(setting);
            frmSien.parent = main;
            frmSien.Show();
        }