How do I highlight syntax errors using ICSharpCode.TextEditor.TextEditorControl?
Asked Answered
H

1

8

I'm using ICSharpCode.TextEditor.TextEditorControl as my DSL editor. When I get DSL compilation errors, I would like to highlight the offending text to provide a better user experience. However, I'm having difficulty finding how to do this.

So far, I've found that there is a ShowInvalidLines property but I don't see a way to mark any lines as invalid. I also see HighlightSpanStack property of LineSegment and HighlightingStrategy but not sure how they are supposed to be used.

Any help would be appreciated. Thanks!

Huelva answered 15/9, 2011 at 21:22 Comment(0)
S
14

To highlight a piece of text use a TextMarker. The following code underlines the word Error with a red wavy line.

TextEditorControl textEditor = new TextEditorControl();
textEditor.Text = "Mark Error";

int offset = 5;
int length = 5;
TextMarker marker = new TextMarker(offset, length, TextMarkerType.WaveLine, Color.Red);
textEditor.Document.MarkerStrategy.AddMarker(marker);

You can highlight the text with any background and foreground colour and the TextMarkerType supports underlining, wavy lines or a solid block of colour.

Selfregulated answered 17/9, 2011 at 11:9 Comment(3)
doesnt work on latest 4.4.2 version, would be good if someone could update the syntax. for example, MarketStragety is no moreCoronary
The last version released of the ICSharpCode.TextEditor was 3.2.1.6466. This question refers to the older ICSharpCode.TextEditor control. AvalonEdit, which is the newer text editor included with SharpDevelop, has a version 4.4.2. AvalonEdit was re-written to support WPF and has a very different API.Selfregulated
I had to put a Refresh() to force the control to redraw. But once I did that, I could see my multiple highlights just fine.Quinze

© 2022 - 2024 — McMap. All rights reserved.