anchor.diff:                           (create :type :edit
                                    :data (create :excerpt excerpt
                                                  'excerpt-offset offset))))))
  -          (say ev))
  -        component-did-mount
  -        (lambda ()
  -          (chain this (set-selection-from-prop)))
  -        component-did-update
  -        (lambda ()
  -          (chain this (set-selection-from-prop)))
  -        set-selection-from-prop
  -        (lambda ()
  -          (say "in set-sel...")
  -          (say component-this-ref)
  -          (chain window (get-selection) (remove-all-ranges))
  -          (when (not-empty (prop excerpt))
  -            (say "hear")
  -            (let ((elem (@ component-this-ref sample-element))
  -                  (bounds
  -                     (find-excerpt-start/end
  -                      (prop textdata) (prop excerpt)
  -                      (or (prop excerpt-offset) 0)))
  -                  (range (new -range)))
  -                (if bounds
  -                    (progn
  -                      (chain range (set-start elem (elt bounds 0)))
  -                      (chain range (set-end elem (elt bounds 1)))
  -                      (chain window (get-selection) (add-range range)))
  -                    (say "Excerpt not found"))))))
  +          (say ev)))
   
         ;;FIXME: Find a way to make this not pound the server per keystroke.
         (def-component text-sample
  
positive.code: 
  (define-parts opinion-components
    (add-part :@javascript #'webhax-widgets:ps-widgets)
    (add-part
     :@javascript
     (lambda ()
  
negative.code: 
        (def-component text-sample-core
            (psx
             (:pre :id "textsample"
              :style (create :overflow "auto" :background "lightgrey"
                             'white-space "pre-wrap":border "1px"
                             :height "15em" :width "40em" :cursor "text")
              :on-mouse-up (@ this selection-change)
              :on-key-press (@ this selection-change)
              (hilite-excerpt (prop textdata) (prop excerpt) (prop offset))))
          selection-change
          (lambda (ev)
            (let ((targ (@ ev target))
  