anchor.diff:    (and (eql (mark-line a) (mark-line b))
          (eql (mark-charpos a) (mark-charpos b))))
   
  -(defun make-mark-at-point (buffer &optional kind)
  -  (copy-mark (buffer-point buffer) kind))
  -
   (defun point-to-mark (buffer mark)
     (move-mark-to-mark (buffer-point buffer) mark))
   
  
positive.code:              (#\Backspace (delete-backward-char buffer))
               (#\C-D (delete-forward-char buffer))
               (#\Delete (delete-forward-char buffer))
               (#\C-V (vomit-buffer buffer))
               (#\C-T (test-fill buffer))
               (t (cond ((find ch "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789!\"£$%^&*()_+-=[]{};'#:@~,./<>?`~|\\"
                               :test #'char=)
                         (insert-char buffer ch)))))
             (format t "Point at ~S  mark at ~S  active:~S~%"
                     (buffer-point buffer) (buffer-mark buffer)
                     (buffer-mark-active buffer))
             (setf (pending-redisplay *editor*) (not (redisplay))))
         (error (c)
           (ignore-errors
  
negative.code: (defun delete-mark (mark)
    (setf (line-mark-list (mark-line mark)) (remove mark (line-mark-list (mark-line mark)))))
  
  (defmacro with-mark ((name where &optional kind) &body body)
    `(let ((,name nil))
       (unwind-protect
            (progn
              (setf ,name (copy-mark ,where ,kind))
              ,@body)
         (when ,name
           (delete-mark ,name)))))
  