comparison src/keymap.c @ 17510:2da99276d613

(Faccessible_keymaps): Convert PREFIX to a vector at the beginning, if it has any definition.
author Richard M. Stallman <rms@gnu.org>
date Sat, 19 Apr 1997 22:52:28 +0000
parents 0cb065f8702e
children 10ead0052174
comparison
equal deleted inserted replaced
17509:0c38918fbf13 17510:2da99276d613
1298 /* Flookup_key may give us nil, or a number, 1298 /* Flookup_key may give us nil, or a number,
1299 if the prefix is not defined in this particular map. 1299 if the prefix is not defined in this particular map.
1300 It might even give us a list that isn't a keymap. */ 1300 It might even give us a list that isn't a keymap. */
1301 tem = get_keymap_1 (tem, 0, 0); 1301 tem = get_keymap_1 (tem, 0, 0);
1302 if (!NILP (tem)) 1302 if (!NILP (tem))
1303 maps = Fcons (Fcons (prefix, tem), Qnil); 1303 {
1304 /* Convert PREFIX to a vector now, so that later on
1305 we don't have to deal with the possibility of a string. */
1306 if (STRINGP (prefix))
1307 {
1308 int i;
1309 Lisp_Object copy;
1310
1311 copy = Fmake_vector (make_number (XSTRING (prefix)->size), Qnil);
1312 for (i = 0; i < XSTRING (prefix)->size; i++)
1313 {
1314 int c = XSTRING (prefix)->data[i];
1315 if (c & 0200)
1316 c ^= 0200 | meta_modifier;
1317 XVECTOR (copy)->contents[i] = make_number (c);
1318 }
1319 prefix = copy;
1320 }
1321 maps = Fcons (Fcons (prefix, tem), Qnil);
1322 }
1304 else 1323 else
1305 return Qnil; 1324 return Qnil;
1306 } 1325 }
1307 else 1326 else
1308 maps = Fcons (Fcons (Fmake_vector (make_number (0), Qnil), 1327 maps = Fcons (Fcons (Fmake_vector (make_number (0), Qnil),