diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/keymap.c | 11 |
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 |