The save-some-buffers
petunjuknya perintah untuk menyimpan atau mengabaikan setiap file yang dimodifikasi, dan juga menyediakan pilihan untuk diff file dimodifikasi terhadap file itu mengunjungi.
Saya ingin perilaku yang sama dari kill-buffer
atau kill-this-buffer
. Jika buffer diubah sudah ada ya / tidak prompt tetapi saya juga ingin opsi untuk melihat diffs.
Apakah ada cara bawaan untuk melakukan ini, atau titik ekstensi yang sesuai? Atau haruskah saya mengikat perintah kill-buffer saya sendiri?
buffers
kill-buffer
glukas
sumber
sumber
defadvice
. Ini akan memungkinkan Anda untuk dengan mudah memperpanjang built-inkill-buffer
.buffer-modified-p
dan memanggil yang aslikill-buffer
untuk melanjutkan membunuh tanpa perintah lain. Saya bertanya-tanya apakah ada cara yang lebih baik, tetapi mungkin mencoba ini.save-some-buffers
selama beberapa tahun dan tidak pernah tahu ia memilikidiff
fitur ... Terima kasih!Jawaban:
Pertanyaan besarnya adalah apakah Anda menginginkan perilaku ini untuk
kill-buffer
dirinya sendiri, yang berarti tidak hanya ketika Anda menyebutnya secara interaktif tetapi untuk setiap penggunaannya dalam kode Lisp yang ada, atau apakah Anda menginginkannya hanya untuk penggunaan interaktif.Saya akan menganggap yang terakhir. Dalam hal ini, biarkan
kill-buffer
sendiri, tentukan perintah Anda sendiri yang melakukan apa yang Anda inginkan, dan remap kunci yang biasanya terikat padakill-buffer
perintah Anda:Untuk
my-kill-buffer
perintah Anda , cukup periksa di awal apakah buffer telah dimodifikasi, dan jika demikian luncurkanediff
untuk itu.Untuk memeriksa apakah sudah dimodifikasi, gunakan
buffer-modified-p
.Untuk
ediff
Anda mungkin ingin mengambil file (yaitu, buffer telah disimpan), dan berbeda terhadap buffer yang dimodifikasi saat ini. Anda mungkin perlu sedikit bermain-main - saya tidak tahuediff
perintah yang ada yang melakukan itu.Tapi mungkin yang Anda butuhkan hanyalah sesuatu
highlight-changes-mode
. Lihat manual Emacs, simpulHighlight Interactively
. Dengan kata lain, mungkin yang Anda butuhkan hanyalah memanggilhighlight-changes-mode
jika buffer telah dimodifikasi.sumber
diff-buffer-with-file
untuk menghasilkan diff. Sepertinya saya perlu meneleponset-buffer-modified-p
jika ingin melanjutkan dan membunuh tanpa diminta lagi dari implementasi asli.Berdasarkan jawaban dan komentar lain, inilah perintah kill custom yang memberikan opsi untuk mengubah buffer yang dimodifikasi dengan file yang dikunjungi. Saya sudah memetakan ini
C-x C-k
tetapi juga bisa memetakan kembalikill-buffer
seperti yang disarankan dalam jawaban @ Drew.Menggunakan implementasi dasar yang sama, Anda juga bisa memberi saran
kill-buffer
. Dengan pendekatan ini Anda mendapatkan opsi untuk melihat perbedaan di mana saja yangkill-buffer
disebut - misalnya, ketika membunuh buffer ditandai dari Ibuffer.sumber