Saya membiarkan Emacs berjalan sepanjang hari, dan sering akan melakukan banyak manipulasi sistem file pada file yang terbuka di buffer Emacs. Sebagai contoh, saya mungkin beralih ke cabang lain di Git yang memiliki struktur direktori yang sangat berbeda.
Sayangnya ini membuat saya dengan sekelompok buffer terbuka yang sekarang terdaftar Emacs sebagai buffer "dimodifikasi" mengacu pada file "baru". Kecuali saya berhati-hati untuk menutupnya secara manual setiap kali saya melakukan ini, mudah untuk secara refleks menyimpan buffer yang kemudian menghasilkan file palsu, mungkin duplikat dalam proyek saya. Saya bahkan tidak dapat menutup emacs tanpa menjawab pertanyaan "simpan buffer ini" untuk masing-masing.
Apakah ada cara untuk secara otomatis menutup buffer yang tidak dimodifikasi ketika file yang mendasarinya menghilang? Mirip dengan semangat global-auto-revert-mode
yang juga menangani ketika file dihapus seluruhnya?
sumber
Jawaban:
Saya pikir sesuatu di sepanjang garis ini bisa bekerja:
The
buffer-backed-by-file-p
cek fungsi jika file tersebut didukung oleh file - jika tidak, kembali benar, jika tidak kembali jika file backing ada. Kami kemudian mengambil daftar buffer, memfilter apa pun kecuali yang memiliki file dukungan, tetapi file itu tidak ada, dan kemudian membunuh mereka.Membutuhkan dash.el untuk -hapus, karena saya terlalu malas untuk menemukan built-in untuk mencapai hal yang sama.
Semoga ini membantu!
sumber
mapc
perintah itu setiap kali Anda ingin agar buffer-bukan-didukung-oleh-file dihapus, bukan? Jadi itu tidak sepenuhnya otomatis. Untuk otomatisasi penuh, Anda harus memastikan bahwamapc
berjalan berulang kali sendiri atau menggunakan sesuatu sepertiinotify
menjalankannya untuk Anda ketika file benar-benar dihapus.(run-with-timer 60 60 (lambda () (mapc 'kill-buffer (-remove 'buffer-backed-by-file-p (buffer-list)))))
adalah apa yang saya gunakan sebagai perkiraan pertama.