Frage

Wie kann man prüfen, ob ein Wort in einer Position in einem Span ist [i] die xshd-ruleset?

Danke!

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top