İzlenecek yol: Kenar boşluğu karakteri oluşturma
Özel düzenleyici uzantılarını kullanarak düzenleyici kenar boşluklarının görünümünü özelleştirebilirsiniz. Bu izlenecek yol, bir kod açıklamasında "yapılacaklar" sözcüğü her görüntülendiğinde gösterge kenar boşluğuna özel bir karakter ekler.
MEF projesi oluşturma
C# VSIX projesi oluşturun. (Yeni Proje iletişim kutusu, Visual C# / Genişletilebilirlik'i ve ardından VSIX Projesi'ni seçin.) Çözümü
TodoGlyphTest
olarak adlandırın.Düzenleyici Sınıflandırıcısı proje öğesi ekleyin. Daha fazla bilgi için bkz . Düzenleyici öğesi şablonuyla uzantı oluşturma.
Varolan sınıf dosyalarını silin.
Karakteri tanımlama
Arabirimini çalıştırarak IGlyphFactory bir karakter tanımlayın.
Karakteri tanımlamak için
Bir sınıf dosyası ekleyin ve adını verin
TodoGlyphFactory
.Bildirimleri kullanarak aşağıdaki kodu ekleyin.
using System.ComponentModel.Composition; using System.Windows; using System.Windows.Shapes; using System.Windows.Media; using System.Windows.Controls; using Microsoft.VisualStudio.Text; using Microsoft.VisualStudio.Text.Editor; using Microsoft.VisualStudio.Text.Formatting; using Microsoft.VisualStudio.Text.Tagging; using Microsoft.VisualStudio.Utilities;
uygulayan IGlyphFactoryadlı
TodoGlyphFactory
bir sınıf ekleyin.Karakterin boyutlarını tanımlayan özel bir alan ekleyin.
Glif kullanıcı arabirimi (UI) öğesini tanımlayarak uygulayın
GenerateGlyph
.TodoTag
daha sonra bu kılavuzda tanımlanır.public UIElement GenerateGlyph(IWpfTextViewLine line, IGlyphTag tag) { // Ensure we can draw a glyph for this marker. if (tag == null || !(tag is TodoTag)) { return null; } System.Windows.Shapes.Ellipse ellipse = new Ellipse(); ellipse.Fill = Brushes.LightBlue; ellipse.StrokeThickness = 2; ellipse.Stroke = Brushes.DarkBlue; ellipse.Height = m_glyphSize; ellipse.Width = m_glyphSize; return ellipse; }
uygulayan IGlyphFactoryProvideradlı
TodoGlyphFactoryProvider
bir sınıf ekleyin. Bu sınıfı "TodoGlyph", OrderAttribute After VsTextMarker, "ContentTypeAttributecode" ve TagTypeAttribute todoTag ile NameAttribute dışarı aktarın.örneğini GetGlyphFactory ekleyerek
TodoGlyphFactory
yöntemini uygulayın.
Todo etiketi ve etiket tanımlama
Önceki adımlarda tanımladığınız UI öğesi ile gösterge kenar boşluğu arasındaki ilişkiyi tanımlayın. Etiket türü oluşturun, etiketleyin ve bir etiketleme sağlayıcısı kullanarak dışarı aktarın.
Todo etiketi ve etiket tanımlamak için
Projeye yeni bir sınıf dosyası ekleyin ve olarak adlandırın
TodoTagger
.Aşağıdaki içeri aktarmaları ekleyin.
using System; using System.Collections.Generic; using System.ComponentModel.Composition; using Microsoft.VisualStudio.Text; using Microsoft.VisualStudio.Text.Tagging; using Microsoft.VisualStudio.Text.Editor; using Microsoft.VisualStudio.Text.Classification; using Microsoft.VisualStudio.Utilities;
adlı
TodoTag
bir sınıf ekleyin.türünde
TodoTag
uygulayan ITagger<T> adlıTodoTagger
sınıfını değiştirin.sınıfına
TodoTagger
, sınıflandırma aralıklarında bulunacak metin için ve IClassifier için özel alanlar ekleyin.Sınıflandırıcıyı ayarlayan bir oluşturucu ekleyin.
GetTags Adları "açıklama" sözcüğünü içeren ve metni arama metnini içeren tüm sınıflandırma aralıklarını bularak yöntemini uygulayın. Arama metni her bulunduğunda, türünde yeni TagSpan<T> bir verim
TodoTag
elde edin.IEnumerable<ITagSpan<TodoTag>> ITagger<TodoTag>.GetTags(NormalizedSnapshotSpanCollection spans) { foreach (SnapshotSpan span in spans) { //look at each classification span \ foreach (ClassificationSpan classification in m_classifier.GetClassificationSpans(span)) { //if the classification is a comment if (classification.ClassificationType.Classification.ToLower().Contains("comment")) { //if the word "todo" is in the comment, //create a new TodoTag TagSpan int index = classification.Span.GetText().ToLower().IndexOf(m_searchText); if (index != -1) { yield return new TagSpan<TodoTag>(new SnapshotSpan(classification.Span.Start + index, m_searchText.Length), new TodoTag()); } } } } }
Bir
TagsChanged
olay bildirin.uygulayan ITaggerProvideradlı
TodoTaggerProvider
bir sınıf ekleyin ve bunu "code" ve TagTypeAttribute todoTag ile ContentTypeAttribute dışarı aktarın.öğesini içeri aktarın IClassifierAggregatorService.
örneğini CreateTagger ekleyerek
TodoTagger
yöntemini uygulayın.
Kodu derleme ve test etme
Bu kodu test etmek için TodoGlyphTest çözümünü derleyin ve deneysel örnekte çalıştırın.
TodoGlyphTest çözümünü derlemek ve test etmek için
Çözümü oluşturun.
F5 tuşuna basarak projeyi çalıştırın. Visual Studio'nun ikinci bir örneği başlar.
Gösterge kenar boşluğunun gösterildiğinden emin olun. (Araçlar menüsünde Seçenekler'e tıklayın. Metin Düzenleyicisi sayfasında Gösterge kenar boşluğunun seçili olduğundan emin olun.)
Açıklamaları olan bir kod dosyası açın. Açıklama bölümlerinden birine "todo" sözcüğünü ekleyin.
Kod penceresinin solundaki gösterge kenar boşluğunda koyu mavi ana hatlı açık mavi bir daire görüntülenir.