2011-01-01 7 views
1

Ist es möglich, das Einfügeereignis von Visual Studio abzufangen, um den einzufügenden Text zu transformieren? Ich weiß, dass ich meinen eigenen Befehl schreiben kann, um das intelligente Einfügen auszuführen, aber es ist für die meisten Leute eine lästige Aufgabe, diesen Befehl einer Tastenkombination zuzuordnen. Außerdem sind die meisten Leute an Strg + V gewöhnt. Gibt es eine Chance, dass ich meine Ware dort reinstecken kann?Intercept Visual Studio-Einfügeaktion

Antwort

6

Es ist ein Befehl, und Sie können damit umgehen, indem Sie einen Befehlsfilter in einer Erweiterung hinzufügen und den Befehl behandeln, bevor die Editor-Befehlsverarbeitungsimplementierung ihn sieht.

Hier ist ein command handler template. Ich glaube, die Paste Befehl ID ist VSConstants.VSStd2KCmdID.PASTE (mit der VSConstants.VSStd2K Befehl Guid für die Gruppe).

Beachten Sie jedoch, dass das Einfügen viel schwieriger sein kann, als es aussieht, wenn Sie Dinge wie das Einfügen von kopierten Inhalten, Einfügen in eine mehrzeilige Auswahl, leere Auswahl, Ausschneiden/Kopieren und Einfügen und Sprachdienst berücksichtigen Formatierung nach dem Einfügen. Wenn Sie also versuchen, dies mit einer Erweiterung zu tun, die Sie veröffentlichen möchten, ist es möglicherweise schwieriger als erwartet: -/

+0

Ich habe gerade getestet und kann abfangen 'pguidCmdGroup == CMDSETID.StandardCommandSet97_guid',' nCmdexecopt == VSStd.97CmdID.Paste'. – ceztko

2

Es muss möglich sein, weil CodeRush es tut. Schauen Sie sich CodeRush xPress und DXCore von DevExpress (http://www.devexpress.com/) an, sie sind beide kostenlos und DXCore bietet Ihnen einige einfache Möglichkeiten, sich in solche Dinge einzuklinken.

+0

Das ist nicht wirklich ein gültiges Argument. CodeRush ersetzt möglicherweise das Shortcut-System (ersetzt, was Strg + V bedeutet), während ich diesen Luxus nicht habe. –