Come visualizzare diff quando emacs suggerisce di recuperare questo file?


51

A volte succede: emacs ti chiede di recuperare le modifiche non salvate in un file, ma non ricordi se vuoi quelle modifiche o meno.

A partire dal recover-this-filebuffer, c'è un modo per visualizzare un diff o altrimenti vedere direttamente le modifiche?

Ad esempio, qualcosa di simile a ciò che magit-modedà quando si esegue la tabulazione su un file modificato nel buffer di stato.


Risposte:


51

Dopo aver eseguito recover-this-filee accettato la versione di salvataggio automatico, avrai un buffer modificato contenente i contenuti del salvataggio automatico. A questo punto puoi usare M-x diff-buffer-with-file RETper vedere le differenze tra il buffer modificato e il file salvato.

La chiave che ho associato per questo in realtà esegue una funzione personalizzata, al fine di produrre un diff unificato e saltare il prompt per il buffer (presuppone il buffer corrente).

(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))))

C'è anche un equivalente ediff (che generalmente preferisco, anche se li uso entrambi) che è disponibile all'indirizzo M-x ediff-current-file RET

Se desideri rifiutare le modifiche dopo aver verificato il diff, dovresti essere in grado di undoripristinare semplicemente . (In mancanza di ciò puoi sempre usare revert-buffero find-alternate-file.)

Poiché spesso le combinazioni di tasti per i comandi diff implicano =, trovo utile quanto segue (nb non ho associato l' C-zassociazione predefinita e l'ho spostata invece in C-z C-z, che si apre C-zcome prefisso per le associazioni personalizzate):

(global-set-key (kbd "C-z =") 'my-diff-buffer-with-file)
(global-set-key (kbd "C-z C-=") 'ediff-current-file)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.