¿Cómo ver diff cuando emacs sugiere recuperar este archivo?

51

A veces sucede: emacs le solicita que recupere los cambios no guardados en un archivo, pero no puede recordar si desea esos cambios o no.

Comenzando en el recover-this-filebúfer, ¿hay alguna manera de ver una diferencia o ver directamente los cambios?

Por ejemplo, algo así como lo que magit-modeda al tabular en un archivo editado en el búfer de estado.

Sparx
fuente

Respuestas:

51

Después de ejecutar recover-this-filey aceptar la versión de autoguardado, tendrá un búfer modificado que contiene el contenido de autoguardado. En este punto, puede usar M-x diff-buffer-with-file RETpara ver las diferencias entre el búfer modificado y el archivo guardado.

La clave que he vinculado para esto en realidad ejecuta una función personalizada, para producir una diferencia unificada y omitir la solicitud del búfer (asume el búfer actual).

(defun my-diff-buffer-with-file ()
  "Compare the current modified buffer with the saved version."
  (interactive)
  (let ((diff-switches "-u")) ;; unified diff
    (diff-buffer-with-file (current-buffer))))

También hay un equivalente de ediff (que generalmente prefiero, aunque uso ambos) que está disponible en M-x ediff-current-file RET

Si desea rechazar las modificaciones después de comprobar el diff, usted debería ser capaz de simplemente undola recuperación. (Si no puede usar siempre revert-buffero find-alternate-file).

Como las combinaciones de teclas para los comandos diff a menudo involucran =, encuentro lo siguiente conveniente (nb. Desligé el C-zenlace predeterminado , y lo moví a C-z C-z, que se abre C-zcomo un prefijo para los enlaces personalizados):

(global-set-key (kbd "C-z =") 'my-diff-buffer-with-file)
(global-set-key (kbd "C-z C-=") 'ediff-current-file)
phils
fuente