Cegah memasukkan teks di awal buffer yang dimulai dengan teks hanya-baca


8

Saya memperpanjang paket Emacs yang ada dan saya ingin membuat bagian dari buffer tidak dapat diedit (hanya baca). Bahkan, saya ingin membuat hanya satu baris di tengah buffer yang dapat diedit dan saya menggunakan cuplikan berikut untuk mencapai itu:

(put-text-property (point-min) point-before-editable-text 'read-only t)
;; (put-text-property point-after-editable-text (point-max) 'read-only t)

Namun, saya masih bisa meletakkan kursor di awal buffer dan menyisipkan beberapa teks yang bukan perilaku yang diinginkan.

Bagaimana saya bisa mencegah penyisipan di awal buffer?

Jawaban:


9

Anda perlu (sebelum menambahkan properti read-only), membuat karakter pertama memiliki nilai yang termasuk read-onlyuntuk properti front-sticky:

(put-text-property 1 2 'front-sticky '(read-only)) ; Do this one first.
(put-text-property (point-min) 50 'read-only t)

Lihat manual Elisp, simpul Sticky Properties. Masalahnya adalah bahwa meskipun char pertama memiliki non- nilproperti read-only, penyisipan sebelum itu tidak mewarisi properti itu, karena read-onlyitu bukan front-stickynilai properti untuk karakter pertama.


Saya memperbarui tautan Sticky Properties karena versi sebelumnya dengan tag # tidak berfungsi di ponsel.
Kaushal Modi
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.