Mercurial > emacs
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