anchor.diff:           (message "Macro not active"))
           (t
            (setq *macro-recording-p* nil)
  +         (setq *last-macro-chars* (nreverse *temp-macro-chars*))
            (message "End macro")
            t)))
  +
  +(defun execute-key-sequence (key-sequence)
  +  (let ((prev-unread-keys-length (length *unread-keys*)))
  +    (unread-key-sequence key-sequence)
  +    (do ()
  +        ((>= prev-unread-keys-length
  +             (length *unread-keys*))
  +         t)
  +      (handler-case (funcall (find-keybind (read-key-sequence)) nil)
  +        (editor-condition ()
  +          (setf *unread-keys* prev-unread-keys-length)
  +          (return nil))))))
   
   (define-key *global-keymap* (kbd "C-x e") 'execute-macro)
   (define-command execute-macro (n) ("p")
  
positive.code: (defvar *last-read-key-sequence*)
  
  (defvar *macro-recording-p* nil)
  (defvar *macro-chars* nil)
  (defvar *macro-running-p* nil)
  
  (defun macro-running-p () *macro-running-p*)
  
negative.code:                (list c))))
  
  (defun unread-key-sequence (key)
    (mapc 'input-enqueue
          (if (listp key) key (kbd-list key)))) ;!!!
  
  (defun read-key-sequence ()
    (let ((key
  