diff options
author | Richard M. Stallman <rms@gnu.org> | 2003-08-06 01:04:34 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 2003-08-06 01:04:34 +0000 |
commit | 7725f0fb6c13c948250e03b8e4fc13b966fc3ae8 (patch) | |
tree | 6204595918c6097219edf9b62ec99e8eb1563147 /lisp/edmacro.el | |
parent | 7cd8a5076e292b76298ff447d327bf7de9cfa432 (diff) | |
download | emacs-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.el | 17 |
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) |