2012-02-18 2 views
5

Mi chiedo se c'è un modo per avere due colori diversi tag ("colori" per quelli negli Stati Uniti) per i diversi tag di lingua nello stesso file.evidenziazione della sintassi con specifica Sublime Text 2

Per esempio, Diciamo che ho il codice ColdFusion e il codice HTML nello stesso file .cfm. Posso rendere i tag ColdFusion rossi e i tag HTML blu?

Ad esempio, consente di chiamare il file seguente HelloWorld.cfm - Posso colorare i tag in modo diverso?

<cfset myvar = "hello, world" /> 
<html> 
<head> 
    <title>This is my title</title> 
</head> 
<body> 

<div><cfoutput>#myvar#</cfoutput></div> 

</body> 
</html> 

Grazie!

risposta

21

Sì, a patto che i tag possono essere identificati come aventi scopi diversi dalle definizioni di lingua installata, è possibile modificare la combinazione di colori per indirizzare tali ambiti con colori specifici e altri stili.

Nella cartella dei pacchetti, gli ambiti linguistici sono definiti nei file .tmLanguage per le lingue installate, mentre gli stili sono definiti nei file .tmTheme nella cartella "color scheme - default".

Se si posiziona il cursore all'interno di un tag e premere spostamento + Ctrl +alt + p (spostamento - cmd-p in OSX credo) la barra di stato mostrerà l'ambito attuale. È anche possibile copiare questo negli appunti tramite la console con questo comando:

sublime.set_clipboard(view.syntax_name(view.sel()[0].b)) 

È possibile utilizzare queste informazioni per creare i vostri stili, un po 'come selettori CSS, ma con XML. Ad esempio, utilizzo questo Coldfusion package e ho i selettori di ambito mostrati di seguito nel mio file .tmTheme personalizzato per distinguere i tag cf dai tag HTML.

<dict> 
    <key>name</key> 
    <string>Tag name</string> 
    <key>scope</key> 
    <string>entity.name.tag</string> 
    <key>settings</key> 
    <dict> 
     <key>background</key> 
     <string>#D8D0B6</string> 
     <key>fontStyle</key> 
     <string>bold</string> 
     <key>foreground</key> 
     <string>#647A4F</string> 
    </dict> 
</dict> 
<dict> 
    <key>name</key> 
    <string>CF tag name</string> 
    <key>scope</key> 
    <string>entity.name.tag.conditional.cfml, entity.name.tag.declaration.cfml, entity.name.tag.other, entity.name.tag.cf, entity.name.tag.inline.other.cfml</string> 
    <key>settings</key> 
    <dict> 
     <key>background</key> 
     <string>#D8D0B6</string> 
     <key>fontStyle</key> 
     <string>bold</string> 
     <key>foreground</key> 
     <string>#990033</string> 
    </dict> 
</dict> 

Maggiori informazioni scope selectors.

+0

Grazie Jeremy, questo è esattamente ** ** quello che sto cercando. Complimenti! – NotJustClarkKent

+4

@NotJustClarkKent: Sarebbe opportuno quindi contrassegnare questa risposta eccellente come “la risposta” (facendo clic sul segno di spunta). –

4

Ho aggiornato il ColdFusion.tmLanguage in modo che sia sufficiente scegliere come target entity.name.tag.cf per colorare tutti i tag cf. È anche possibile indirizzare i tag specifici, ad esempio entity.name.tag.cf.script o entity.name.tag.cf.query per cfscript e cfquery, rispettivamente. HTH

+1

Grazie Atomi :) - Sto giocando con questi obiettivi di entità ora, ma temo che potrebbe avere _too_ _molto divertente;) – NotJustClarkKent