2010-02-06 4 views
10

Ich möchte ein Plugin für Visual Studio 2010 schreiben, aber tatsächlich habe ich einige Probleme. Was ich will, scheint einfach zu tun, ich mag, dass ein wenig Toolbox erscheint, wenn Sie den Text im Code-Editor wie in ReSharper (kleinen Stift mit Menü, das in Refactoring hilft) Auswählen oder wie hier:Visual Studio 2010 Plugin schreiben, möchte eine Toolbox wie Resharper im Code Editor zeigen

http://www.axtools.com/products-vs2010-extensions.php?tab=selection-popup

I wissen möchten:

  1. gibt es anu Vorlage Visual Studio, die beginnen hilft? Ich versuche es mit "Editor Viewport Adornment", bin mir aber nicht sicher.

  2. Sollte ich von Toolbox starten oder ich kann einige Tasten aus System Toolbox anzeigen? In Axtools Plugin vom Link ist es eine maßgeschneiderte Toolbox oder System eins?

  3. Wie erkennt man, dass ein Text ausgewählt wurde?

Ich habe keine Fragen mehr im Moment. Ich bin eher Webentwickler, also schreibe ich ein Visual Studio Plugin, das ist eine neue Sache für mich.

Vielen Dank im Voraus.

Antwort

4

Ich kann zwei Teile dieser Frage beantworten:

  1. Die „Editor Text Verzierungs“ Vorlage, die Schiffe mit dem SDK ein guter Anfang ist. Sobald Sie das haben, werfen Sie einen Blick auf diesen visuellen Manager, den ich für eine kleine Demo-Demo geschrieben habe: AgentBadgeVisualManager.cs. Das zeigt Ihnen, wie Sie eine Art von Schmuck in der Nähe (aber nicht direkt darunter) platzieren können. Sie sollten auch einen Blick auf die Datei ViewCreationListener.cs werfen, die den für den visuellen Manager enthält (die wichtigste Sache, die geändert werden muss, ist die Order-Eigenschaft, die Sie mit der Projektvorlage erhalten wird angezeigt oben auf beliebiger Text).
  2. ich für diese keine Ahnung haben, sorry :(Sie wollen dies eine Art von WPF UIElement, aber vorbei sein, dass es wirklich an Ihnen ist.
  3. Von einem ITextView, die Sie haben werden als Teil des als Teil der Probe IWpfTextViewCreationListener umgesetzt (um es in die AgentBadgeVisualManager geben wird), können Sie auf die SelectionChanged Veranstaltung wie diese abonnieren:

    view.Selection.SelectionChanged += (sender, args) => /* call methods to update your adornment here */;

    Beachten Sie, dass das Ereignis nicht ausgelöst wird, wenn die Auswahl ist leer und folgt dem Caret herum, also wenn Sie das verfolgen möchten, werden Sie auch nee d, um Caret zu hören, änderte Ereignisse. Wenn Sie sich jedoch nur für a) interessieren, wenn die Auswahl nicht leer ist, oder b) wenn die Auswahl zwischen leer und nicht leer wechselt, reicht dieses Ereignis aus.

Weitere allgemeine Informationen über Erweiterbarkeit, können Sie die anderen Erweiterungen Besuche ich auf meinem github page geschrieben haben, lesen Sie, wie ich schrieb sie on my blog Besuche die VSX samples page oder die editor samples page on codeplex.