private void InsertFontColor(Color fontColor)
            {
                var matchingColor = FONT_COLORS.LastOrDefault(c => c.Color.Equals(fontColor));

                if (matchingColor != null)
                {
                    this.OnSurroundTag(TMEditorHelper.ToFontColorTagName(matchingColor));
                }
            }
            private void InitializeEditorSyntaxDefinition()
            {
                // editor syntax
                using (var stream = this.GetType().Assembly.GetManifestResourceStream("MarcelJoachimKloubert.WpfAuctionDesigner._Res.AvalonEdit.Editor.xml"))
                {
                    var xmlDoc = XDocument.Load(stream);

                    // extend syntax definition dynamically
                    {
                        XElement fontXmlRootTag;
                        using (var reader = xmlDoc.CreateReader())
                        {
                            var nsManager = new XmlNamespaceManager(reader.NameTable);
                            nsManager.AddNamespace("tm", "http://icsharpcode.net/sharpdevelop/syntaxdefinition/2008");

                            var fontColorXmlPlaceholderTag = xmlDoc.XPathSelectElements(@"//tm:SyntaxDefinition/tm:RuleSet/tm:Keywords/tm:Word[text() = 'UPcuJuU6t7ybW50VpgTgScQGBKQL2Omz']",
                                                                                        nsManager)
                                                             .First();

                            fontXmlRootTag = fontColorXmlPlaceholderTag.Parent;

                            fontColorXmlPlaceholderTag.Remove();
                        }

                        // font colors
                        foreach (var color in FONT_COLORS)
                        {
                            var tagName = TMEditorHelper.ToFontColorTagName(color);

                            var wordTagName = XName.Get("Word", "http://icsharpcode.net/sharpdevelop/syntaxdefinition/2008");

                            var wordElementOpen = new XElement(wordTagName)
                            {
                                Value = string.Format("{{{0}}}", tagName),
                            };
                            fontXmlRootTag.Add(wordElementOpen);

                            var wordElementClose = new XElement(wordTagName)
                            {
                                Value = string.Format("{{/{0}}}", tagName),
                            };
                            fontXmlRootTag.Add(wordElementClose);
                        }

                        // font sizes
                        foreach (var size in FONT_SIZES)
                        {
                            var tagName = size.Value.AsString(true);

                            var wordTagName = XName.Get("Word", "http://icsharpcode.net/sharpdevelop/syntaxdefinition/2008");

                            var wordElementOpen = new XElement(wordTagName)
                            {
                                Value = string.Format("{{{0}}}", tagName),
                            };
                            fontXmlRootTag.Add(wordElementOpen);

                            var wordElementClose = new XElement(wordTagName)
                            {
                                Value = string.Format("{{/{0}}}", tagName),
                            };
                            fontXmlRootTag.Add(wordElementClose);
                        }
                    }

                    using (var reader = xmlDoc.CreateReader())
                    {
                        this.EditorSyntax = HighlightingLoader.Load(reader, HighlightingManager.Instance);
                    }
                }
            }