2013-04-06 5 views
5

Tak więc próbowałem dowiedzieć się, jak dodać podświetlanie składni dla nazwy typedef w plikach C++, w wysublimowanym tekście.Podświetlanie składni w Sublime Text 2

Na przykład, jeśli chcemy mieć typedef long long integer; I integer być podświetlone (najlepiej tego samego koloru jak pozostałe typy: int, bool, itd.). Poszedłem do pliku C.tmLanuage i próbowałem dodać następujący kod regex ^typedef.*?\s(\w+)\s*; do storage.type.c (linia 49), ale nie zadziałało. Jeśli dodaję słowo string, podświetli ono wszystkie wystąpienia ciągu słów. Próbowałem przejść do pliku C++. TmLanguage i dodając kod regex do storage.type.c++, ale nadal nie działał.

Czy ktoś wie, jak uzyskać typedef wyróżnione w wysublimowanym tekście?

Czy istnieje również sposób na podświetlanie składni dla nazwy klasy? Powiedzmy, że deklaruję string lub vector, chciałbym podświetlone albo string lub vector.

Odpowiedz

2

Ten regex działałby (jak sądzę) gdybyś miał coś na kształt linii typedef foo; Aby uzyskać pożądane zachowanie, będziesz musiał stworzyć nieco bardziej złożony zapis wzoru w pliku tmLanguage. Ponieważ plik językowy jest oparty na TextMates, będziesz chciał mieć to jako odniesienie (http://manual.macromates.com/en/language_grammars#language_grammars). Polecam również używanie PlistJsonConverter (praca w JSON jest dla mnie łatwiejsza niż praca w XML). Prawdopodobnie będziesz musiał zdefiniować wzorce początku i końca (początkiem będzie prawdopodobnie typedef koniec prawdopodobnie będzie ;). Następnie możesz zastosować dowolne wzorce do tej grupy.

Jeśli chodzi o podświetlanie nazwy klasy, chciałbym sprawdzić, co, jeśli są stosowane jakiekolwiek zakresy. Jeśli nie ma, musisz wymyślić wyrażenie, aby zastosować ten zakres. Następnie możesz dodać wpis koloru lub użyć zdefiniowanego ze schematu kolorów.

Edit:

Właściwie nie wydają się być JSON. Widzę () zamiast []. JSON jest dość prosty do zrozumienia. Możesz poszukać czegoś głębiej, ale dobrym początkiem jest wikipedia. Prawdopodobnie zainteresują Cię rzeczy z sekcji "Klucze reguł". Zrobiłem kilka wyszukiwania (ponieważ wiedziałem, że istnieją lepsze przykłady tam) i natknąłem się na http://docs.sublimetext.info/en/latest/extensibility/syntaxdefs.html. Przepisuje definicje składni od zera, ale najbardziej istotna sekcja to prawdopodobnie http://docs.sublimetext.info/en/latest/extensibility/syntaxdefs.html#analyzing-patterns. Nie mam wyrażeń regularnych, aby znaleźć nazwy klas, więc musiałbyś sam wymyślić. Jeśli jeszcze tego nie zrobiłeś, możesz przeszukać i sprawdzić, czy ktoś inny zaimplementował plik językowy w sposób, który ci odpowiada.

Będziesz chciał zacząć od wbudowanego pliku tmLanguage i przekonwertować go z Plist do json. Możesz następnie edytować ten plik i przenieść go z powrotem.

+0

Nie jestem zaznajomiony z JSON, ale czy gramatykę języka w łączu, który dałeś mi napisałem w JSON? Jeśli tak, to czy chcesz napisać coś podobnego do tego, co jest napisane w linkach, a następnie przekonwertować je za pomocą konwertera? Czy powinienem następnie zamienić konwersję w pliku .tmLanguage? Również nazwy klas nie mają wyrażenia regularnego, więc w jaki sposób byłoby utworzyć wyrażenie regularne, aby zastosować dla nich zakres? – OGH

+0

Rozszerzyłem moją odpowiedź, ponieważ wydawało się, że tęsknię za komentarzem. – skuroda