Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Visual Studio uzantısı, bir belgenin söz dizimini sınıflandırarak metnin uygun şekilde renklendirilmesine olanak tanıyabilir ve bu, değerleri döndüren ClassificationTag
bir etikete katkıda bulunarak elde edilir.
Yeni bir etiketleyici ile Visual Studio düzenleyicisini genişletme makalesinde, bir etiketleyiciyi nasıl sağlayacağınıza ilişkin ayrıntılı bir açıklama bulabilirsiniz.
Sınıflandırma sağlamak için önce bir etiketleyici sağlayıcısı ve bir etiketleyici uygularız.
[VisualStudioContribution]
internal class MyClassificationTaggerProvider :
ExtensionPart,
ITextViewTaggerProvider<ClassificationTag>,
ITextViewChangedListener
{
...
internal class MyClassificationTagger :
TextViewTagger<ClassificationTag>
{
...
Belge renklendirmesinin mümkün olduğunca çabuk görünmesini istediğimizden, etiket oluşturma işleminin mümkün olduğunca hızlı olması gerekir. Bu makalede aşağıdakilerin önemi vurgulanabilir:
- belgenin tamamı için değil, yalnızca istenen belge bölümü (veya küçük bir üst kümesi) için etiketler oluşturma;
- etiket oluşturmak için belgenin tamamını ayrıştırmaktan kaçının.
Tagger yapısı hazır olduktan ve belirli dosya biçimi için söz dizimi ayrıştırma uygulandıktan sonra, ClassificationTag
bilinen değerleri kullanarak ClassificationType
değerler oluşturabilir ve UpdateTagsAsync
çağırarak metin sınıflandırması sağlayabilir.
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);
Şu anda VisualStudio.Genişletilebilirlik henüz yeni sınıflandırma türleri için metin renklerini tanımlamayı desteklemediğinden mevcut sınıflandırma türlerini (ClassificationType.KnownValues
) kullanmalıyız.
VisualStudio.Extensibility in-proc uzantısı, classificationTypeDefinition kullanarak yeni sınıflandırma türlerini tanımlayabilir. Adlarına `ClassificationType.Custom
` kullanılarak başvurulabilir.