Ich wollte schon seit einiger Zeit eine einfache Textmanipulationserweiterung für Visual Studio erstellen, und jetzt habe ich endlich etwas Zeit gefunden, um mich damit zu beschäftigen, wie Erweiterungen geschrieben werden. Was ich im Sinn habe, könnte durch VBA-Makros erreicht werden, aber ich würde es lieber als "echte" Erweiterung implementieren; als Lernprozess, und weil ich ehrlich gesagt nicht VBA stehen kann.
Nach einem fairen Betrag von googeln, Blog lesen, graben in MSDN und StackOverflow Beiträge durchsuchen, ich denke, ich habe genug Informationen gesammelt, dass ich es implementieren kann - aber ich möchte einige Rückmeldungen, ob ich die Dinge richtig angehen, bevor ich beginnen, hacken weg :)
Was ich möchte, ist:
- Registrierung von Befehlen, an die Benutzer über Werkzeuge->Optionen->Tastatur Hotkeys binden können.
- Ändern Sie den Textpuffer des aktiven Fensters, wenn Befehle aufgerufen werden.
- Ich kümmere mich nicht wirklich um Menüs oder Symbolleisten, aber ich weiß, wie ich sie über .vsct-Dateien hinzufügen kann (gibt es bessere Optionen?)
Für #1 muss ich anscheinend ein komplettes VSPackage, eine .vsct-Datei usw. erstellen - gibt es keinen netten und einfachen MEF-Erweiterungspunkt, den ich stattdessen verwenden kann? (Vielleicht das Exportieren einer IWpfTextViewCreationListener
und mit der manuellen Handhabung von Tastenkombinationen herumfummeln - aber das wäre ein großer Hack).
Zu #2: Ich bin mir nicht sicher, wie ich eine ITextBuffer
für das aktive Dokument. Ich könnte durchgehen DTE.ActiveDocument
aber ich bin nicht sicher, wie ich eine ITextBuffer
davon. Alternativ könnte ich auch etwas in der Art von...
var txtMgr = (IVsTextManager)ServiceProvider.GetService(typeof(SVsTextManager));
IVsTextView textViewCurrent;
txtMgr.GetActiveView(true, null, out textView);
IWpfTextView wpfViewCurrent = AdaptersFactory.GetWpfTextView(textView);
ITextBuffer textCurrent = wpfViewCurrent.TextBuffer;
...aber das sieht wirklich nach einem Umweg aus, um die Dinge zu erledigen?