Empêcher l'insertion de texte au début d'un tampon qui commence par du texte en lecture seule


8

J'étends un paquet Emacs existant et je veux rendre une partie du tampon non modifiable (lecture seule). En fait, je veux rendre une seule ligne au milieu du tampon modifiable et j'utilise l'extrait de code suivant pour y parvenir:

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

Cependant, je peux toujours placer le curseur au début du tampon et insérer du texte qui n'est pas le comportement souhaité.

Comment puis-je empêcher les insertions au début du tampon?

Réponses:


9

Vous devez (avant d'ajouter une propriété read-only), faire en sorte que le premier caractère ait une valeur qui inclut read-onlypour la propriété front-sticky:

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

Voir le manuel Elisp, node Sticky Properties. Le problème était que bien que le premier caractère ait une non- nilpropriété read-only, l'insertion avant qu'il n'hérite pas de cette propriété, car read-onlyn'était pas une front-stickyvaleur de propriété pour le premier caractère.


J'ai mis à jour le lien Propriétés collantes car la version précédente avec la balise # ne fonctionnait pas sur le téléphone.
Kaushal Modi
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.