Bagaimana cara melihat diff ketika emacs menyarankan untuk memulihkan file ini?

51

Terkadang itu terjadi: emacs meminta Anda untuk memulihkan perubahan yang belum disimpan ke file, tetapi Anda tidak dapat mengingat apakah Anda menginginkan perubahan itu atau tidak.

Mulai dari recover-this-filebuffer, apakah ada cara untuk melihat diff atau langsung melihat perubahannya?

Misalnya, sesuatu seperti apa yang magit-modememberi ketika menabrak file yang diedit di buffer status.

Sparx
sumber

Jawaban:

51

Setelah menjalankan recover-this-filedan menerima versi penyimpanan otomatis, Anda akan memiliki buffer yang dimodifikasi yang berisi konten penyimpanan otomatis. Pada titik ini Anda dapat menggunakan M-x diff-buffer-with-file RETuntuk melihat perbedaan antara buffer yang dimodifikasi dan file yang disimpan.

Kunci yang saya ikat untuk ini benar-benar menjalankan fungsi kustom, untuk menghasilkan diff terpadu, dan untuk melewatkan prompt untuk buffer (mengasumsikan buffer saat ini).

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

Ada juga setara ediff (yang biasanya saya sukai, meskipun saya menggunakan keduanya) yang tersedia di M-x ediff-current-file RET

Jika Anda ingin menolak modifikasi setelah memeriksa diff, Anda harus dapat dengan mudah undopemulihan. (Gagal yang selalu bisa Anda gunakan revert-bufferatau find-alternate-file.)

Karena keybindings untuk perintah diff sering melibatkan =, saya menemukan kenyamanan berikut (nb Saya telah melepaskan C-zikatan default , dan memindahkannya C-z C-z, yang terbuka C-zsebagai awalan untuk binding kustom):

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