Question

Comment vérifier si un mot à une position est dans une Span [i] du xshd-ruleset?

Merci!

Était-ce utile?

La solution

Il y a deux façons d'obtenir des informations du moteur soulignant:

Le moteur de surlignage ne stocke que la « pile span » au début de chaque ligne. Vous pouvez utiliser la méthode DocumentHighlighter.GetSpanStack pour le récupérer.

var documentHighlighter = textEditor.TextArea.GetService(typeof(IHighlighter)) as DocumentHighlighter;
bool isInComment = documentHighlighter.GetSpanStack(1)
             .Any(s => s.SpanColor != null && s.SpanColor.Name == "Comment");

Ceci renvoie vrai si la fin de la ligne 1 (= début de la ligne 2) est à l'intérieur d'un commentaire multiligne.

Pour des résultats plus détaillés à l'intérieur des lignes, vous devrez exécuter le surligneur.

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");

Bien sûr, l'identification des portées / sections de couleur ne fonctionne que de manière fiable si ces couleurs sont nommées. Tous les highlightings intégrés ont été mis à jour pour utiliser des couleurs nommées, donc s'il vous plaît vérifier les fichiers .xshd premier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top