Mercurial > hg > xemacs-beta
comparison src/keymap.c @ 4990:8f0cf4fd3d2c
Automatic merge
| author | Ben Wing <ben@xemacs.org> |
|---|---|
| date | Sat, 06 Feb 2010 04:01:46 -0600 |
| parents | 16112448d484 |
| children | ae48681c47fa |
comparison
equal
deleted
inserted
replaced
| 4989:d2ec55325515 | 4990:8f0cf4fd3d2c |
|---|---|
| 283 { | 283 { |
| 284 /* This function can GC */ | 284 /* This function can GC */ |
| 285 Lisp_Keymap *keymap = XKEYMAP (obj); | 285 Lisp_Keymap *keymap = XKEYMAP (obj); |
| 286 if (print_readably) | 286 if (print_readably) |
| 287 printing_unreadable_lcrecord (obj, 0); | 287 printing_unreadable_lcrecord (obj, 0); |
| 288 write_c_string (printcharfun, "#<keymap "); | 288 write_ascstring (printcharfun, "#<keymap "); |
| 289 if (!NILP (keymap->name)) | 289 if (!NILP (keymap->name)) |
| 290 { | 290 { |
| 291 write_fmt_string_lisp (printcharfun, "%S ", 1, keymap->name); | 291 write_fmt_string_lisp (printcharfun, "%S ", 1, keymap->name); |
| 292 } | 292 } |
| 293 write_fmt_string (printcharfun, "size %ld 0x%x>", | 293 write_fmt_string (printcharfun, "size %ld 0x%x>", |
| 462 */ | 462 */ |
| 463 /* !!#### I'm not sure how correct this is. */ | 463 /* !!#### I'm not sure how correct this is. */ |
| 464 Ibyte str [1 + MAX_ICHAR_LEN]; | 464 Ibyte str [1 + MAX_ICHAR_LEN]; |
| 465 Bytecount count = set_itext_ichar (str, XCHAR (keysym)); | 465 Bytecount count = set_itext_ichar (str, XCHAR (keysym)); |
| 466 str[count] = 0; | 466 str[count] = 0; |
| 467 keysym = intern_int (str); | 467 keysym = intern_istring (str); |
| 468 } | 468 } |
| 469 return control_meta_superify (keysym, modifiers); | 469 return control_meta_superify (keysym, modifiers); |
| 470 } | 470 } |
| 471 | 471 |
| 472 | 472 |
| 1746 } | 1746 } |
| 1747 | 1747 |
| 1748 if (EQ (keys, new_keys)) | 1748 if (EQ (keys, new_keys)) |
| 1749 signal_ferror_with_frob (Qinvalid_operation, mpc_binding, | 1749 signal_ferror_with_frob (Qinvalid_operation, mpc_binding, |
| 1750 "can't bind %s: %s has a non-keymap binding", | 1750 "can't bind %s: %s has a non-keymap binding", |
| 1751 (char *) XSTRING_DATA (Fkey_description (keys)), | 1751 (CIbyte *) XSTRING_DATA (Fkey_description (keys)), |
| 1752 (char *) XSTRING_DATA (Fsingle_key_description | 1752 (CIbyte *) XSTRING_DATA (Fsingle_key_description |
| 1753 (Vmeta_prefix_char))); | 1753 (Vmeta_prefix_char))); |
| 1754 else | 1754 else |
| 1755 signal_ferror_with_frob (Qinvalid_operation, mpc_binding, | 1755 signal_ferror_with_frob (Qinvalid_operation, mpc_binding, |
| 1756 "can't bind %s: %s %s has a non-keymap binding", | 1756 "can't bind %s: %s %s has a non-keymap binding", |
| 1757 (char *) XSTRING_DATA (Fkey_description (keys)), | 1757 (CIbyte *) XSTRING_DATA (Fkey_description (keys)), |
| 1758 (char *) XSTRING_DATA (Fkey_description | 1758 (CIbyte *) XSTRING_DATA (Fkey_description |
| 1759 (new_keys)), | 1759 (new_keys)), |
| 1760 (char *) XSTRING_DATA (Fsingle_key_description | 1760 (CIbyte *) XSTRING_DATA (Fsingle_key_description |
| 1761 (Vmeta_prefix_char))); | 1761 (Vmeta_prefix_char))); |
| 1762 } | 1762 } |
| 1763 | 1763 |
| 1764 DEFUN ("define-key", Fdefine_key, 3, 3, 0, /* | 1764 DEFUN ("define-key", Fdefine_key, 3, 3, 0, /* |
| 1765 Define key sequence KEYS, in KEYMAP, as DEF. | 1765 Define key sequence KEYS, in KEYMAP, as DEF. |
| 1766 KEYMAP is a keymap object. | 1766 KEYMAP is a keymap object. |
| 3283 | 3283 |
| 3284 if (i == 0) | 3284 if (i == 0) |
| 3285 string = s2; | 3285 string = s2; |
| 3286 else | 3286 else |
| 3287 { | 3287 { |
| 3288 /* if (NILP (sep)) Lisp_Object sep = build_string (" ") */; | 3288 /* if (NILP (sep)) Lisp_Object sep = build_ascstring (" ") */; |
| 3289 string = concat2 (string, concat2 (Vsingle_space_string, s2)); | 3289 string = concat2 (string, concat2 (Vsingle_space_string, s2)); |
| 3290 } | 3290 } |
| 3291 } | 3291 } |
| 3292 return string; | 3292 return string; |
| 3293 } | 3293 } |
| 3441 { | 3441 { |
| 3442 p += set_itext_ichar (p, c); | 3442 p += set_itext_ichar (p, c); |
| 3443 } | 3443 } |
| 3444 | 3444 |
| 3445 *p = 0; | 3445 *p = 0; |
| 3446 return build_string ((char *) buf); | 3446 return build_istring (buf); |
| 3447 } | 3447 } |
| 3448 | 3448 |
| 3449 | 3449 |
| 3450 /************************************************************************/ | 3450 /************************************************************************/ |
| 3451 /* where-is (mapping bindings to keys) */ | 3451 /* where-is (mapping bindings to keys) */ |
| 3737 if (! c->keys_so_far_malloced) | 3737 if (! c->keys_so_far_malloced) |
| 3738 { | 3738 { |
| 3739 Lisp_Key_Data *new_ = xnew_array (Lisp_Key_Data, size); | 3739 Lisp_Key_Data *new_ = xnew_array (Lisp_Key_Data, size); |
| 3740 memcpy ((void *)new_, (const void *)c->keys_so_far, | 3740 memcpy ((void *)new_, (const void *)c->keys_so_far, |
| 3741 c->keys_so_far_total_size * sizeof (Lisp_Key_Data)); | 3741 c->keys_so_far_total_size * sizeof (Lisp_Key_Data)); |
| 3742 xfree (c->keys_so_far, Lisp_Key_Data); | 3742 xfree (c->keys_so_far); |
| 3743 c->keys_so_far = new_; | 3743 c->keys_so_far = new_; |
| 3744 } | 3744 } |
| 3745 else | 3745 else |
| 3746 XREALLOC_ARRAY (c->keys_so_far, Lisp_Key_Data, size); | 3746 XREALLOC_ARRAY (c->keys_so_far, Lisp_Key_Data, size); |
| 3747 | 3747 |
| 3813 | 3813 |
| 3814 if (NILP (firstonly)) | 3814 if (NILP (firstonly)) |
| 3815 result = Fnreverse (result); | 3815 result = Fnreverse (result); |
| 3816 | 3816 |
| 3817 if (c.keys_so_far_malloced) | 3817 if (c.keys_so_far_malloced) |
| 3818 xfree (c.keys_so_far, Lisp_Key_Data *); | 3818 xfree (c.keys_so_far); |
| 3819 return result; | 3819 return result; |
| 3820 } | 3820 } |
| 3821 | 3821 |
| 3822 | 3822 |
| 3823 /************************************************************************/ | 3823 /************************************************************************/ |
| 3936 struct gcpro gcpro1; | 3936 struct gcpro gcpro1; |
| 3937 GCPRO1 (definition); | 3937 GCPRO1 (definition); |
| 3938 | 3938 |
| 3939 Findent_to (make_int (16), make_int (3), buffer); | 3939 Findent_to (make_int (16), make_int (3), buffer); |
| 3940 if (keymapp) | 3940 if (keymapp) |
| 3941 buffer_insert_c_string (XBUFFER (buffer), "<< "); | 3941 buffer_insert_ascstring (XBUFFER (buffer), "<< "); |
| 3942 | 3942 |
| 3943 if (SYMBOLP (definition)) | 3943 if (SYMBOLP (definition)) |
| 3944 { | 3944 { |
| 3945 buffer_insert1 (XBUFFER (buffer), Fsymbol_name (definition)); | 3945 buffer_insert1 (XBUFFER (buffer), Fsymbol_name (definition)); |
| 3946 } | 3946 } |
| 3947 else if (STRINGP (definition) || VECTORP (definition)) | 3947 else if (STRINGP (definition) || VECTORP (definition)) |
| 3948 { | 3948 { |
| 3949 buffer_insert_c_string (XBUFFER (buffer), "Kbd Macro: "); | 3949 buffer_insert_ascstring (XBUFFER (buffer), "Kbd Macro: "); |
| 3950 buffer_insert1 (XBUFFER (buffer), Fkey_description (definition)); | 3950 buffer_insert1 (XBUFFER (buffer), Fkey_description (definition)); |
| 3951 } | 3951 } |
| 3952 else if (COMPILED_FUNCTIONP (definition)) | 3952 else if (COMPILED_FUNCTIONP (definition)) |
| 3953 buffer_insert_c_string (XBUFFER (buffer), "Anonymous Compiled Function"); | 3953 buffer_insert_ascstring (XBUFFER (buffer), "Anonymous Compiled Function"); |
| 3954 else if (CONSP (definition) && EQ (XCAR (definition), Qlambda)) | 3954 else if (CONSP (definition) && EQ (XCAR (definition), Qlambda)) |
| 3955 buffer_insert_c_string (XBUFFER (buffer), "Anonymous Lambda"); | 3955 buffer_insert_ascstring (XBUFFER (buffer), "Anonymous Lambda"); |
| 3956 else if (KEYMAPP (definition)) | 3956 else if (KEYMAPP (definition)) |
| 3957 { | 3957 { |
| 3958 Lisp_Object name = XKEYMAP (definition)->name; | 3958 Lisp_Object name = XKEYMAP (definition)->name; |
| 3959 if (STRINGP (name) || (SYMBOLP (name) && !NILP (name))) | 3959 if (STRINGP (name) || (SYMBOLP (name) && !NILP (name))) |
| 3960 { | 3960 { |
| 3961 buffer_insert_c_string (XBUFFER (buffer), "Prefix command "); | 3961 buffer_insert_ascstring (XBUFFER (buffer), "Prefix command "); |
| 3962 if (SYMBOLP (name) | 3962 if (SYMBOLP (name) |
| 3963 && EQ (find_symbol_value (name), definition)) | 3963 && EQ (find_symbol_value (name), definition)) |
| 3964 buffer_insert1 (XBUFFER (buffer), Fsymbol_name (name)); | 3964 buffer_insert1 (XBUFFER (buffer), Fsymbol_name (name)); |
| 3965 else | 3965 else |
| 3966 { | 3966 { |
| 3967 buffer_insert1 (XBUFFER (buffer), Fprin1_to_string (name, Qnil)); | 3967 buffer_insert1 (XBUFFER (buffer), Fprin1_to_string (name, Qnil)); |
| 3968 } | 3968 } |
| 3969 } | 3969 } |
| 3970 else | 3970 else |
| 3971 buffer_insert_c_string (XBUFFER (buffer), "Prefix Command"); | 3971 buffer_insert_ascstring (XBUFFER (buffer), "Prefix Command"); |
| 3972 } | 3972 } |
| 3973 else | 3973 else |
| 3974 buffer_insert_c_string (XBUFFER (buffer), "??"); | 3974 buffer_insert_ascstring (XBUFFER (buffer), "??"); |
| 3975 | 3975 |
| 3976 if (keymapp) | 3976 if (keymapp) |
| 3977 buffer_insert_c_string (XBUFFER (buffer), " >>"); | 3977 buffer_insert_ascstring (XBUFFER (buffer), " >>"); |
| 3978 buffer_insert_c_string (XBUFFER (buffer), "\n"); | 3978 buffer_insert_ascstring (XBUFFER (buffer), "\n"); |
| 3979 UNGCPRO; | 3979 UNGCPRO; |
| 3980 } | 3980 } |
| 3981 | 3981 |
| 3982 struct describe_map_closure | 3982 struct describe_map_closure |
| 3983 { | 3983 { |
| 4208 describe_map_parent_mapper, &describe_map_closure); | 4208 describe_map_parent_mapper, &describe_map_closure); |
| 4209 | 4209 |
| 4210 if (!NILP (list)) | 4210 if (!NILP (list)) |
| 4211 { | 4211 { |
| 4212 list = list_sort (list, Qnil, describe_map_sort_predicate); | 4212 list = list_sort (list, Qnil, describe_map_sort_predicate); |
| 4213 buffer_insert_c_string (buf, "\n"); | 4213 buffer_insert_ascstring (buf, "\n"); |
| 4214 while (!NILP (list)) | 4214 while (!NILP (list)) |
| 4215 { | 4215 { |
| 4216 Lisp_Object elt = XCAR (XCAR (list)); | 4216 Lisp_Object elt = XCAR (XCAR (list)); |
| 4217 Lisp_Object keysym = XCAR (elt); | 4217 Lisp_Object keysym = XCAR (elt); |
| 4218 int modifiers = XINT (XCDR (elt)); | 4218 int modifiers = XINT (XCDR (elt)); |
| 4219 | 4219 |
| 4220 if (!NILP (elt_prefix)) | 4220 if (!NILP (elt_prefix)) |
| 4221 buffer_insert_lisp_string (buf, elt_prefix); | 4221 buffer_insert_lisp_string (buf, elt_prefix); |
| 4222 | 4222 |
| 4223 if (modifiers & XEMACS_MOD_META) | 4223 if (modifiers & XEMACS_MOD_META) |
| 4224 buffer_insert_c_string (buf, "M-"); | 4224 buffer_insert_ascstring (buf, "M-"); |
| 4225 if (modifiers & XEMACS_MOD_CONTROL) | 4225 if (modifiers & XEMACS_MOD_CONTROL) |
| 4226 buffer_insert_c_string (buf, "C-"); | 4226 buffer_insert_ascstring (buf, "C-"); |
| 4227 if (modifiers & XEMACS_MOD_SUPER) | 4227 if (modifiers & XEMACS_MOD_SUPER) |
| 4228 buffer_insert_c_string (buf, "S-"); | 4228 buffer_insert_ascstring (buf, "S-"); |
| 4229 if (modifiers & XEMACS_MOD_HYPER) | 4229 if (modifiers & XEMACS_MOD_HYPER) |
| 4230 buffer_insert_c_string (buf, "H-"); | 4230 buffer_insert_ascstring (buf, "H-"); |
| 4231 if (modifiers & XEMACS_MOD_ALT) | 4231 if (modifiers & XEMACS_MOD_ALT) |
| 4232 buffer_insert_c_string (buf, "Alt-"); | 4232 buffer_insert_ascstring (buf, "Alt-"); |
| 4233 if (modifiers & XEMACS_MOD_SHIFT) | 4233 if (modifiers & XEMACS_MOD_SHIFT) |
| 4234 buffer_insert_c_string (buf, "Sh-"); | 4234 buffer_insert_ascstring (buf, "Sh-"); |
| 4235 if (SYMBOLP (keysym)) | 4235 if (SYMBOLP (keysym)) |
| 4236 { | 4236 { |
| 4237 Lisp_Object code = Fget (keysym, Qcharacter_of_keysym, Qnil); | 4237 Lisp_Object code = Fget (keysym, Qcharacter_of_keysym, Qnil); |
| 4238 Ichar c = (CHAR_OR_CHAR_INTP (code) | 4238 Ichar c = (CHAR_OR_CHAR_INTP (code) |
| 4239 ? XCHAR_OR_CHAR_INT (code) : (Ichar) -1); | 4239 ? XCHAR_OR_CHAR_INT (code) : (Ichar) -1); |
| 4240 /* Calling Fsingle_key_description() would cons more */ | 4240 /* Calling Fsingle_key_description() would cons more */ |
| 4241 #if 0 /* This is bogus */ | 4241 #if 0 /* This is bogus */ |
| 4242 if (EQ (keysym, QKlinefeed)) | 4242 if (EQ (keysym, QKlinefeed)) |
| 4243 buffer_insert_c_string (buf, "LFD"); | 4243 buffer_insert_ascstring (buf, "LFD"); |
| 4244 else if (EQ (keysym, QKtab)) | 4244 else if (EQ (keysym, QKtab)) |
| 4245 buffer_insert_c_string (buf, "TAB"); | 4245 buffer_insert_ascstring (buf, "TAB"); |
| 4246 else if (EQ (keysym, QKreturn)) | 4246 else if (EQ (keysym, QKreturn)) |
| 4247 buffer_insert_c_string (buf, "RET"); | 4247 buffer_insert_ascstring (buf, "RET"); |
| 4248 else if (EQ (keysym, QKescape)) | 4248 else if (EQ (keysym, QKescape)) |
| 4249 buffer_insert_c_string (buf, "ESC"); | 4249 buffer_insert_ascstring (buf, "ESC"); |
| 4250 else if (EQ (keysym, QKdelete)) | 4250 else if (EQ (keysym, QKdelete)) |
| 4251 buffer_insert_c_string (buf, "DEL"); | 4251 buffer_insert_ascstring (buf, "DEL"); |
| 4252 else if (EQ (keysym, QKspace)) | 4252 else if (EQ (keysym, QKspace)) |
| 4253 buffer_insert_c_string (buf, "SPC"); | 4253 buffer_insert_ascstring (buf, "SPC"); |
| 4254 else if (EQ (keysym, QKbackspace)) | 4254 else if (EQ (keysym, QKbackspace)) |
| 4255 buffer_insert_c_string (buf, "BS"); | 4255 buffer_insert_ascstring (buf, "BS"); |
| 4256 else | 4256 else |
| 4257 #endif | 4257 #endif |
| 4258 if (c >= printable_min) | 4258 if (c >= printable_min) |
| 4259 buffer_insert_emacs_char (buf, c); | 4259 buffer_insert_emacs_char (buf, c); |
| 4260 else buffer_insert1 (buf, Fsymbol_name (keysym)); | 4260 else buffer_insert1 (buf, Fsymbol_name (keysym)); |
| 4261 } | 4261 } |
| 4262 else if (CHARP (keysym)) | 4262 else if (CHARP (keysym)) |
| 4263 buffer_insert_emacs_char (buf, XCHAR (keysym)); | 4263 buffer_insert_emacs_char (buf, XCHAR (keysym)); |
| 4264 else | 4264 else |
| 4265 buffer_insert_c_string (buf, "---bad keysym---"); | 4265 buffer_insert_ascstring (buf, "---bad keysym---"); |
| 4266 | 4266 |
| 4267 if (elided) | 4267 if (elided) |
| 4268 elided = 0; | 4268 elided = 0; |
| 4269 else | 4269 else |
| 4270 { | 4270 { |
| 4276 list = XCDR (list); | 4276 list = XCDR (list); |
| 4277 } | 4277 } |
| 4278 if (k != 0) | 4278 if (k != 0) |
| 4279 { | 4279 { |
| 4280 if (k == 1) | 4280 if (k == 1) |
| 4281 buffer_insert_c_string (buf, ", "); | 4281 buffer_insert_ascstring (buf, ", "); |
| 4282 else | 4282 else |
| 4283 buffer_insert_c_string (buf, " .. "); | 4283 buffer_insert_ascstring (buf, " .. "); |
| 4284 elided = 1; | 4284 elided = 1; |
| 4285 continue; | 4285 continue; |
| 4286 } | 4286 } |
| 4287 } | 4287 } |
| 4288 | 4288 |
