Magit: cómo mostrar las diferencias dentro de las líneas

13

Tengo un archivo, hago algunos cambios. Aquí cómo SmartGit muestra las diferencias.

smartgit

Como puede ver, muestra dónde está la diferencia dentro de la línea. Cambia el fondo a color rojo en posición concreta. Y es muy bueno. No necesito pasar tiempo para encontrar diferencias. Inmediatamente veo dónde está la diferencia.

Ahora cómo se ve en Magit:

ingrese la descripción de la imagen aquí

Como puede ver, Magit dice que la diferencia estaba en TODA la línea. No muestra dónde está la diferencia dentro de la línea. Entonces necesito encontrar dónde está la diferencia manualmente. Necesito hacer esto todo el tiempo. No es muy comparable. Supongamos que tengo diferencias en 20 líneas. Necesito pasar mucho tiempo para encontrar lo que realmente cambió. No es muy bueno.

¿Puede Magit mostrar diferencias en la columna real donde está el cambio? Como en SmartGit.

un_suscriptor
fuente

Respuestas:

2

Si desea almacenar eso en su configuración, como yo, simplemente agregue

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

para usted .emacs.d/init.el


Esto fue inspirado por la respuesta de phils .

loki
fuente
16

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

Consulte también el magit-diff-toggle-refine-hunkcomando, vinculado a Dt, que puede usar para establecer el comportamiento en el búfer actual. Se usa DC-utpara activar el refinamiento de todos los trozos en el búfer; de lo contrario, solo se muestran los refinamientos para el trozo seleccionado actualmente en un momento dado (actualizándose a medida que se mueve entre trozos).

Para configurar la apariencia de las regiones '' refinados del diff, el uso M-x customize-facede los diff-refine-added, diff-refine-changedy diff-refine-removedcaras.

phils
fuente
1

Para que las diferencias de palabra funcionen, magit necesita poder usar el diffejecutable.

Así que asegúrese de que M-x ielm RET (executable-find "diff") RETno vuelva nil. Si regresa, nilagregue la ruta a la carpeta que contiene su ejecutable diff a la exec-pathvariable conM-x ielm RET (add-to-list 'exec-path "c:/Program Files/Git/usr/bin") RET

A continuación, debe asegurarse de que magit realmente esté usando ese diffejecutable. Para eso ingrese un búfer de estado magit, presione Dy asegúrese de que -x Disallow external diff drivers (--no-ext-diff)esté deshabilitado. De lo contrario, desactívelo con -x, configúrelo como predeterminado con sy luego guarde los valores predeterminados con Dw.

Una vez hecho esto, puede usar Dtpara alternar la magit-diff-refine-hunkopción para su búfer actual o seguir esta respuesta por phils para hacer esta configuración más permanente.

Zorro Volador
fuente
0

Prueba ediff-toggle-ignore-caseo compare-ignore-casevariable. Supongo que su motor diff está ignorando el caso También podría estar en opciones diff (no estoy seguro de cuáles son las configuraciones).

Atman50
fuente