Saya ingin dapat menyimpan salinan (atau foto) buffer ke dalam file. Perilaku akan serupa write-file
, kecuali bahwa itu tidak akan mengatur buffer untuk mengunjungi file ini.
Untuk usecase, bayangkan Anda memiliki sesi shell, dan Anda ingin menyimpannya dengan cepat ke file log. Buffer tidak boleh diganti namanya (sehingga fungsi yang mengandalkan nama buffer masih berfungsi), dan tidak boleh mengunjungi file (sehingga file tidak sengaja ditimpa, dan tidak ada peringatan saat keluar dari emacs).
Saya bisa membayangkan beberapa cara kotor melakukan ini, saya akan memposting satu sebagai jawaban sendiri, tetapi membaca dari manual, keseluruhan "file yang dikunjungi" sistem lebih rumit daripada yang terlihat, dan saya kira mudah untuk membuat konsep solusi yang salah. Apakah ada cara yang tersembunyi dan terintegrasi untuk mencapai ini?
write-region
dari Lisp (mis. Dalam perintah Anda sendiri). Cukup kirimkan(point-min)
dan(point-max)
, bersama dengan nama file.C-x h
M-x write-region
M-x write-region
perintah yang sebenarnya .Kotor
elisp
melakukan apa yang ingin saya lakukan:Sepertinya ini lebih merepotkan daripada yang seharusnya, karena kita harus menjaga baik file yang dikunjungi dan nama buffer, dan kita tidak bisa memastikan bahwa kita tidak melupakan hal lain.
Solusi lain yang melibatkan menyalin teks buffer dalam buffer baru, kemudian menyimpan dan membunuh buffer itu mungkin akan bekerja lebih baik, tetapi saya kemudian akan khawatir dengan masalah kinerja dengan buffer besar.
sumber