summaryrefslogtreecommitdiff
path: root/lisp/edmacro.el
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>2003-08-06 01:04:34 +0000
committerRichard M. Stallman <rms@gnu.org>2003-08-06 01:04:34 +0000
commit7725f0fb6c13c948250e03b8e4fc13b966fc3ae8 (patch)
tree6204595918c6097219edf9b62ec99e8eb1563147 /lisp/edmacro.el
parent7cd8a5076e292b76298ff447d327bf7de9cfa432 (diff)
downloademacs-7725f0fb6c13c948250e03b8e4fc13b966fc3ae8.tar.gz
(edmacro-format-keys): Use edmacro-sanitize-for-string.
Use vconcat instead of concat. (edmacro-sanitize-for-string): New function.
Diffstat (limited to 'lisp/edmacro.el')
-rw-r--r--lisp/edmacro.el17
1 files changed, 14 insertions, 3 deletions
diff --git a/lisp/edmacro.el b/lisp/edmacro.el
index 4ec62152db5..91618b578b6 100644
--- a/lisp/edmacro.el
+++ b/lisp/edmacro.el
@@ -418,7 +418,7 @@ doubt, use whitespace."
(while (memq (aref rest-mac i) (cdr mdigs))
(incf i))
(and (not (memq (aref rest-mac i) pkeys))
- (prog1 (concat "M-" (edmacro-subseq rest-mac 0 i) " ")
+ (prog1 (vconcat "M-" (edmacro-subseq rest-mac 0 i) " ")
(callf edmacro-subseq rest-mac i)))))
(and (eq (aref rest-mac 0) ?\C-u)
(eq (key-binding [?\C-u]) 'universal-argument)
@@ -437,7 +437,7 @@ doubt, use whitespace."
'(?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9))
(incf i))
(and (not (memq (aref rest-mac i) pkeys))
- (prog1 (concat "C-u " (edmacro-subseq rest-mac 1 i) " ")
+ (prog1 (vconcat "C-u " (edmacro-subseq rest-mac 1 i) " ")
(callf edmacro-subseq rest-mac i)))))))
(bind-len (apply 'max 1
(loop for map in maps
@@ -525,7 +525,8 @@ doubt, use whitespace."
(t
(error "Unrecognized item in macro: %s" ch)))))
(or fkey key) " "))))
- (if prefix (setq desc (concat prefix desc)))
+ (if prefix
+ (setq desc (concat (edmacro-sanitize-for-string prefix) desc)))
(unless (string-match " " desc)
(let ((times 1) (pos bind-len))
(while (not (edmacro-mismatch rest-mac rest-mac
@@ -608,6 +609,16 @@ If START or END is negative, it counts from the end."
(setq i (1+ i) start (1+ start)))
res))))))
+(defun edmacro-sanitize-for-string (seq)
+ "Convert a key sequence vector into a string.
+The string represents the same events; Meta is indicated by bit 7.
+This function assumes that the events can be stored in a string."
+ (setq seq (copy-sequence seq))
+ (loop for i below (length seq) do
+ (when (< (aref seq i) 0)
+ (setf (aref seq i) (logand (aref seq i) 127))))
+ seq)
+
(defun edmacro-fix-menu-commands (macro &optional noerror)
(if (vectorp macro)
(let (result)