diff options
author | Karl Heuer <kwzh@gnu.org> | 1995-03-31 18:52:51 +0000 |
---|---|---|
committer | Karl Heuer <kwzh@gnu.org> | 1995-03-31 18:52:51 +0000 |
commit | 157d78ece6255d89943e05f5c59cfb18cc4d11c6 (patch) | |
tree | ecf462d543f3bf5214669aa91bd7b3cb96169d0e /lisp/macros.el | |
parent | 5add3885ddaa0d67122703fde2644c3478259d5d (diff) | |
download | emacs-157d78ece6255d89943e05f5c59cfb18cc4d11c6.tar.gz |
(insert-kbd-macro): Do something reasonable for vectors.
Diffstat (limited to 'lisp/macros.el')
-rw-r--r-- | lisp/macros.el | 48 |
1 files changed, 42 insertions, 6 deletions
diff --git a/lisp/macros.el b/lisp/macros.el index ca588fa995f..0fe325aadd3 100644 --- a/lisp/macros.el +++ b/lisp/macros.el @@ -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)))) |