Konteks
Ketika emacs mendeteksi bahwa suatu file diubah di luar buffer pengeditan.
Diamati
emacs akan bertanya:
namafile berubah dalam disk; benar-benar mengedit buffer? (y, n, r atau Ch)
(Kebetulan, kadang-kadang terjadi bahkan ketika tidak ada perubahan aktual, misalnya file jarak jauh pada server dengan jam melayang, tetapi pertanyaannya menarik dalam semua kasus.)
Berharap
emacs akan bertanya:
namafile berubah dalam disk; benar-benar mengedit buffer? (y, n, r, d atau Ch)
Menekan d
akan menunjukkan perbedaan antara versi, misalnya ediff-current-file
yang memungkinkan untuk menjalankan perbedaan secara interaktif.
Informasi tambahan
Itu akan mirip dengan apa yang dilakukan manajemen paket Debian ketika mendeteksi bahwa file konfigurasi yang disesuaikan secara lokal akan diperbarui oleh versi yang lebih baru dari paket kepemilikannya. Sebagai contoh, lihat Versi baru dari file konfigurasi / etc / default / grub tersedia, tetapi versi yang diinstal saat ini telah dimodifikasi secara lokal - Unix & Linux Stack Exchange
Cari sebelum Anda bertanya
Saya biasanya menemukan cara saya untuk solusi (misalnya emacsclient - Dari skrip eksternal, buka file dan jalankan beberapa ekspresi sederhana apakah emacs sudah berjalan atau tidak - Emacs Stack Exchange ) tetapi setelah mencari ini saya tidak dapat menemukan solusi yang sudah ada sebelumnya.
Saya akan mempertimbangkan menyesuaikan ini sendiri tetapi saya tidak cukup mahir di emacs-lisp dan emacs internal.
Sketsa solusi
- Menekan
C-g
kemudian 'Mx ediff-current-file` melakukan pekerjaan, dengan mengorbankan beberapa penekanan tombol. - Tujuannya di sini adalah untuk menjalankan
ediff-current-file
pada satu penekanan tombol pada prompt di atas.
sumber
Jawaban:
grepping untuk "really edit the buffer" di sumber emacs saya menemukan fungsi
ask-user-about-supersession-threat
dalam fileuserlock.el
.Tampaknya mudah untuk menambahkan
d
pilihan untuk meneleponediff-current-file
. Saya belum menguji ini secara ekstensif, (suntingan ditandai dengan;;-
komentar).sumber