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