Come forzare un formato diff per TextMate?

1

Ho questo alias:

alias hgd='hg diff|mate'

Il problema è che per qualche motivo il file temporaneo così creato sarà un .txt , mentre io avrei bisogno di avere l'evidenziazione della sintassi diff .

Se cambio manualmente l'evidenziazione su diff , ogni .txt che apro in futuro userà anche l'evidenziazione diff .

Che cosa posso fare per risolverlo?

    
posta o0'. 02.03.2011 - 17:27
fonte

3 risposte

2

TextMate può usare l'estensione di file o la prima riga di un file per capire quale sia il tipo di file.

Per il mio bundle diff (penso sia l'originale), questo è:

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

Non ho mercurial, ma sembra che la prima riga del diff assomigli a diff -r 2278160e78d4 hello.c . In quanto tale, puoi aggiungere un'altra linea a quel grande OR switch:

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

Nota che il carattere finale nella linea è uno spazio.

Come altra alternativa, sembra che tu possa essere in grado di definire il tuo alias come alias hgd='hg diff --git|mate' per usare lo stesso formato di git, che è già riconosciuto da TextMate.

    
risposta data 03.03.2011 - 17:12
fonte
1

Non ho alcun progetto mercuriale, ma se lo fai in svn (ad es. con svn diff -r 100:099 ) genera anche un .txt, ma usa l'evidenziazione diff - forse c'è un aggiornamento al diff bundle disponibile nella tua installazione?

In caso contrario, puoi comunque riscrivere il tuo alias con qualcosa come hg diff > /tmp/hg.diff && mate /tmp/hg.diff

    
risposta data 02.03.2011 - 18:17
fonte
1

Fare questo con un alias non funzionerà, ma puoi scrivere una funzione bash che gestirà questo. Qualcosa come:

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

nel tuo .bash_profile funzionerà. Questo si avvicina a quello che stai cercando di realizzare in quanto non lascia traccia del file temporaneo sul disco quando hai finito di guardarlo con TextMate.

    
risposta data 02.03.2011 - 18:51
fonte

Leggi altre domande sui tag