Commit 157d78ec authored by Karl Heuer's avatar Karl Heuer

(insert-kbd-macro): Do something reasonable for vectors.

parent 5add3885
......@@ -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))))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment