anchor.diff:            (loop :while (or (eq n 'T) (plusp n))
   	     :for eolp := (or (eq n 'T)
   			      (> n (- (line-length line) charpos)))
  -	     :do (check-read-only-at-point point (if (eq n 'T) nil (if eolp n nil)))
  +	     :do (check-read-only-at-point (point-line point)
  +                                           (point-charpos point)
  +                                           (if (eq n 'T) nil (if eolp n nil)))
   	     :do (cond
   		   ((not eolp)
   		    (%delete-line-between/point point charpos (+ charpos n))
  
positive.code:                               (subseq (line-str line) charpos))))))
        char)))
  
  (defun %insert-line-string/point (point linum charpos string)
    (check-read-only-at-point point 0)
    (shift-sticky-objects point (length string))
    (let ((line
           (buffer-get-line (point-buffer point)
                            linum)))
      (setf (line-str line)
            (concatenate 'string
                         (subseq (line-str line) 0 charpos)
                         string
                         (subseq (line-str line) charpos)))))
  
  (defgeneric insert-string/point (point string)
    (:method (point string)
      (with-modify-buffer (point-buffer point)
        (loop :with start := 0
  	 :for pos := (position #\newline string :start start)
  	 :for linum :from (point-linum point) :by 1
  	 :for charpos := (point-charpos point) :then 0
  	 :do (if (null pos)
  		 (progn
  		   (%insert-line-string/point point linum charpos (subseq string start))
  		   (return))
  		 (let ((substr (subseq string start pos)))
  		   (%insert-line-string/point point linum charpos substr)
  		   (%insert-newline/point point linum (+ charpos (length substr)))
  		   (setf start (1+ pos))))))
      string))
  
  (defun %delete-line-between/point (point start end)
  
negative.code:     (when nextp
        (line-merge line (line-next line) charpos))))
  
  (defun %insert-newline/point (buffer linum line charpos)
    (make-line line
               (line-next line)
               (subseq (line-str line) charpos))
    (shift-sticky-objects-newline buffer linum line charpos)
    (incf (buffer-nlines buffer))
    (setf (line-str line)
          (subseq (line-str line) 0 charpos)))
  
  (defgeneric insert-char/point (point char)
    (:method (point char)
      (with-modify-buffer (point-buffer point)
        (check-read-only-at-point (point-line point) (point-charpos point) 0)
        (cond
          ((char= char #\newline)
           (%insert-newline/point (point-buffer point)
  				(point-linum point)
                                  (point-line point)
  				(point-charpos point)))
          (t
           (let ((line (point-line point))
                 (charpos (point-charpos point)))
             (shift-sticky-objects (point-buffer point) (point-linum point) line charpos 1)
             (setf (line-str line)
                   (concatenate 'string
                                (subseq (line-str line) 0 charpos)
  