anchor.diff:         "l" 'forward-char
          "w" 'forward-word
          "$" 'end-line
  -       "<end>" 'end-line
  -       "<space>" 'forward-char
  -       "<backspace>" 'backward-char
  +       "keypadend" 'end-line
  +       "space" 'forward-char
  +       "backspace" 'backward-char
          "0" 'beginning-line
  -       "<home>" 'beginning-line
  +       "keypadhome" 'beginning-line
          "v" 'visual-mode
  -       "<escape>" 'visual-mode
          "C-c" 'visual-mode)))
      (destructor
       (lambda (mode)
         (make-page-uneditable)
         (unlock-page-keypresses)
  -      (setf *mark-set* nil)))
  +      (defparameter *mark-set* nil)))
      (constructor
       (lambda (mode)
         (make-page-editable)
  
positive.code:        "C-e" 'end-line
         "M-a" 'backward-sentence
         "M-e" 'forward-sentence)
        ;; vi keybindings only enable use of plain "visual" mode for now
        scheme:vi-normal
        (list
         "h" 'backward-char
  
negative.code:   (setf (ps:@ document body content-editable) "false"))
  
  (define-command select-paragraph ()
    "Add hints to text elements on the page and open a minibuffer for selecting them."
    (query-paragraph-hints "Set caret on element" #'%follow-hint :annotate-visible-only-p t))
  
  (defvar *mark-set* nil)
  
  (define-parenscript is-collapsed ()
    ;; returns "true" if mark's start and end are the same value
  