2012-02-18 11 views
5

Me pregunto si hay una forma de tener dos colores de etiqueta diferentes ("colores" para los de EE. UU.) Para etiquetas de idiomas diferentes en el mismo archivo.Resaltado específico de sintaxis con Sublime Text 2

Por ejemplo, supongamos que tengo el código de ColdFusion y el código HTML en el mismo archivo .cfm. ¿Puedo hacer que las etiquetas ColdFusion se vuelvan rojas y las azules HTML?

Por ejemplo, llamemos al siguiente archivo HelloWorld.cfm - ¿podría colorear las etiquetas de manera diferente?

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

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

</body> 
</html> 

¡Gracias!

Respuesta

21

Sí, siempre que las definiciones de idioma instaladas puedan identificar las etiquetas con diferentes ámbitos, puede editar su combinación de colores para enfocar esos ámbitos con colores específicos y otros estilos.

En su carpeta de paquetes, los ámbitos del idioma se definen en los archivos .tmLanguage para sus idiomas instalados, mientras que los estilos se definen en los archivos .tmTheme en la carpeta "esquema de colores - predeterminado".

Si coloca el cursor dentro de una etiqueta y presiona cambio + ctrl +alt +p (cambio - cmd-p en OSX creo) la barra de estado mostrará el alcance actual. También puede copiar al portapapeles este a través de la consola con este comando:

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

Se puede usar esta información para crear sus estilos, un poco como selectores CSS, pero con XML. Por ejemplo, uso este Coldfusion package y tengo los selectores de alcance que se muestran a continuación en mi archivo .tmTheme personalizado para distinguir las etiquetas cf de las etiquetas 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> 

Más información sobre scope selectors.

+0

Gracias Jeremy, esto es ** exactamente ** lo que estoy buscando. ¡Prestigio! – NotJustClarkKent

+4

@NotJustClarkKent: Sería apropiado marcar esta excelente respuesta como "la respuesta" (haciendo clic en la marca de verificación). –

4

He actualizado ColdFusion.tmLanguage para que solo tenga que segmentar entity.name.tag.cf para colorear todas las etiquetas cf. También puede orientar etiquetas específicas, por ejemplo, entity.name.tag.cf.script o entity.name.tag.cf.query para cfscript y cfquery, respectivamente. HTH

+1

Gracias Atomi :) - Estoy jugando con estos objetivos de entidad ahora, pero me temo que podría estar siendo "demasiado_muy_ divertido;) – NotJustClarkKent

Cuestiones relacionadas