anchor.diff:             :command
              :insert))
   (in-package :lem-vi-mode.core)
  +
  +(defvar *default-cursor-color* nil)
   
   (defvar *enable-hook* '())
   (defvar *disable-hook* '())
  
positive.code:                           :keymap ,keymap
                            :post-command-hook ,post-command-hook
                            :enable-hook ,(if enable-form `(lambda ,@enable-form))
                            :disable-hook ,(if disable-form `(lambda ,@disable-form))))))
  
  (defun current-state ()
    *current-state*)
  
negative.code:   keymap
    post-command-hook
    enable-hook
    disable-hook
    cursor-color)
  
  (defvar *current-state* nil)
  
  (defmacro define-vi-state (name (&key keymap post-command-hook cursor-color) &body spec)
    (let ((enable-form (rest (assoc :enable spec)))
          (disable-form (rest (assoc :disable spec))))
      `(setf (get ',name 'state)
  