2012-02-18 4 views
5

Je me demande s'il existe un moyen d'avoir deux couleurs de tag différentes ("couleurs" pour celles aux Etats-Unis) pour différentes étiquettes de langues dans le même fichier. Par exemple, disons que j'ai du code ColdFusion et du code HTML dans le même fichier .cfm. Est-ce que je pourrais rendre les tags ColdFusion rouges et les tags HTML Blue?Surlignage spécifique à la syntaxe avec Sublime Text 2

Par exemple, appelons le fichier ci-dessous HelloWorld.cfm - Puis-je colorer les tags différemment?

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

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

</body> 
</html> 

Merci!

Répondre

21

Oui, tant que les balises peuvent être identifiées comme ayant des portées différentes selon les définitions de langue que vous avez installées, vous pouvez modifier votre jeu de couleurs pour cibler ces étendues avec des couleurs et d'autres styles spécifiques.

Dans votre dossier packages, les étendues de langue sont définies dans les fichiers .tmLanguage pour les langues installées, tandis que les styles sont définis dans les fichiers .tmTheme du dossier "color scheme - default".

Si vous placez votre curseur dans une balise, puis appuyez sur changement + ctrl + alt + p (changement - cmd-p dans OSX je pense) la barre d'état affichera la portée actuelle. Vous pouvez également copier dans le presse-papiers via la console avec cette commande:

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

Vous pouvez utiliser ces informations pour créer vos styles, un peu comme sélecteurs css, mais avec XML. Par exemple, j'utilise ce Coldfusion package et j'ai les sélecteurs d'oscilloscope montrés ci-dessous dans mon fichier .tmTheme personnalisé pour distinguer les tags cf des balises 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> 

Plus d'informations sur scope selectors.

+0

Merci Jeremy, c'est ** exactement ** ce que je cherche. Gloire! – NotJustClarkKent

+4

@NotJustClarkKent: Il serait approprié alors de marquer cette excellente réponse comme "la réponse" (en cliquant sur la coche). –

4

J'ai mis à jour le ColdFusion.tmLanguage afin que vous ayez seulement besoin de cibler entity.name.tag.cf pour colorer toutes les balises cf. Vous pouvez également cibler des tags spécifiques, par exemple entity.name.tag.cf.script ou entity.name.tag.cf.query respectivement pour cfscript et cfquery. HTH

+1

Merci Atomi :) - Je suis en train de jouer avec ces cibles d'entités maintenant mais je crains que ce soit amusant _too_much_;) – NotJustClarkKent