]> git.eshelyaron.com Git - emacs.git/commitdiff
(insert-kbd-macro): Do something reasonable for vectors.
authorKarl Heuer <kwzh@gnu.org>
Fri, 31 Mar 1995 18:52:51 +0000 (18:52 +0000)
committerKarl Heuer <kwzh@gnu.org>
Fri, 31 Mar 1995 18:52:51 +0000 (18:52 +0000)
lisp/macros.el

index ca588fa995fc3e5c3678e4536fc8820df94bcf65..0fe325aadd3bf8ad1c48032da791fd7b4e028804 100644 (file)
@@ -70,11 +70,11 @@ use this command, and then save the file."
       (insert "(fset '"))
     (prin1 macroname (current-buffer))
     (insert "\n   ")
-    (let ((beg (point)) end)
-      (prin1 definition (current-buffer))
-      (setq end (point-marker))
-      (goto-char beg)
-      (if (stringp definition)
+    (if (stringp definition)
+       (let ((beg (point)) end)
+         (prin1 definition (current-buffer))
+         (setq end (point-marker))
+         (goto-char beg)
          (while (< (point) end)
            (let ((char (following-char)))
              (cond ((= char 0)
@@ -114,7 +114,43 @@ use this command, and then save the file."
                     (insert "\\M-" (- char 128)))
                    ((= char 255)
                     (delete-region (point) (1+ (point)))
-                    (insert "\\M-\\C-?")))))))
+                    (insert "\\M-\\C-?"))))))
+      (if (vectorp definition)
+         (let ((len (length definition)) (i 0) char)
+           (while (< i len)
+             (insert (if (zerop i) ?\[ ?\ ))
+             (setq char (aref definition i)
+                   i (1+ i))
+             (cond ((not (and (wholenump char) (< char 256)))
+                    (prin1 char (current-buffer)))
+                   ((= char 0)
+                    (insert "?\\C-@"))
+                   ((< char 27)
+                    (insert "?\\C-" (+ 96 char)))
+                   ((= char ?\C-\\)
+                    (insert "?\\C-\\\\"))
+                   ((< char 32)
+                    (insert "?\\C-" (+ 64 char)))
+                   ((< char 127)
+                    (insert ?? char))
+                   ((= char 127)
+                    (insert "?\\C-?"))
+                   ((= char 128)
+                    (insert "?\\M-\\C-@"))
+                   ((= char (aref "\M-\C-\\" 0))
+                    (insert "?\\M-\\C-\\\\"))
+                   ((< char 155)
+                    (insert "?\\M-\\C-" (- char 32)))
+                   ((< char 160)
+                    (insert "?\\M-\\C-" (- char 64)))
+                   ((= char (aref "\M-\\" 0))
+                    (insert "?\\M-\\\\"))
+                   ((< char 255)
+                    (insert "?\\M-" (- char 128)))
+                   ((= char 255)
+                    (insert "?\\M-\\C-?"))))
+           (insert ?\]))
+       (prin1 definition (current-buffer))))
     (insert ")\n")
     (if keys
        (let ((keys (where-is-internal macroname '(keymap))))