Emacs: haga que la porción del búfer sea de solo lectura

9

A veces edito archivos en los emacsque partes del archivo son documentación u otra cosa que no debería editarse, y otras partes son "áreas de juego" donde puedo editar y crear texto nuevo.

Pregunta: ¿puedo hacer que una parte de un búfer de emacs sea de solo lectura?

El ejemplo más simple sería hacer que las líneas 1-100 sean de solo lectura (por ejemplo). Un ejemplo más complejo (similar a emacs marcadores) sería hacer todo el texto entre [readonly]y [/readonly]no editable.

Busqué en Google esto, pero no pude encontrar nada útil.

barrycarter
fuente

Respuestas:

8

Sí, puede hacer que una parte de un búfer sea de solo lectura utilizando propiedades de texto. El siguiente código define dos nuevos comandos make-region-read-onlyy make-region-read-writeque afectan la región entre el punto y la marca. Ponga el código en su archivo .emacs para que los comandos estén disponibles a través de Meta-x.

(defun make-region-read-only (start end)
  (interactive "*r")
  (let ((inhibit-read-only t))
    (put-text-property start end 'read-only t)))

(defun make-region-read-write (start end)
  (interactive "*r")
  (let ((inhibit-read-only t))
    (put-text-property start end 'read-only nil)))
Kyle Jones
fuente