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(); }
/// <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; }
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); // 数値 }
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(); }