Tuningalarm – Visual Studio 2010 aufgemotzt (Teil 3)
Kommentare

Rufen wir uns kurz ins Gedächtnis, dass das LayoutChanged-Event für jede Änderung am Editor getriggert wird. CreateVisuals wird daraufhin für jede einzelne Zeile in der Codeansicht ausgeführt.

Rufen wir uns kurz ins Gedächtnis, dass das LayoutChanged-Event für jede Änderung am Editor getriggert wird. CreateVisuals wird daraufhin für jede einzelne Zeile in der Codeansicht ausgeführt. Wie im Listing 5 zu erkennen ist, wird in CreateVisuals für jede Textzeile eine Span erstellt. Spans stellen innerhalb eines Textes einen Bereich von Positionen dar. Wir benötigen diese Span unter anderem dafür, das erstellte Adornment an der gewünschten Stelle zu platzieren. Das geschieht in der Regel nicht absolut, sondern in Relation zum Textbereich. Man unterscheidet dabei zwei Positionierungsarten:

  • Textbezogen: Das Adornment ist an den Text (bzw. an die angebene Span) gebunden. „Bewegt“ sich der zugehörige Text (z. B. beim Scrollen), so bewegt sich auch das Adornment mit.
  • View-Port-bezogen: Das Adornment verbleibt an ein und derselben Stelle im Editor, unabhängig davon, ob der Benutzer scrollt oder nicht.
private void CreateVisuals(ITextViewLine line)
{
//grab a reference to the lines in the current TextView 
   	IWpfTextViewLineCollection textViewLines = _view.TextViewLines;
   	int start = line.Start;
   	int end = line.End;

SnapshotSpan span = new SnapshotSpan(_view.TextSnapshot, Span.FromBounds(start, end));

SearchControl searchControl = new SearchControl();
_layer.AddAdornment(AdornmentPositioningBehavior.TextRelative, span, null, searchControl, null);

}  

Die Zuweisung kann in Listing 5 beim Aufruf der Methode AddAdornment beobachtet werden. In diesem Fall wird ein WPF User Control des Typs SearchControl erstellt, das textbezogen ist (und sich somit automatisch mit dem Text mitbewegen wird, falls gescrollt wird). Die vorherige Deklaration und Initialisierung des Objekts span vom Typ SnapshotSpan umfasst in diesem Fall die ganze Zeile, die an als Parameter übergeben wurde.

Testen der Erweiterung

Um selbst entwickelte Erweiterungen in Aktion sehen zu können (bzw. zu debuggen), bedarf es keinerlei manuellen Deployments. Ein Klick auf den DEBUG-Knopf oder das Drücken von F5 startet eine neue Instanz von Visual Studio, die einzig dem Testen von Erweiterungen gewidmet ist: die experimentelle Instanz. Sie ist allein dadurch erkennbar, dass in der Titelleiste von Visual Studio 2010 der Zusatz „Experimental Instance“ steht. Ansonsten erreicht man über das Menü TOOLS | EXTENSION MANAGER das gleichnamige Werkzeug (Abb. 1).

Abb. 1: Bereits aktivierte Erweiterung im Extension Manager
Abb. 1: Bereits aktivierte Erweiterung im Extension Manager
Packages

Komplexere Projekte, die über eine Erweiterung des Editors hinausgehen, lassen sich über Packages realisieren. Der vollständige Name dieses Erweiterungstyps lautet Visual Studio Integration Package. Integration steht dabei für die Erweiterung in bereits bestehende Visual-Studio-Komponenten. So lassen sich neue Menüeinträge zu bestehenden Menüs, Werkzeugfenster und benutzerdefinierte Editoren (zur Darstellung benutzerdefinierter Dateien) hinzufügen. Auf diese Art und Weise ist es beispielsweise auch möglich, das Kontextmenü des Solution Explorers zu erweitern. Die Erstellung eines solchen Packages erfolgt in der Regel über die entsprechende Projektvorlage, die den Aufruf eines Assistenten zur Folge hat (Abb. 2). Mithilfe des Assistenten werden die benötigten Komponenten und die Zuweisung entsprechender Kommandos festgelegt. Wahlweise können über den Assistenten auch Unit-Test- und Integrationstestprojekte erstellt werden.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -