AvalonEdit - Ruleset Span
-
25-09-2019 - |
Frage
Wie kann man prüfen, ob ein Wort in einer Position in einem Span ist [i] die xshd-ruleset?
Danke!
Lösung
Es gibt zwei Möglichkeiten, Informationen aus der Hervorhebung Motor zu bekommen:
Die Hervorhebung Motor speichert nur die „Spanne Stack“ am Anfang jeder Zeile. Sie können die DocumentHighlighter.GetSpanStack
-Methode verwenden, um es abzurufen.
var documentHighlighter = textEditor.TextArea.GetService(typeof(IHighlighter)) as DocumentHighlighter;
bool isInComment = documentHighlighter.GetSpanStack(1)
.Any(s => s.SpanColor != null && s.SpanColor.Name == "Comment");
Dies wird true zurück, wenn das Ende der Linie 1 (= die Linie 2 startet) ist innerhalb eines mehrzeiligen Kommentars.
Für weitere detaillierte Ergebnisse innerhalb Linien, werden Sie die Markierung laufen müssen.
int off = document.GetOffset(7, 22);
HighlightedLine result = documentHighlighter.HighlightLine(7);
bool isInComment = result.Sections.Any(s => s.Offset <= off
&& s.Offset+s.Length >= off
&& s.Color.Name == "Comment");
Natürlich Identifizierung Spannweiten / sections durch Farbe funktioniert nur dann zuverlässig, wenn diese Farben benannt sind. Nicht alle Einbau-Hervorhebungen wurden aktualisiert benannten Farben zu verwenden, so wenden Sie sich bitte zuerst die .xshd Dateien überprüfen.