/// <summary> /// Tells the instance to validate the text referenced by the given <paramref name="changedRange"/>. /// </summary> /// <param name="changedRange">Range of changed text</param> protected virtual void ProcessSyntaxValidation(Range changedRange) { IContentSyntaxValidator syntaxValidator = ((IContentAssistTextBox)this).ContentSyntaxValidator; if (syntaxValidator == null) { return; } // Clean all styles Range.ClearStyle(iErrorLineStyle); iSyntaxHints.Clear(); // Check for syntax errors again string text = Range.Text; IEnumerable <IContentSyntaxValidationHint> hints = syntaxValidator.Validate(text); Place start = new Place(0, 0); using (IEnumerator <IContentSyntaxValidationHint> itr = hints.GetEnumerator()) { while (itr.MoveNext()) { IContentSyntaxValidationHint hint = itr.Current; iSyntaxHints.Add(hint.BeginLine, hint); Range hintRange = GetRange(new Place(hint.BeginColumn, hint.BeginLine), new Place(hint.EndColumn, hint.EndLine)); while (string.IsNullOrEmpty(hintRange.Text) && hintRange.Start > start) { hintRange.GoLeft(true); } Style style = null; if (hint.Type == EContentValidationSyntaxHintType.Error) { style = iErrorLineStyle; } if (hint.Type == EContentValidationSyntaxHintType.Warning) { style = iWarningLineStyle; } if (hint.Type == EContentValidationSyntaxHintType.Info) { style = iInfoLineStyle; } if (style == null) { continue; } hintRange.SetStyle(style); } } }
/// <summary> /// Tells the instance that the <see cref="IContentAssistTextBox.ContentSyntaxValidator"/> property has been changed. /// </summary> /// <param name="validator">New validator</param> protected virtual void OnContentSyntaxValidatorChanged(IContentSyntaxValidator validator) { if (validator == null) { return; } // Lazy initialize resources if (iErrorLineStyle == null) { SyntaxHighlighter.AddResilientStyle(iErrorLineStyle = new WavyLineStyle(255, Color.Red)); SyntaxHighlighter.AddResilientStyle(iWarningLineStyle = new WavyLineStyle(255, Color.Yellow)); SyntaxHighlighter.AddResilientStyle(iInfoLineStyle = new WavyLineStyle(255, Color.Green)); iErrorBitmap = LoadBitmap("Error-32.png"); iWarningBitmap = LoadBitmap("Warning-32.png"); iInfoBitmap = LoadBitmap("Info-32.png"); } }