2010-06-29 18 views
5

Estoy tratando de ampliar algunos resaltados CSS en Textmate. Mi enfoque es así ...Resaltado de sintaxis de texto, extendiendo el resaltado desde otro idioma

{ 
    .... 
    patterns = (
     { include = 'source.css'; }, 
     { 
      name = 'support.function'; 
      match = '\..*\);'; 
     }, 
    ); 
} 

El problema es "include = 'source.css';". Si elimino esa línea. Mi selección personalizada coincide y aplica el resaltado esperado. Pero luego pierdo todo el css predefinido resaltando lo que quiero.

Estoy confundido en cuanto a cómo puedo anular el CSS existente que resalta que estoy incluyendo. Ideas?

Respuesta

4

Tuve un problema similar. Golpeé mi cabeza contra eso, entonces alguien en el canal de IRC de TextMate me puso en línea: por alguna razón (lo cual olvido) necesitas volver a incluir tu gramática de lenguaje.

Mi sección de patrones ahora se ve como

patterns = (
{ include = 'source.ruby'; }, 
{ include = '$self'; }, 
); 

Para añadir más información a este ejemplo, aquí está mi gramática idioma para el paquete I estaba creando (en la parte del archivo que estaba interesado en, todo estaba en el meta.rails.model alcance. Tal vez usted no tiene que, en su paquete de CSS.

patterns = (
    { name = 'meta.rails.model'; 
     comment = "Uses lookahead to match classes that (may) inherit from ActiveRecord::Base; includes 'source.ruby' to avoid infinite recursion"; 
     begin = '(^\s*)(?=class\s+.+ActiveRecord::Base)'; 
     end = '^\1(?=end)\b'; 
     patterns = (
      { include = 'source.ruby'; }, 
      { include = '$self'; }, 
     ); 
    }, 
    { name = 'source.ruby.rails.aasm.event'; 
     match = '(aasm_event\W*:\w+)'; 
     captures = { 1 = { name = 'keyword.other.context.ruby.rails.aasm.event'; }; }; 
    }, 
    { include = 'source.ruby.rails'; }, 
); 

}

Pero verá que la declaración $ self extrae los otros patrones en el patrón meta.rails.model (que es, creo, por qué eso fue importante).

+1

Perfecto, exactamente lo que estaba buscando. –