Magit: comment afficher les différences au sein des lignes

14

J'ai un fichier, j'apporte quelques modifications. Voici comment SmartGit montre les différences.

smartgit

Comme vous pouvez le voir, il montre où se situe la différence dans la ligne. Il change le fond en couleur rouge en position concrète. Et c'est très bien. Je n'ai pas besoin de passer du temps à trouver des différences. Je vois immédiatement où est la différence.

Maintenant à quoi ça ressemble dans Magit:

entrez la description de l'image ici

Comme vous pouvez le voir, Magit dit que la différence était dans la ligne ENTIÈRE. Il ne montre pas où se situe la différence dans la ligne. J'ai donc besoin de trouver où est la différence manuellement. Je dois faire ça à chaque fois. Ce n'est pas très comparable. Supposons que j'ai des différences sur 20 lignes. J'ai besoin de passer beaucoup de temps pour trouver ce qui a réellement changé. Ce n'est pas très bon.

Magit peut-il afficher les différences dans la colonne réelle où se trouve le changement? Comme dans SmartGit.

un_abonné
la source

Réponses:

3

Si vous voulez stocker cela dans votre configuration, comme moi, ajoutez simplement

(setq magit-diff-refine-hunk (quote all))

à ton .emacs.d/init.el


Cela a été inspiré par la réponse de phils .

loki
la source
16

M-x customize-option RET magit-diff-refine-hunk RET

Voir aussi la magit-diff-toggle-refine-hunkcommande, liée à Dt, que vous pouvez utiliser pour définir le comportement dans le tampon actuel. Utilisez DC-utpour activer le raffinement pour tous les mecs dans le tampon; sinon, seuls les raffinements du morceau actuellement sélectionné sont affichés à tout moment (mise à jour lorsque vous vous déplacez entre les morceaux).

Pour configurer l'apparence des régions « raffinés » de la diff, l' utilisation M-x customize-facedes diff-refine-added, diff-refine-changedet des diff-refine-removedvisages.

phils
la source
1

Pour que les différences de mots fonctionnent, magit doit pouvoir utiliser l' diffexécutable.

Assurez-vous donc que cela M-x ielm RET (executable-find "diff") RETne revient pas nil. S'il renvoie, nilajoutez le chemin d'accès au dossier contenant votre exécutable diff à la exec-pathvariable avecM-x ielm RET (add-to-list 'exec-path "c:/Program Files/Git/usr/bin") RET

Ensuite, vous devez vous assurer que magit utilise bien cet diffexécutable. Pour cela, entrez un tampon d'état magit, appuyez sur Det assurez-vous qu'il -x Disallow external diff drivers (--no-ext-diff)est désactivé. Sinon, désactivez-le avec -x, définissez-le par défaut avec spuis enregistrez les paramètres par défaut avec Dw.

Après cela, vous pouvez utiliser Dtpour basculer l' magit-diff-refine-hunkoption pour votre tampon actuel ou suivre cette réponse par phils pour rendre ce paramètre plus permanent.

Renard volant
la source
0

Essayez ediff-toggle-ignore-caseou compare-ignore-casevariable. Je suppose que votre moteur de différenciation ignore la casse. Peut-être aussi dans les options de diff (je ne sais pas quels sont les paramètres).

Atman50
la source