]> git.eshelyaron.com Git - emacs.git/commitdiff
Print macro modified macro keys as characters not integers
authorNoam Postavsky <npostavs@gmail.com>
Fri, 23 Aug 2019 11:55:09 +0000 (07:55 -0400)
committerNoam Postavsky <npostavs@gmail.com>
Fri, 23 Aug 2019 12:38:45 +0000 (08:38 -0400)
* 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).

lisp/macros.el

index 4b38506d8a5a05b5c1d7eba7b504db23a63e7335..3470359c0ca96cd79b9c4497055d4d9c28b9011d 100644 (file)
 
 (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)