Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een Visual Studio-extensie kan de syntaxis van een document classificeren, zodat de tekst dienovereenkomstig kan worden gekleurd, wat wordt bereikt door een tagger te leveren die waarden retourneert ClassificationTag
.
Een gedetailleerde beschrijving van hoe u een tagger kunt opgeven, vindt u in het artikel Visual Studio-editor uitbreiden met een nieuwe tagger.
Om classificatie te bieden, implementeren we eerst een taggerprovider en een tagger:
[VisualStudioContribution]
internal class MyClassificationTaggerProvider :
ExtensionPart,
ITextViewTaggerProvider<ClassificationTag>,
ITextViewChangedListener
{
...
internal class MyClassificationTagger :
TextViewTagger<ClassificationTag>
{
...
Omdat we willen dat de documentkleuring zo snel mogelijk wordt weergegeven, moet de generatie van taggers zo snel mogelijk zijn. Dit artikel benadrukt het belang van:
- alleen tags genereren voor het aangevraagde documentgedeelte (of een kleine superset), niet het hele document;
- vermijd het parseren van het hele document om tags te genereren.
Zodra de structuur van het tagger gereed is en de syntaxisparsering voor de specifieke bestandsindeling is geïmplementeerd, kan het tagger tekstclassificatie bieden door waarden te maken ClassificationTag
met behulp van de beschikbare ClassificationType
know-waarden en aanroepen UpdateTagsAsync
.
List<TaggedTrackingTextRange<ClassificationTag>> tags = new();
List<TextRange> ranges = new();
...
ranges.Add(new(document, lineStart, lineLength));
tags.Add(
new TaggedTrackingTextRange<ClassificationTag>(
new TrackingTextRange(
document,
tagStartPosition,
tagLength,
TextRangeTrackingMode.ExtendNone),
new ClassificationTag(ClassificationType.KnownValues.Operator)));
...
await this.UpdateTagsAsync(ranges, tags, CancellationToken.None);
Op dit moment biedt VisualStudio.Extensibility nog geen ondersteuning voor het definiëren van tekstkleuren voor nieuwe classificatietypen, dus we moeten bestaande classificatietypen (ClassificationType.KnownValues
) gebruiken.
VisualStudio.Extensibility in-proc-extensie kan ClassificationTypeDefinition gebruiken om nieuwe classificatietypen te definiëren. Er kan naar hun naam worden verwezen met behulp van ClassificationType.Custom
.