# HG changeset patch # User Richard M. Stallman # Date 1024653181 0 # Node ID 6ccb89338ab18c14ca16d60bcf271e3c4ca8752d # Parent 0616b57a6e43255ecd9159a8b23a9f99b822d4d4 (edmacro-fix-menu-commands): Discard `help-echo' events. Handle (menu-bar) events. Simplify by converting key sequence to a list and then back to vector. diff -r 0616b57a6e43 -r 6ccb89338ab1 lisp/edmacro.el --- a/lisp/edmacro.el Fri Jun 21 09:29:28 2002 +0000 +++ b/lisp/edmacro.el Fri Jun 21 09:53:01 2002 +0000 @@ -609,23 +609,30 @@ (setq i (1+ i) start (1+ start))) res)))))) -(defun edmacro-fix-menu-commands (macro) - (when (vectorp macro) - (let ((i 0) ev) - (while (< i (length macro)) - (when (consp (setq ev (aref macro i))) - (cond ((equal (cadadr ev) '(menu-bar)) - (setq macro (vconcat (edmacro-subseq macro 0 i) - (vector 'menu-bar (car ev)) - (edmacro-subseq macro (1+ i)))) - (incf i)) +(defun edmacro-fix-menu-commands (macro &optional noerror) + (if (vectorp macro) + (let (result) + ;; Make a list of the elements. + (setq macro (append macro nil)) + (dolist (ev macro) + (cond ((atom ev) + (push ev result)) + ((eq (car ev) 'help-echo)) + ((equal ev '(menu-bar)) + (push 'menu-bar result)) + ((equal (cadadr ev) '(menu-bar)) + (push (vector 'menu-bar (car ev)) result)) ;; It would be nice to do pop-up menus, too, but not enough ;; info is recorded in macros to make this possible. + (noerror + ;; Just ignore mouse events. + nil) (t (error "Macros with mouse clicks are not %s" "supported by this command")))) - (incf i)))) - macro) + ;; Reverse them again and make them back into a vector. + (vconcat (nreverse result))) + macro)) ;;; Parsing a human-readable keyboard macro.