Setiap kali saya menelepon fill-paragraph
, buffer selalu ditandai sebagai dimodifikasi, bahkan jika perintah tidak berpengaruh (yaitu jika paragraf sudah diisi). Ini juga menciptakan tindakan kosong yang tidak dapat dibatalkan (mudah dideteksi dengan undo-tree-mode
). Perintah lain yang berpotensi membuat perubahan, seperti perintah indentasi, jangan tandai buffer sebagai dimodifikasi atau buat tindakan yang tidak dapat diurungkan jika tidak ada yang berubah. Apakah ada cara untuk fill-paragraph
menandai buffer yang dimodifikasi dan membuat tindakan yang tidak dapat dihentikan hanya jika benar-benar mengubah sesuatu?
fill-paragraph
Lily Chung
sumber
sumber
M-q
benar - tidak menandai buffer diubah secara default, setidaknya dari pengujian saya. Mode apa yang Anda gunakan? Saya kira mode menimpafill-paragraph
dalam beberapa cara.Jawaban:
Perhatikan bahwa ini diperbaiki untuk Emacsen yang lebih baru (v.26 ke atas).
sumber
Masalahnya adalah
fill-paragraph
(atau lebih tepatnya,fill-region-as-paragraph
) akan menghapus dan memasukkan kembali baris baru saat paragraf Anda rusak. Itu tidak akan mengubah buffer jika hanya ada satu baris. No-op dalam daftar undo yang Anda saksikan hanyafill-paragraph
menghapus dan memasukkan kembali baris baru.Tidak sepele untuk menghindari ini. Berikut ini adalah peretasan yang sangat buruk, dan sangat tidak efisien untuk buffer besar, tetapi mungkin berhasil untuk Anda. Perintah meniru
fill-paragraph
(M-q
) dengan perilaku yang identik, kecuali ia menyimpan isi buffer sebelum memanggilnya, dan setelah itu, jika konten tetap sama, itu akan mengembalikan keadaan modifikasi dan membatalkan daftar dari sebelum perubahan. Untuk melakukan ini, diperlukan salinan (dua, sebenarnya) dari konten buffer, jadi sungguh, ini sangat tidak efisien. :-)Anda dapat mengikat itu
M-q
.sumber
fill-paragraph
apakah ada perbedaan antara berbagai kasus, yaitu berperilaku berbeda tergantung pada wilayah aktif, fungsi paragraf isi yang ada, dll. Anda harus meniru perilaku itu untuk mengetahui bagian buffer yang mana yang akan diubah. Mungkin, tapi rumit. :-)Jawaban telat, tapi ini versi sederhana yang tidak mengubah buffer jika teksnya tidak berubah.
Ini mengadaptasi beberapa ide dalam jawaban @ JorgenSchäfer, tetapi hanya bekerja dengan paragraf saat ini, dan hanya dengan cara sederhana, dipisahkan dengan spasi putih (lihat komentar pada jawaban @ JorgenSchäfer tentang komplikasi di bawah tenda).
Ini adalah satu-satunya kasus penggunaan yang relevan untuk keperluan saya sendiri (yaitu, penggunaan interaktif dengan prosa "normal", tidak ada wilayah aktif), jadi saya mempostingnya jika ada yang ingin menggunakannya atau memperbaikinya untuk kasus penggunaan yang lebih rumit .
sumber