Mercurial > emacs
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))))