Example #1
0
        public TextLayer(TextView parent, TextDocument textDocument) : base(parent)
        {
            Document = textDocument;

            elementGenerators = new ObserveAddRemoveCollection <VisualLineElementGenerator>(ElementGenerator_Added, ElementGenerator_Removed);
            lineTransformers  = new ObserveAddRemoveCollection <IVisualLineTransformer>(LineTransformer_Added, LineTransformer_Removed);

            heightTree = new HeightTree(textDocument, Skin.DefaultFont.Size);
            lines      = new Dictionary <DocumentLine, VisualLine>();

            GlobalTextRunProperties = new TextRunProperties {
                Foreground = Color.Black
            };

            lineTransformers = new ObserveAddRemoveCollection <IVisualLineTransformer>(LineTransformer_Added, LineTransformer_Removed);

            HighlightingDefinition = HighlightingManager.DefaultHighlightingManager.Instance.GetDefinition("C#");

            var colorizer = new HighlightingColorizer(highlightingDefinition.MainRuleSet);

            lineTransformers.Add(colorizer);

            weakLineTracker = WeakLineTracker.Register(textDocument, this);

            RebuildDocument();
        }
Example #2
0
 void OnSyntaxHighlightingChanged(IHighlightingDefinition newValue)
 {
     if (colorizer != null)
     {
         this.TextArea.TextView.LineTransformers.Remove(colorizer);
         colorizer = null;
     }
     if (newValue != null)
     {
         TextView textView = this.TextArea.TextView;
         colorizer = new HighlightingColorizer(textView, newValue.MainRuleSet);
         textView.LineTransformers.Insert(0, colorizer);
     }
 }
        void UpdatePreview()
        {
            XshdSyntaxDefinition xshd = (XshdSyntaxDefinition)languageComboBox.SelectedItem;

            if (xshd != null)
            {
                var customizationsForCurrentLanguage = customizationList.Where(c => c.Language == null || c.Language == xshd.Name);
                CustomizingHighlighter.ApplyCustomizationsToDefaultElements(textEditor, customizationsForCurrentLanguage);
                ApplyToRendering(textEditor, customizationsForCurrentLanguage);
                var      item     = (IHighlightingItem)listBox.SelectedItem;
                TextView textView = textEditor.TextArea.TextView;
                foldingManager.Clear();
                textMarkerService.RemoveAll(m => true);
                textView.LineTransformers.Remove(colorizer);
                colorizer = null;
                if (item != null)
                {
                    if (item.ParentDefinition != null)
                    {
                        var highlighter = new CustomizingHighlighter(
                            new DocumentHighlighter(textView.Document, item.ParentDefinition),
                            customizationsForCurrentLanguage
                            );
                        colorizer = new HighlightingColorizer(highlighter);
                        textView.LineTransformers.Add(colorizer);
                    }
                    textEditor.Select(0, 0);
                    bracketHighlighter.SetHighlight(null);
                    textEditor.Options.HighlightCurrentLine = false;
                    item.ShowExample(textEditor.TextArea);
                    ITextMarker m = textMarkerService.TextMarkers.SingleOrDefault();
                    if (m != null && m.Tag != null)
                    {
                        ((Action <IHighlightingItem, ITextMarker>)m.Tag)(item, m);
                    }
                }
            }
        }