anchor.diff:        *current-global-mode*))
   
   (defun change-global-mode-keymap (mode keymap)
  -  (setf (mode-keymap (get mode 'global-mode)) keymap))
  +  (set-mode-keymap keymap (get mode 'global-mode)))
   
   (defun change-global-mode (mode)
     (flet ((call (fun)
  
positive.code: 
  (macrolet ((def (name)
               `(progn
                  (defgeneric ,name (mode))
                  (defgeneric (setf ,name) (new-val mode))
                  (defmethod ,name (mode)
                    (get mode ',name))
                  (defmethod (setf ,name) (new-val mode)
                    (setf (get mode ',name) new-val)))))
    (def mode-name)
    (def mode-description)
  
negative.code:        (pushnew ',minor-mode *mode-list*)
         ,(when global
            `(setf (get ',minor-mode 'global-minor-mode-p) t))
         (set-mode-name ,name ',minor-mode)
         ,@(when description
             `((set-mode-description ,description ',minor-mode)))
         ,@(when keymapp
             `((defvar ,keymap (make-keymap :name ',keymap))
               (set-mode-keymap ,keymap ',minor-mode)))
         (set-mode-enable-hook ,enable-hook ',minor-mode)
         (set-mode-disable-hook ,disable-hook ',minor-mode)
         (define-command (,minor-mode (:class-name ,command-class-name)) (&optional (arg nil arg-p)) ("p")
           (cond ((not arg-p)
                  (toggle-minor-mode ',minor-mode))
  