Forum Programmation.autre Produire un diff colorisé (en html)

Posté par  (site web personnel) .
Étiquettes : aucune
0
19
fév.
2009
Bonjour, je cherche à produire un diff colorisé afin de comparer pas mal de fichiers textes et de pouvoir visualiser dans un navigateur les différences.
En gros, je cherche à obtenir ce que l'on peut voir avec le diff de vim ou encore avec celui de viewcvs : de jolis couleurs pour bien voir quels caractères ont été ajoutés/supprimés/modifiés

Le but est que ça puisse fonctionner en mode batch.

Mes limites sont les suivantes :
- Doit fonctionner dans un environnement éventuellement non Unix (windows par exemple). S'il s'agit de faire fonctionner 2 ou 3 exécutables entre eux, c'est génant, mais s'il faut une distribution entière, ça va pas être possible...
- Java ou perl préféré
- A la limite un exécutable s'il le fait bien

J'ai pas mal cherché, et en perl on a des libs intéressantes
- qui ne produisent pas de la couleur (http://search.cpan.org/~dwheeler/Text-Diff-HTML-0.05/lib/Tex(...)
, ou qui produise de la couleur à la ligne (genre http://jrm.stin.jp/media/1/20080507-diff2html.pl.txt).

Il y a bien ça http://search.cpan.org/~dwheeler/SVN-Notify-2.78/lib/SVN/Not(...) qui a l'air de produire ce que je cherche

Il y aussi diff2html http://kafka.fr.free.fr/diff2html/index-fr.html
Qui serait parfait, mais ne va pas aussi loin que celui de vim... Qui lui met vraiment bien exergue les caractères qui changent, et pas seulement la ligne.

A la limite c'est possible de faire cracher un output en html par vim ?
  • # Mouais

    Posté par  . Évalué à 6.

    Tu peux essayer ca :

    vi -d fichier1 fichier2 +"run! syntax/2html.vim" +"w" +":wincmd w" +"run! syntax/2html.vim" +"wq" +"q" +"q" +"q"
  • # :runtime! syntax/2html.vim

    Posté par  (site web personnel) . Évalué à 2.

    Sous vim y'a la commande :runtime! syntax/2html.vim qui te génère un rendu html du buffer actif dans un nouvel "onglet". J'ai testé sur un vimdiff ca marche pas trop mal mais vu que ce sont deux onglets différents on est obligé de le faire deux fois et donc on se retrouve avec deux fichiers html.

    M'enfin je pense qu'il est assez simple d'automatiser l'extraction des contenu du body et la création d'une page avec deux div juxtaposée.

    Plus de doc ici :
    :help convert-to-HTML
    Il y est dit que la génération est assez lente. Forcément j'ai testé sur des petits fichiers ca a été rapide pour moi.

    Ha et on trouve aussi des variables à configurer pour faire varier la sortie :
    :let use_xhtml = 1
    :let html_use_css = 1
  • # colordiff + highlighters

    Posté par  . Évalué à 2.

    colordiff : http://colordiff.sourceforge.net/

    divers highlighters qui supportent diff :
    gnu source highlight : http://www.gnu.org/software/src-highlite/source-highlight.ht(...) (c++)
    highlight : http://www.andre-simon.de/dokuwiki/doku.php (c++)
    geshi : http://qbnz.com/highlighter/ (php)
    pygments : http://pygments.org/ (python)
    (il y en a certainement d'autres, j'ai fait une recherche très rapide)
  • # foo

    Posté par  (site web personnel) . Évalué à 1.

    A la limite c'est possible de faire cracher un output en html par vim ?

    Par emacs je sais que c'est possible. J'utilise "htmlize.el" pour le faire dans http://pleac.sourceforge.net/ depuis mon Makefile, et le résultat est pas trop mal.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.