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