2013-04-06 17 views
5

So habe ich versucht, herauszufinden, wie Syntax Highlighting für den Namen typedef in C++ - Dateien, in erhabenen Text hinzuzufügen.Syntax Hervorhebung in Sublime Text 2

Zum Beispiel, wenn ich typedef long long integer; habe ich mag integer hervorgehoben werden (die gleiche Farbe wie die anderen Arten bevorzugt: int, bool, etc.). Ich ging in die C.tmLanuage-Datei und versuchte, den folgenden Regex-Code ^typedef.*?\s(\w+)\s*; zu storage.type.c hinzuzufügen (Zeile 49), aber es hat nicht funktioniert. Wenn ich das Wort string anfüge, werden alle Instanzen des Worts hervorgehoben. Ich habe versucht, in die C++. TmLanguage-Datei zu gehen und den Regex-Code zu storage.type.c++ hinzuzufügen, aber es hat immer noch nicht funktioniert.

Weiß jemand, wie man typedef in sublime Text hervorgehoben bekommt?

Gibt es auch eine Möglichkeit, Syntaxhervorhebung für den Klassennamen zu erhalten? Nehmen wir an, ich deklariere eine string oder vector, ich möchte entweder string oder vector hervorgehoben werden.

Antwort

2

Dieser Regex würde funktionieren (glaube ich), wenn Sie etwas in Richtung typedef foo; hätten Um das gewünschte Verhalten zu erhalten, müssen Sie einen etwas komplexeren Mustereintrag in der tmLanguage-Datei erstellen. Da die Sprachdatei auf TextMates basiert, möchten Sie dies als Referenz haben (http://manual.macromates.com/en/language_grammars#language_grammars). Ich würde auch empfehlen, PlistJsonConverter10 zu verwenden (das Arbeiten in JSON ist für mich einfacher als das Arbeiten in XML). Sie werden wahrscheinlich Anfangs- und Endmuster definieren müssen (Anfang wird wahrscheinlich typedef sein Ende wird wahrscheinlich ; sein). Sie können dann die gewünschten Muster auf diese Gruppe anwenden.

Wie für die Klassennamen Hervorhebung, würde ich sehen, was, wenn alle Bereiche angewendet werden. Wenn dies nicht der Fall ist, müssen Sie eine Regex erstellen, um den Bereich auf diese anzuwenden. Sie können dann einen Farbeintrag hinzufügen oder einen definierten Eintrag aus dem Farbschema verwenden.

Edit:

Eigentlich scheinen sie nicht JSON zu sein. Ich sehe () anstatt []. JSON ist ziemlich einfach zu verstehen. Sie können etwas tiefer suchen, aber wikipedia ist ein guter Anfang. Was Sie wahrscheinlich interessieren würde, sind die Dinge unter dem Abschnitt "Rule Keys". Ich habe ein wenig gesucht (weil ich wusste, dass es da draußen bessere Beispiele gibt) und bin auf http://docs.sublimetext.info/en/latest/extensibility/syntaxdefs.html gestoßen. Es geht über Syntaxdefinitionen von Grund auf, aber der relevanteste Abschnitt ist wahrscheinlich http://docs.sublimetext.info/en/latest/extensibility/syntaxdefs.html#analyzing-patterns. Ich habe keine Regex, um Klassennamen zu finden, also müsstest du dir selbst einen ausdenken. Wenn Sie dies noch nicht getan haben, möchten Sie vielleicht nach einer anderen Sprache suchen, um festzustellen, ob jemand anders eine Sprachdatei so implementiert hat, dass sie für Sie funktioniert.

Sie möchten mit der integrierten tmLanguage-Datei beginnen und diese von einem Plist in json konvertieren. Sie können diese Datei dann bearbeiten und zurück verschieben.

+0

Ich bin nicht vertraut mit JSON, aber sind die Sprachgrammatiken in dem Link, den Sie mir in JSON geschrieben haben? Wenn ja, sagst du, dass ich etwas schreibe, das dem ähnlich ist, was in den Links geschrieben ist, und es dann mit dem Konverter konvertiere? Soll ich dann die Konvertierung in die .tmLanguage-Datei stellen? Klassennamen haben auch keine Regex. Wie würde man also eine Regex erstellen, um einen Bereich für diese zu übernehmen? – OGH

+0

Erweitere meine Antwort, weil ich mich nach einem Kommentar sehnte. – skuroda

Verwandte Themen