Mercurial > emacs
comparison lisp/macros.el @ 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 | 2279074cd821 |
children | e6bdaaa6ce1b |
comparison
equal
deleted
inserted
replaced
11169:d0550c056e5b | 11170:4d33c7615a5c |
---|---|
68 (insert "(setq ")) | 68 (insert "(setq ")) |
69 (setq definition (symbol-function macroname)) | 69 (setq definition (symbol-function macroname)) |
70 (insert "(fset '")) | 70 (insert "(fset '")) |
71 (prin1 macroname (current-buffer)) | 71 (prin1 macroname (current-buffer)) |
72 (insert "\n ") | 72 (insert "\n ") |
73 (let ((beg (point)) end) | 73 (if (stringp definition) |
74 (prin1 definition (current-buffer)) | 74 (let ((beg (point)) end) |
75 (setq end (point-marker)) | 75 (prin1 definition (current-buffer)) |
76 (goto-char beg) | 76 (setq end (point-marker)) |
77 (if (stringp definition) | 77 (goto-char beg) |
78 (while (< (point) end) | 78 (while (< (point) end) |
79 (let ((char (following-char))) | 79 (let ((char (following-char))) |
80 (cond ((= char 0) | 80 (cond ((= char 0) |
81 (delete-region (point) (1+ (point))) | 81 (delete-region (point) (1+ (point))) |
82 (insert "\\C-@")) | 82 (insert "\\C-@")) |
112 ((< char 255) | 112 ((< char 255) |
113 (delete-region (point) (1+ (point))) | 113 (delete-region (point) (1+ (point))) |
114 (insert "\\M-" (- char 128))) | 114 (insert "\\M-" (- char 128))) |
115 ((= char 255) | 115 ((= char 255) |
116 (delete-region (point) (1+ (point))) | 116 (delete-region (point) (1+ (point))) |
117 (insert "\\M-\\C-?"))))))) | 117 (insert "\\M-\\C-?")))))) |
118 (if (vectorp definition) | |
119 (let ((len (length definition)) (i 0) char) | |
120 (while (< i len) | |
121 (insert (if (zerop i) ?\[ ?\ )) | |
122 (setq char (aref definition i) | |
123 i (1+ i)) | |
124 (cond ((not (and (wholenump char) (< char 256))) | |
125 (prin1 char (current-buffer))) | |
126 ((= char 0) | |
127 (insert "?\\C-@")) | |
128 ((< char 27) | |
129 (insert "?\\C-" (+ 96 char))) | |
130 ((= char ?\C-\\) | |
131 (insert "?\\C-\\\\")) | |
132 ((< char 32) | |
133 (insert "?\\C-" (+ 64 char))) | |
134 ((< char 127) | |
135 (insert ?? char)) | |
136 ((= char 127) | |
137 (insert "?\\C-?")) | |
138 ((= char 128) | |
139 (insert "?\\M-\\C-@")) | |
140 ((= char (aref "\M-\C-\\" 0)) | |
141 (insert "?\\M-\\C-\\\\")) | |
142 ((< char 155) | |
143 (insert "?\\M-\\C-" (- char 32))) | |
144 ((< char 160) | |
145 (insert "?\\M-\\C-" (- char 64))) | |
146 ((= char (aref "\M-\\" 0)) | |
147 (insert "?\\M-\\\\")) | |
148 ((< char 255) | |
149 (insert "?\\M-" (- char 128))) | |
150 ((= char 255) | |
151 (insert "?\\M-\\C-?")))) | |
152 (insert ?\])) | |
153 (prin1 definition (current-buffer)))) | |
118 (insert ")\n") | 154 (insert ")\n") |
119 (if keys | 155 (if keys |
120 (let ((keys (where-is-internal macroname '(keymap)))) | 156 (let ((keys (where-is-internal macroname '(keymap)))) |
121 (while keys | 157 (while keys |
122 (insert "(global-set-key ") | 158 (insert "(global-set-key ") |