2013-04-06 33 views
5

Così ho cercato di capire come aggiungere l'evidenziazione della sintassi per il nome di typedef nei file C++, in testo sublime.Evidenziazione della sintassi in Sublime Text 2

Ad esempio, se ho typedef long long integer; voglio integer da evidenziare (preferibilmente lo stesso colore delle altre tipologie: int, bool, ecc). Sono andato a guardare il file C.tmLanuage e ho cercato di aggiungere il seguente codice regex ^typedef.*?\s(\w+)\s*; a storage.type.c (riga 49), ma non ha funzionato. Se aggiungo la parola string, evidenzierà tutte le istanze della stringa di parole. Ho provato ad andare nel file C++ .tmLanguage e ad aggiungere il codice regex a storage.type.c++, ma ancora non funzionava.

Qualcuno sa come ottenere typedef evidenziato in testo sublime?

Inoltre, c'è un modo per ottenere l'evidenziazione della sintassi per il nome della classe? Diciamo che dichiaro uno string o vector, vorrei che fosse evidenziato string o vector.

risposta

2

Questa espressione regolare funzionerebbe (credo) se si avesse qualcosa in linea con typedef foo; Per ottenere il comportamento desiderato, sarà necessario creare una voce di modello leggermente più complessa nel file tmLanguage. Poiché il file della lingua è basato su TextMates, è necessario averlo come riferimento (http://manual.macromates.com/en/language_grammars#language_grammars). Vorrei anche raccomandare di usare PlistJsonConverter (lavorare in JSON è più facile per me che lavorare in XML). Probabilmente sarà necessario definire i modelli di inizio e fine (l'inizio probabilmente sarà typedef e probabilmente sarà ;). È quindi possibile applicare qualsiasi modello che si desidera a quel gruppo.

Per quanto riguarda l'evidenziazione del nome classe, vorrei cercare di vedere che cosa, se vengono applicati gli ambiti. Se non lo sono, dovrai creare un'espressione regolare per applicare l'ambito a questi. È quindi possibile aggiungere una voce di colore o utilizzare una definita dalla combinazione di colori.

Edit:

In realtà essi non sembrano essere JSON. Vedo () anziché []. JSON è abbastanza semplice da capire. Puoi cercare qualcosa di più approfondito, ma wikipedia è un buon punto di partenza. Ciò che probabilmente ti interesserebbe sono le cose nella sezione "Regole della chiave". Ho fatto qualche ricerca (perché sapevo che c'erano alcuni esempi migliori là fuori), e ho trovato http://docs.sublimetext.info/en/latest/extensibility/syntaxdefs.html. Riporta da zero le definizioni di sintassi, ma la sezione più pertinente è probabilmente http://docs.sublimetext.info/en/latest/extensibility/syntaxdefs.html#analyzing-patterns. Non ho un'espressione regolare per trovare i nomi delle classi, quindi dovresti inventarne uno tu stesso. Se non lo hai già fatto, dovresti cercare in giro per vedere se qualcun altro ha implementato un file di lingua in un modo che funzioni per te.

Si vorrà iniziare con il file tmLanguage integrato e convertirlo da un plist in json. È quindi possibile modificare quel file e spostarlo indietro.

+0

Non ho familiarità con JSON, ma le grammatiche linguistiche sono nel collegamento che mi hai scritto in JSON? Se sì, stai dicendo che scrivo qualcosa di simile a ciò che è scritto nei link e poi lo converto usando il convertitore? Dovrei quindi inserire la conversione nel file .tmLanguage? Inoltre, i nomi delle classi non hanno un'espressione regolare, quindi come sarebbe la creazione di un'espressione regolare per applicare un ambito per quelli? – OGH

+0

Estesa la mia risposta come si sentiva a desiderare un commento. – skuroda

Problemi correlati