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?

Andriy Tykhonov
la source

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.

A dessiné
la source
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