aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/keymap.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/keymap.c b/src/keymap.c
index 2cecfcd3762..536b27dae7e 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -1327,6 +1327,8 @@ then the value includes only maps for prefixes that start with PREFIX.")
1327 thismap = Fcdr (Fcar (tail)); 1327 thismap = Fcdr (Fcar (tail));
1328 last = make_number (XINT (Flength (thisseq)) - 1); 1328 last = make_number (XINT (Flength (thisseq)) - 1);
1329 is_metized = (XINT (last) >= 0 1329 is_metized = (XINT (last) >= 0
1330 /* Don't metize the last char of PREFIX. */
1331 && XINT (last) >= prefixlen
1330 && EQ (Faref (thisseq, last), meta_prefix_char)); 1332 && EQ (Faref (thisseq, last), meta_prefix_char));
1331 1333
1332 for (; CONSP (thismap); thismap = XCONS (thismap)->cdr) 1334 for (; CONSP (thismap); thismap = XCONS (thismap)->cdr)
@@ -1406,9 +1408,12 @@ then the value includes only maps for prefixes that start with PREFIX.")
1406 turn it into a meta-ized keystroke. */ 1408 turn it into a meta-ized keystroke. */
1407 if (is_metized && INTEGERP (elt)) 1409 if (is_metized && INTEGERP (elt))
1408 { 1410 {
1409 tem = Fcopy_sequence (thisseq); 1411 Lisp_Object element;
1410 Faset (tem, last, 1412
1411 make_number (XINT (elt) | meta_modifier)); 1413 element = thisseq;
1414 tem = Fvconcat (1, &element);
1415 XVECTOR (tem)->contents[XINT (last)]
1416 = XINT (elt) | meta_modifier;
1412 1417
1413 /* This new sequence is the same length as 1418 /* This new sequence is the same length as
1414 thisseq, so stick it in the list right 1419 thisseq, so stick it in the list right