Bagaimana cara memaksa format diff untuk TextMate?

1

Saya memiliki alias ini:

alias hgd='hg diff|mate'

Masalahnya adalah bahwa karena suatu alasan file sementara yang dibuat akan menjadi .txt, sementara saya membutuhkannya untuk memiliki diffsintaks.

Jika saya mengubah sorotan secara manual diff, maka setiap .txtsaya akan membuka di masa depan akan menggunakan diffsorotan juga.

Apa yang bisa saya lakukan untuk memperbaikinya?

o0 '.
sumber

Jawaban:

2

TextMate dapat menggunakan ekstensi file atau baris pertama file untuk mengetahui jenis file apa itu.

Untuk bundel diff saya (saya pikir ini asli), ini adalah:

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

Saya tidak memiliki mercurial, tetapi tampaknya seolah-olah baris pertama diff-nya mungkin terlihat seperti diff -r 2278160e78d4 hello.c. Dengan demikian, Anda dapat menambahkan baris lain ke saklar ATAU besar itu:

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

Perhatikan bahwa karakter terakhir dalam baris adalah spasi.

Sebagai alternatif lain, tampaknya Anda mungkin dapat mendefinisikan alias alias hgd='hg diff --git|mate'untuk menggunakan format yang sama dengan git, yang sudah dikenali oleh TextMate.

Matt B.
sumber
1

Saya tidak memiliki proyek mercurial sendiri, tetapi jika Anda melakukan ini di svn (mis. Dengan svn diff -r 100:099) itu menghasilkan .txt juga, tetapi ia menggunakan highlight highlight - mungkin ada pembaruan untuk bundel berbeda yang tersedia di instalasi Anda?

Jika tidak, Anda masih dapat menulis ulang alias Anda menjadi sesuatu seperti hg diff > /tmp/hg.diff && mate /tmp/hg.diff

Asmus
sumber
1

Melakukan ini dengan alias tidak akan berfungsi, tetapi Anda dapat menulis fungsi bash yang akan menangani ini. Sesuatu seperti:

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

di .bash_profileakan Anda bekerja. Ini bertindak lebih dekat dengan apa yang Anda coba capai karena tidak meninggalkan jejak file sementara pada disk ketika Anda selesai melihatnya dengan TextMate.

Ian C.
sumber