anchor.diff:  
   (defun buffer-insert-newline (buffer linum pos)
     (with-buffer-modify buffer
  +    (let ((line (buffer-get-line buffer linum)))
  +      (when (line-search-property line 'read-only pos)
  +        (error 'readonly)))
       (with-push-undo (buffer)
         (buffer-delete-char buffer linum pos 1)
         (make-point linum pos))
  
positive.code:          (buffer-insert-newline buffer linum pos))
          (t
           (with-buffer-modify buffer
             (with-push-undo (buffer)
               (buffer-delete-char buffer linum pos 1)
               (make-point linum pos))
             (let ((line (buffer-get-line buffer linum)))
               (setf (line-%scan-cached-p line) nil)
               (line-property-insert-pos line pos 1)
               (dolist (marker (buffer-markers buffer))
  
negative.code:                  (concatenate 'string
                                (subseq (line-str line) 0 pos)
                                (line-str (line-next line))))
             (setf (line-plist line)
                   (merge-plist
                    (line-plist line)
                    (loop :for (key elements) :on (line-plist (line-next line)) :by #'cddr
                          :append (let ((new-elements
                                         (loop :for (start end value) :in elements
                                               :collect (list (+ start pos)
                                                              (+ end pos)
                                                              value))))
                                    (when new-elements
                                      (list key new-elements))))))
             (when (eq (line-next line)
                       (buffer-tail-line buffer))
               (setf (buffer-tail-line buffer) line))
  