anchor.diff:                                (subseq (line-str line) charpos))))))
         char)))
   
  -(defun %insert-line-string/point (buffer linum line charpos string)
  +(defun %insert-line-string/point (line charpos string)
     (check-read-only-at-point line charpos 0)
  -  (shift-sticky-objects buffer linum line charpos (length string))
  +  (shift-sticky-objects line charpos (length string))
     (setf (line-str line)
           (concatenate 'string
                        (subseq (line-str line) 0 charpos)
  
positive.code:        (prog1 (progn ,@body)
           (buffer-modify ,buffer)))))
  
  (defun shift-sticky-objects (buffer linum line charpos n)
    (line-property-insert-pos line charpos n)
    (dolist (m (buffer-points buffer))
      (when (and (= linum (point-linum m))
                 (etypecase (point-kind m)
                   ((eql :left-inserting)
                    (<= charpos (point-charpos m)))
                   ((eql :right-inserting)
                    (< charpos (point-charpos m)))
                   ((eql :temporary)
                    nil)))
        (incf (point-charpos m) n))))
  
  (defun shift-sticky-objects-newline (buffer linum line charpos)
    (line-property-insert-newline line (line-next line) charpos)
    (dolist (m (buffer-points buffer))
      (cond ((and (= (point-linum m) linum)
                  (etypecase (point-kind m)
                    ((eql :left-inserting)
                     (<= charpos (point-charpos m)))
                    ((eql :right-inserting)
                     (< charpos (point-charpos m)))
                    ((eql :temporary)
                     nil)))
             (setf (point-line m) (line-next (point-line m)))
             (incf (point-linum m))
             (decf (point-charpos m) charpos))
            ((< linum (point-linum m))
             (incf (point-linum m))))))
  
  (defun shift-sticky-objects-subtract (point n)
    (let ((line (point-line point))
          (linum (point-linum point))
          (charpos (point-charpos point))
          (buffer (point-buffer point)))
      (line-property-delete-pos line charpos n)
      (dolist (m (buffer-points buffer))
        (when (and (= linum (point-linum m))
                   (< charpos (point-charpos m)))
          (setf (point-charpos m)
                (if (> charpos (- (point-charpos m) n))
                    charpos
                    (- (point-charpos m) n)))))))
  
  (defun shift-sticky-objects-subtract-line (point nextp)
    (let* ((line (point-line point))
           (linum (point-linum point))
           (charpos (point-charpos point))
           (buffer (point-buffer point)))
      (line-property-delete-line line charpos)
      (dolist (m (buffer-points buffer))
        (cond ((and (= linum (point-linum m))
                    (< charpos (point-charpos m)))
               (setf (point-charpos m) charpos))
              ((< linum (point-linum m))
               (when (eq (line-next line) (point-line m))
                 (setf (point-line m) line)
                 (incf (point-charpos m) (point-charpos point)))
               (decf (point-linum m)))))
      (when nextp
        (line-merge line (line-next line) charpos))))
  
  (defun %insert-newline/point (buffer linum line charpos)
    (make-line buffer
               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)))
  
negative.code: 
  (defun %delete-line-eol/point (point start)
    (declare (special killring-stream line))
    (shift-sticky-objects-subtract-line point)
    (write-string (line-str line) killring-stream :start start)
    (setf (line-str line)
          (subseq (line-str line) 0 start)))
  
  (defun %delete-line/point (point start)
    (declare (special killring-stream line buffer n))
    (shift-sticky-objects-subtract-line point)
    (write-string (line-str line) killring-stream :start start)
    (write-char #\newline killring-stream)
    (unless (eq n 'T)
  