Si git effectue une fusion à trois et a un conflit il ne peut « pas résoudre, il marque cette zone du fichier comme ceci:

No unresolvable conflicts here <<<<<<< HEAD xyz ||||||| parent of ... abc ======= 123 >>>>>>> ... 

Y a-t-il un moyen (et, si oui, comment) de changer la couleur de fond de ces 3 « sections »:

  • <<<<<<< HEAD par la ligne avant ||||||| parent of ...
  • ||||||| parent of ... jusquà la ligne avant =======
  • La ligne après ======= à travers la ligne >>>>>>> ...

(EDIT: La question tourne autour de « sil existe un moyen de mettre en évidence certaines lignes en fonction des autres lignes. xyz ne serait généralement pas mis en surbrillance, mais comme il « se situe entre <<<<<<< et ||||||| il serait mis en surbrillance.)

Avec également la possibilité de gérer dautres ensembles de marqueurs de conflit?

Utilisation de la version la plus récente de vim disponible au moment dun commentaire. Donc, à partir de maintenant, 8.1.1183.

Jutilise un fond noir et 256 couleurs dans mon terminal. Je pensais que ce serait bien de donner à ces sections les couleurs les plus sombres R / G / B / C / M / Y, donc elles nont pas causé beaucoup de problème avec la coloration syntaxique. (Parlant des couleurs ANSI 52, 22, 17, 23, 53 et 58 – pas les couleurs 1 à 6.)

Commentaires

  • Une simple requête de recherche Google aurait suffi: github.com/rhysd/conflict-marker.vim
  • @klaus, jaurais dû mentionner que jai regardé ce plugin en faisant beaucoup de recherche Google. Ce plug-in met en évidence les marqueurs de conflit eux-mêmes. Il ne met pas ' t également en surbrillance le texte auquel ces marqueurs sont associés, sur dautres lignes. Je pense que le gros problème est de savoir si ' est un moyen de mettre en évidence certaines lignes en fonction dautres lignes. Cela signifie que, dans mon exemple, xyz ne serait généralement pas mis en surbrillance, mais comme il ' s entre <<<<<<< et ||||||| Je voudrais quil soit mis en évidence.

Réponse

Dans votre configuration Vim, vous pouvez faire ce qui suit (changer le couleurs et style à votre goût):

function! ConflictsHighlight() abort syn region conflictStart start=/^<<<<<<< .*$/ end=/^\ze\(=======$\||||||||\)/ syn region conflictMiddle start=/^||||||| .*$/ end=/^\ze=======$/ syn region conflictEnd start=/^\(=======$\||||||| |\)/ end=/^>>>>>>> .*$/ highlight conflictStart ctermbg=red ctermfg=black highlight conflictMiddle ctermbg=blue ctermfg=black highlight conflictEnd ctermbg=green cterm=bold ctermfg=black endfunction augroup MyColors autocmd! autocmd BufEnter * call ConflictsHighlight() augroup END 

Le rendu comme suit:

entrez la description de limage ici

Est-ce ce que vous recherchez?

Commentaires

  • Que ' est absolument ce que je ' m après. Jai ' cependant quelques bizarreries avec le vimscript. Si je tape votre exemple, il ressemble à limage que vous avez publiée. Si je sauvegarde votre exemple, puis redémarrez vim en éditant le nouveau fichier, il devient horriblement déséquilibré. (vim 8.1.1186.) Encore plus étrange, si je supprime ensuite toutes les lignes dun fichier existant montrant bizarrement, et que je recolle son contenu, ' s affiche toujours faux. i.ibb.co/jvGMH6t/wtfvim.jpg
  • Son utilisation dans un scénario de fusion réel déclenche une coloration encore plus étrange que limage I lié, avec: conflictStart correctement mis en évidence; la ||||||| partie de conflictMiddle en rouge mais le reste de la ligne en bleu comme il se doit; le ======= en rouge; la ligne >>>>>>> .* en jaune (doù vient le jaune, il ny a pas de jaune); et le reste du fichier qui ne devrait pas ' faire partie du conflit du tout en vert, étant toujours pris comme conflictEnd selon la fonction SynStack() de stackoverflow.com/questions/30247603
  • De même, en utilisant le scénario de fusion, si je copie / colle le contenu dans un nouveau fichier, il saffiche comme prévu, mais dès quil ' est enregistré et que vim est redémarré, il saffiche mal.
  • Dans un scénario de fusion réel, vous pouvez désactiver la coloration de différence dorigine en utilisant :diffoff, en ne laissant que le type de fichier ' s coloration syntaxique. Je vais jouer un peu pour voir votre premier cas.
  • Ack, désolé, javais oublié que javais laissé le plugin conflict_marker installé après lavoir essayé avant mon message, ce qui était en conflit et causait le problème. Supprimer cela et ne plus avoir ce problème.

Réponse

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *