2013-03-26 5 views
10

Uso Smarty per generare modelli html. Attualmente utilizzo l'evidenziazione html, che è per lo più soddisfacente, tranne che non evidenzia i tag smarty, ex {foreach} Ho provato ad installare il pacchetto Smarty, ma non sembra molto buono. Quindi, in pratica, devo essere in grado di aggiungere l'evidenziazione di qualsiasi cosa con le parentesi graffe alla colorazione html standard. È possibile? Come si può fare?Testo sublime: come personalizzare l'evidenziazione della sintassi?

+0

È una specie di domanda vaga, quindi posso solo dire vagamente di provare a usare brackethighlighter2. – AGS

risposta

2

Probabilmente è necessario modificare lo .tmTheme per aggiungere l'evidenziazione personalizzata per gli ambiti definiti impostando la sintassi su Smarty. Dovrebbe essere presente un file Smarty.tmlanguage nella directory Packages/Smarty/Syntaxes. È XML, quindi può essere un po 'difficile per la lettura casuale, ma se capisci le espressioni regolari e gli ambiti sono nominati in modo intelligente, dovresti essere in grado di capire come modificare il tuo tema.

24

Sfondo

@MattDMo è giusto che un file .tmTheme è il file principale che controlla l'evidenziazione. È un file XML con una serie di espressioni regolari e tag che denotano quale RegEx corrisponde a quale tipo di elemento sintattico.

È possibile cercare su GitHub e trovare molte persone che hanno già creato pacchetti Testo sublime contenenti file .tmTheme. Si noti che è possibile utilizzare direttamente un pacchetto creato per TextMate, poiché Testo sublime utilizza le stesse convenzioni. (Questo è vero, almeno nella misura in cui .tmTheme e .tmPreferences file vanno.)

Per esempio, sono stato in grado di prendere direttamente una evidenziazione della sintassi pacchetto per la lingua ChucK, originariamente per TextMate, e usarlo SublimeText2. Il .tmTheme ha funzionato immediatamente copiando il file utilizzato con TextMate. Ho appena rimosso ulteriori file indesiderati e apportato alcune modifiche allo .tmTheme, nonché aggiunto il supporto per il Gestore pacchetti.

Vedere il progetto qui: https://github.com/nathanleiby/ChucK.tmbundle.

come installare nuove sintassi

controllo del pacchetto

Idealmente, la sintassi volete già è incluso disponibile per il download nel Sublime Text controllo del pacchetto. Cerca in Package Control e installa direttamente. (Se non avete ancora controllo del pacchetto, è necessario farlo: https://github.com/wbond/package_control_channel/)

manualmente

Se si scarica un file o .tmTheme.tmBundle direttamente, ti consigliamo di copiarlo i pacchetti appropriati cartella in ST. Si noti che esiste una cartella /Packages e una cartella /Packages/User. La documentazione di ST2 suggerisce di copiare su quest'ultimo, poiché è garantito che venga mantenuto anche se altri pacchetti nella cartella principale vengono cancellati/modificati durante un aggiornamento.

su OSX, che directory è: ~/Library/Application Support/Sublime Text 2/Packages/User/

(Nota: Si può preferire di git clone il pacchetto in questa cartella, in modo che si può facilmente aggiornarlo.)

Come creare il tuo

Se si vuole scavare dentro e personalizzare l'evidenziazione della sintassi, qui ci sono pochi posti per iniziare.

  • Rispolvera le tue espressioni regolari.
  • Sublime Text documentation for syntax definitions
  • <ctrl> + <shift> + p. Ogni volta che stai guardando un file, seleziona una parola qualsiasi e premi questa combinazione di tasti, quindi guarda nella barra dei piedi. Dovresti vedere una serie di descrizioni della sintassi. Ad esempio: ho appena evidenziato una parola nel file SQL che sto guardando e la risposta è stata: source.sql string.other.quoted.backtick.sql.
  • Probabilmente preferirai analizzare la tua sintassi usando JavaScript/JSON, piuttosto che XML. Utilizzare PackageDev. Puoi ottenerlo tramite Package Control. Ha comandi che ti permettono di andare avanti e indietro tra i file .json (JSON) e .tmTheme (XML).
  • A related question on StackOverflow.

Caveat

Questo può essere ovvio, ma l'utilità di evidenziazione della sintassi è legato alla quale combinazione di colori che avete scelto nel Sublime Text. (Testo sublime 2 -> Preferenze -> Combinazione colori -> ...)

Non ho ancora avuto la possibilità di esplorare/verificare questo in dettaglio, ma sembra che alcuni schemi di colori possano distinguere tra più/meno tipi di elementi di sintassi.

Consiglio vivamente la combinazione di colori "Monokai" (in particolare, la variante "Monokai Soda") per questo motivo - sembra "far risaltare i colori".

+1

Se si desidera un tema piacevolmente contrastante con molti ambiti (personalizzabili), controllare il mio [Neon.tmTheme] (https://github.com/MattDMo/Neon.tmTheme). È luminoso su nero, e mentre lo uso principalmente per Python, sembra buono con molti altri linguaggi, incluso HTML/CSS/JavaScript. E sì, hai ragione affermando che alcuni schemi di colori non hanno lo stesso numero di ambiti degli altri. Ho raccolto un sacco di ambiti da altri schemi per il mio tema, quindi spero che ci sia qualcosa da fare per te. Tuttavia, tutto dipende da quanto è raffinato il.il file tmLanguage è. – MattDMo

+0

Grazie a @MattDMo - Gli darò un colpo! Sembra molto semplice e pulito. E bello sapere che la mia osservazione era in pista, che alcuni schemi di colori distinguono tra più/meno ambiti sintattici. – Nate

2

E 'piuttosto semplice

  1. Con Sublime Text installazione predefinita 2
  2. aprire il file "Packages \ HTML \ HTML.tmLanguage", se si cerca stringa <!-- si noterà che (attualmente) non sono due i riferimenti a "Smarty" commentati. Non commentare questi.
  3. Nella ricerca di file Smarty.tmLanguage per la stringa scopeName. Questa è una chiave e la stringa associata dovrebbe essere qualcosa come text.html.smarty.
  4. copia che stringa in HTML.tmLanguage al posto di source.smarty (la stringa per la chiave include alla fine dell'ultimo blocco che avete appena un-commentato)

Questo è tutto. Divertiti con lo

+2

Sarebbe bello se potessi spiegare dove sono "Packages \ HTML \ HTML.tmLanguage" o come aprire in Sublime Text. Non saprei questa informazione in cima alla mia testa. – bafromca

+2

Nel menu di sublimetext c'è un collegamento chiamato '' 'browse packages'''. Questo aprirà la cartella di destinazione dei tuoi pacchetti (con finder o Explorer per esempio). – svassr