2009-02-02 5 views
20

Ich habe John Lam's Vibrant Ink VS Farbschema in letzter Zeit und wollte es zwicken, so dass es die Namen der Methoden für eine Klasse mit einer anderen Farbe markiert. Es stellt sich heraus, dass es keine Option in VS dafür gibt.Benutzerdefinierte Syntax Hervorhebung für VS 2008

Resharper hat a feature, die benutzerdefinierte Syntaxhervorhebung bietet. Ich habe mich gefragt, wie schwer es ist, ein kleines Plugin zu schreiben, das Ihnen granulare Syntax-Highlighting bietet. Gibt es Open-Source-Anzeigen wie diese?

EDIT

Dank all geschaffen, ich Sachen zerhacken mit DXCore und mein VS sucht oh so ähnlich wie Textmate.

VS is looking fantastic http://img14.imageshack.us/img14/637/awesomevsgq1.png

** Hinweis **

musste ich leicht das Snippet von Rory ändern, so dass es mit gepunkteten Methodennamen und Gleichheitsoperatoren in C# funktioniert.

Ich benutze jetzt:

  string name = ea.LanguageElement.Name.Split('.').Last(); 

      if (name == ("op_Equality")) { 
       name = "=="; 
      } else if (name == "op_Inequality") { 
       name = "!="; 
      } 

      ea.PaintArgs.OverlayText(name, 
       ea.LanguageElement.NameRange.Start, 
       Color.FromArgb(255,204,0)); 
+0

ich denke, dass in VS es von Ad-Ins – Avram

Antwort

11

Nun, wie Brian bereits gesagt hat ... wird Ihnen eine Idee geben, was mit der DXCore getan werden kann.

Auch gibt es einige andere „Dekorative Plugins“ auf unserer „Community Plugin Site“ und wir haben eine anständige Gemeinschaft über in den

DevExpress IDE Tools Foren, wenn Sie spezielle Fragen haben.

DXCore ist der Rahmen, auf dem RefactorPro und CodeRush gebaut werden, die Ihnen eine Vorstellung davon, welche Art

grafischer Fähigkeit geben, sollten sie in der Lage sind.

Das besagt, dass Sie keines dieser Werkzeuge benötigen, um das DXCore zu verwenden.

Alles auf dem Community Site is "Open Source" (So ist PaintIt)

Um Ihnen eine Vorstellung davon, wie einfach die Dinge sind ... der folgende Code ist alles, was Sie zu einer grundlegenden Plugin Vorlage hinzufügen müssen die Grundlagen aufstehen und läuft mit DXCore ...

Private Sub PlugIn_EditorPaintLanguageElement(ByVal ea As DevExpress.CodeRush.Core.EditorPaintLanguageElementEventArgs) Handles Me.EditorPaintLanguageElement 
    If ea.LanguageElement.ElementType = LanguageElementType.Method Then 
     ea.PaintArgs.OverlayText(ea.LanguageElement.Name, _ 
           ea.LanguageElement.NameRange.Start, _ 
           Color.HotPink) 
    End If 
End Sub 

ich habe ein Plugin erstellt (genannt CR_ColorizeMemberNames) basierend auf diesem Code und hinzugefügt, um es an die Community Plugin Site.

Die Binärdatei ist von meiner Website here verfügbar.

Sie müssen nur herunterladen und installieren DXCore und legen Sie die binary of the plugin im Plugin-Verzeichnis (Standard: C: \ Programme \ Developer Express Inc \ DXCore für Visual Studio .NET \ 2.0 \ Bin \ Plugins) .. Dann VS starten und Ihre Methodennamen sollten alle in HotPink sein (Lovely)

+0

Rory, ich hatte Probleme, paintit zur Arbeit zu bringen, aber mit deinem Code-Schnipsel habe ich es geschafft, das alles zu erreichen (siehe meinen Screenshot), vielen Dank –

0

ich nicht wirklich beantworten kann, wie schwer es ist, oder ob es irgendeine Open Source, aber es zu tun bekommen, möchten Sie eine looki bei Custom Text-Marker nehmen. Sehen Sie diese beiden Artikel für Details:

+0

Textmarker sind keine gute Idee für Kolorierung, weil sie mit einer großen Menge an Overhead kommen. Sie möchten keinen Marker für jedes einzelne Token definieren. –

4

über die einfache Keyword-Färbung zu gehen, Details über das Visual Studio Syntax-Einfärbung ist defined here; und Details zu implement here.

skizzieren Diese Dokumente wie die zugrunde liegenden Rohrleitungen sind, na ja, ausgelotet - und was noch wichtiger ist, gehen ins Detail, wie in Ihrem verdrahten eigene -

+1

Dies sind Dokumente zum Definieren eines Sprachdienstes von Grund auf neu. Wenn er das getan hätte, müsste er alles neu implementieren, einschließlich der Intelligenz. Das wäre sehr teuer. –

3

Wenn Sie Ihre eigene Rolle, würde ich empfehlen bekommen DXCore from DevExpress. Ich weiß, dass Sie mit diesem Add-in Ihre eigenen visuellen Elemente in VS2008 hinzufügen können, und ich glaube, es ist auch kostenlos. Es gibt eine Community in guter Größe, die dir beim Erstellen deiner eigenen Plugins hilft, und vielleicht gibt es sogar eine, die bereits für dich erstellt wurde.

Ich bin ein großer Fan von DevExpress, und ich betreibe Refactor! und CodeRush.

2

Holen Sie DXCore, und starten Sie dann mit diesem Plugin: http://www.rorybecker.me.uk/PaintIt.html, die Sie mit etwas Code zum Einfärben von Methodennamen beginnen sollte. Rory stellt seinen Code zur Verfügung, und ich denke, er ist ein Mitglied hier bei SO ...

+0

Ja, ich bin in der Nähe :) Sie können mir [email protected] mailen oder mir auf Twitter twitter.com/rorybecker folgen. Dieser Code ist jetzt ziemlich alt, aber ich arbeite gerade daran, ihn zu aktualisieren. –