anchor.diff:    (declare (ignore event))
     (throw 'event-loop (values t (name object))))
   
  -(defun reset-form (object event)
  +(defun accept-field (field event &rest args)
  +  "When the field is used without a parent form, accepting the field edit returns the field value."
  +  (with-accessors ((inbuf buffer) (inptr input-pointer) (dptr display-pointer) (win window)) field
  +    ;; TODO: we have to be able to exit an empty field, return nil.
  +    (when (> (length inbuf) 0)
  +      (let ((val (value field)))
  +        (clear win)
  +        (setf inbuf nil inptr 0 dptr 0)
  +        (throw 'event-loop val)))))
  +
  +(defun reset-form (object event &rest args)
     (declare (ignore event))
     (let ((form (typecase object
                   (form object)
  
positive.code:    #\space     'toggle-checkbox
     #\x         'toggle-checkbox))
  
  ;; TODO: we want edit to return the edited form.
  ;; exit-event-loop just returns the keyword :exit-event-loop
  (defun edit (object)
    (draw object)
    ;; since we have no further args passed to run-event-loop, all handler functions have to accept
    ;; at most two arguments, object and event.
    (run-event-loop object))
  
negative.code:       (incf dptr))
      (draw field)))
  
  (defun delete-previous-char (field event &rest args)
    "Delete the previous char in the field, moving the cursor to the left."
    (with-accessors ((inbuf buffer) (inptr input-pointer) (dptr display-pointer) (win window)) field
      (when (> inptr 0)
  