Impedisci l'inserimento di testo all'inizio di un buffer che inizia con il testo di sola lettura


8

Sto estendendo un pacchetto Emacs esistente e voglio rendere una parte del buffer non modificabile (sola lettura). In effetti, voglio rendere modificabile solo una riga nel mezzo del buffer e per ottenere ciò utilizzo il seguente frammento:

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

Tuttavia, posso ancora posizionare il cursore all'inizio del buffer e inserire del testo che non è il comportamento desiderato.

Come posso evitare inserimenti all'inizio del buffer?

Risposte:


9

È necessario (prima di aggiungere la proprietà read-only), fare in modo che il primo carattere abbia un valore che include read-onlyper la proprietà front-sticky:

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

Vedere il manuale Elisp, nodo Sticky Properties. Il problema era che sebbene il primo carattere avesse una non nilproprietà read-only, l'inserzione prima non ereditava quella proprietà, perché read-onlynon era un front-stickyvalore di proprietà per il primo carattere.


Ho aggiornato il link Proprietà adesive poiché la versione precedente con tag # non funzionava sul telefono.
Kaushal Modi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.