changeset 17264:fad065a280dc

(Faccessible_keymaps): When metizing, convert a string to a vector. But don't metize a character that is part of PREFIX.
author Richard M. Stallman <rms@gnu.org>
date Sun, 30 Mar 1997 19:58:28 +0000
parents b712c50d2c84
children ddbe17ae5280
files src/keymap.c
diffstat 1 files changed, 8 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/keymap.c	Sun Mar 30 19:06:27 1997 +0000
+++ b/src/keymap.c	Sun Mar 30 19:58:28 1997 +0000
@@ -1327,6 +1327,8 @@
       thismap = Fcdr (Fcar (tail));
       last = make_number (XINT (Flength (thisseq)) - 1);
       is_metized = (XINT (last) >= 0
+		    /* Don't metize the last char of PREFIX.  */
+		    && XINT (last) >= prefixlen
 		    && EQ (Faref (thisseq, last), meta_prefix_char));
 
       for (; CONSP (thismap); thismap = XCONS (thismap)->cdr)
@@ -1406,9 +1408,12 @@
 			 turn it into a meta-ized keystroke.  */
 		      if (is_metized && INTEGERP (elt))
 			{
-			  tem = Fcopy_sequence (thisseq);
-			  Faset (tem, last,
-				 make_number (XINT (elt) | meta_modifier));
+			  Lisp_Object element;
+
+			  element = thisseq;
+			  tem = Fvconcat (1, &element);
+			  XVECTOR (tem)->contents[XINT (last)]
+			    = XINT (elt) | meta_modifier;
 
 			  /* This new sequence is the same length as
 			     thisseq, so stick it in the list right