¿Cómo forzar un formato de diferencia para TextMate?

1

Tengo este alias:

alias hgd='hg diff|mate'

El problema es que, por alguna razón, el archivo temporal creado de este modo será un .txt , mientras que lo necesitaría para tener el resaltado de sintaxis diff .

Si cambio manualmente el resaltado a diff , entonces cada .txt que abriré en el futuro también usará el resaltado diff .

¿Qué puedo hacer para arreglar eso?

    
pregunta o0'. 02.03.2011 - 17:27

3 respuestas

2

TextMate puede usar la extensión de archivo o de la primera línea de un archivo para determinar qué tipo de archivo es.

Para mi paquete de diferencias (creo que es el original), esto es:

firstLineMatch = '(?x)^
        (===\ modified\ file
        |==== \s* // .+ \s - \s .+ \s+ ====
        |Index:\ 
        |---\ [^%]
        |\*\*\*.*\d{4}\s*$
        |\d+(,\d+)* (a|d|c) \d+(,\d+)* $
        |diff\ --git\ 
        )
    ';

No tengo mercurial, pero parece que la primera línea de su diff puede parecer algo así como diff -r 2278160e78d4 hello.c . Como tal, puede agregar otra línea a ese interruptor grande O:

        ...
        |diff\ --git\ 
        |diff\ -r\ 
        )
    ';

Tenga en cuenta que el carácter final de la línea es un espacio.

Como otra alternativa, parece que puedes definir tu alias como alias hgd='hg diff --git|mate' para usar el mismo formato que git, que ya es reconocido por TextMate.

    
respondido por el Matt B. 03.03.2011 - 17:12
1

Yo mismo no tengo ningún proyecto comercial, pero si lo hace en svn (por ejemplo, con svn diff -r 100:099 ), también genera un .txt, pero usa el resaltado de diferencias; ¿Paquete disponible en su instalación?

Si no, todavía puedes reescribir tu alias a algo como hg diff > /tmp/hg.diff && mate /tmp/hg.diff

    
respondido por el Asmus 02.03.2011 - 18:17
1

Hacer esto con un alias no funcionará, pero puedes escribir una función bash que lo maneje. Algo como:

function hgd {
    T='mktemp /tmp/hgdiff.XXXXXX.diff'
    hg diff > $T
    mate -w $T
    rm $T
}

en tu .bash_profile funcionará. Esto actúa más cerca de lo que está intentando lograr, ya que no deja rastro del archivo temporal en el disco cuando termina de verlo con TextMate.

    
respondido por el Ian C. 02.03.2011 - 18:51

Lea otras preguntas en las etiquetas