changeset 11170:4d33c7615a5c

(insert-kbd-macro): Do something reasonable for vectors.
author Karl Heuer <kwzh@gnu.org>
date Fri, 31 Mar 1995 18:52:51 +0000
parents d0550c056e5b
children 89d742696b3d
files lisp/macros.el
diffstat 1 files changed, 42 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/macros.el	Fri Mar 31 17:47:32 1995 +0000
+++ b/lisp/macros.el	Fri Mar 31 18:52:51 1995 +0000
@@ -70,11 +70,11 @@
       (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 @@
 		     (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))))