anchor.diff:      new-plist))
   
   (defun shift-sticky-objects-subtract-line (marker nextp)
  -  (let ((line (marker-line marker))
  +  (let ((line (get-line/marker marker))
           (linum (marker-linum marker))
           (charpos (marker-charpos marker))
           (buffer (marker-buffer marker)))
  
positive.code:       (setf (line-str line)
              (subseq (line-str line) 0 charpos)))))
  
  (defmethod insert-char/marker (marker char)
    (with-modify-buffer (marker-buffer marker)
      (check-read-only-at-point marker 0)
      (cond
        ((char= char #\newline)
         (%insert-newline/marker marker
                                 (marker-linum marker)
                                 (marker-charpos marker)))
        (t
         (let ((line (marker-line marker))
               (charpos (marker-charpos marker)))
           (shift-sticky-objects marker 1)
           (setf (line-str line)
                 (concatenate 'string
                              (subseq (line-str line) 0 charpos)
                              (string char)
                              (subseq (line-str line) charpos))))))
      char))
  
  (defun %insert-line-string/marker (marker linum charpos string)
    (check-read-only-at-point marker 0)
  
negative.code:              (incf (marker-linum m)))))))
  
  (defun shift-sticky-objects-subtract (marker n)
    (let ((line (get-line/marker marker))
          (linum (marker-linum marker))
          (charpos (marker-charpos marker))
          (buffer (marker-buffer marker)))
  