* lisp/macros.el (macros--insert-vector-macro): Pass all elements to
'prin1-char', not just those that satisfy characterp (because characters
which have modifier bits set wouldn't qualify otherwise).
'prin1-char' will return nil if it can't handle the argument (e.g.,
for symbols representing function keys).
(defun macros--insert-vector-macro (definition)
"Print DEFINITION, a vector, into the current buffer."
- (dotimes (i (length definition))
- (let ((char (aref definition i)))
- (insert (if (zerop i) ?\[ ?\s))
- (if (characterp char)
- (princ (prin1-char char) (current-buffer))
- (prin1 char (current-buffer)))))
- (insert ?\]))
+ (insert ?\[
+ (mapconcat (lambda (event)
+ (or (prin1-char event)
+ (prin1-to-string event)))
+ definition
+ " ")
+ ?\]))
;;;###autoload
(defun insert-kbd-macro (macroname &optional keys)