# HG changeset patch # User Karl Heuer # Date 796675971 0 # Node ID 4d33c7615a5ca6174acfcd2803d6c6f09d456e2a # Parent d0550c056e5b9cb24ed9b2d71d62e93505a63758 (insert-kbd-macro): Do something reasonable for vectors. diff -r d0550c056e5b -r 4d33c7615a5c lisp/macros.el --- 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))))