anchor.diff:  (define-memoized-ps-handler (client/main :uri "/client/main.js") ()
     (require (list "ace/ace-uncompressed" "parenscript" "socket.io/socket.io")
              (lambda ()
  -             (require (list "engine/commands/default_commands" "ace/theme-twilight")
  -                      (lambda ()
  +             (require (list "engine/keyboard" "engine/commands/default_commands" "ace/theme-twilight")
  +                      (lambda (keyboard)
                           (let ((editor (chain ace (edit "editor"))))
  +                          (setf (@ editor io) (chain io (connect)))
                             (chain editor (set-theme "ace/theme/twilight"))
  +                          (chain editor (set-keyboard-handler (keyboard editor)))
                             (chain editor renderer (set-show-gutter false))
                             (chain editor renderer (set-show-print-margin false))))))))
   
   (define-memoized-ps-handler (client/engine/commands/default_commands :uri "/client/engine/commands/default_commands.js") ()
  -  (define (list "pilot/canon" "parenscript")
  -      (lambda (canon ps)
  +  (define (list "pilot/canon" "pilot/lang" "parenscript")
  +      (lambda (canon lang ps)
           (flet ((bind-key (key)
                    (create win key mac key sender "editor")))
             (macrolet ((add-command-args (name key &body body)
  
positive.code:                                             (list item item))
                                          (mapcar #'cadr (cdr *ps-lisp-library*))))))))
  
  (define-socket.io-handler #'(lambda (message)
                                (declare (ignore message))))
  
  (socket.io-on "test" (arg1 &optional arg2)
    (prog1 "foo" (log-message :debug "got event test, args ~a and ~a" arg1 arg2)))
  
  (let ((swank:*use-dedicated-output-stream* nil)
        (swank:*communication-style*
  
negative.code:                                 exec (lambda (env args request)
                                         ,@body))))
              (chain ps (map (chain canon add-command)
                             (list (add-command-args "self-insert-command" nil
                                                     (chain env editor (insert (@ args text))))
                                   (add-command-args "move-to-position" nil
                                                     (chain env editor (move-cursor-to (@ args row) (@ args column))))
                                   (add-command-args "backward-delete" nil
                                                     (chain env editor (remove-left)))))))))))
  
  (define-memoized-ps-handler (client/parenscript :uri "/client/parenscript.js") ()
    (define (lambda ()
  