comparison src/keymap.c @ 4959:bd169a24a554

merge
author Ben Wing <ben@xemacs.org>
date Thu, 28 Jan 2010 04:27:30 -0600
parents 304aebb79cd3
children e813cf16c015
comparison
equal deleted inserted replaced
4893:99f2102552d7 4959:bd169a24a554
288 { 288 {
289 /* This function can GC */ 289 /* This function can GC */
290 Lisp_Keymap *keymap = XKEYMAP (obj); 290 Lisp_Keymap *keymap = XKEYMAP (obj);
291 if (print_readably) 291 if (print_readably)
292 printing_unreadable_lcrecord (obj, 0); 292 printing_unreadable_lcrecord (obj, 0);
293 write_c_string (printcharfun, "#<keymap "); 293 write_ascstring (printcharfun, "#<keymap ");
294 if (!NILP (keymap->name)) 294 if (!NILP (keymap->name))
295 { 295 {
296 write_fmt_string_lisp (printcharfun, "%S ", 1, keymap->name); 296 write_fmt_string_lisp (printcharfun, "%S ", 1, keymap->name);
297 } 297 }
298 write_fmt_string (printcharfun, "size %ld 0x%x>", 298 write_fmt_string (printcharfun, "size %ld 0x%x>",
472 */ 472 */
473 /* !!#### I'm not sure how correct this is. */ 473 /* !!#### I'm not sure how correct this is. */
474 Ibyte str [1 + MAX_ICHAR_LEN]; 474 Ibyte str [1 + MAX_ICHAR_LEN];
475 Bytecount count = set_itext_ichar (str, XCHAR (keysym)); 475 Bytecount count = set_itext_ichar (str, XCHAR (keysym));
476 str[count] = 0; 476 str[count] = 0;
477 keysym = intern_int (str); 477 keysym = intern_istring (str);
478 } 478 }
479 return control_meta_superify (keysym, modifiers); 479 return control_meta_superify (keysym, modifiers);
480 } 480 }
481 481
482 482
1958 } 1958 }
1959 1959
1960 if (EQ (keys, new_keys)) 1960 if (EQ (keys, new_keys))
1961 signal_ferror_with_frob (Qinvalid_operation, mpc_binding, 1961 signal_ferror_with_frob (Qinvalid_operation, mpc_binding,
1962 "can't bind %s: %s has a non-keymap binding", 1962 "can't bind %s: %s has a non-keymap binding",
1963 (char *) XSTRING_DATA (Fkey_description (keys)), 1963 (CIbyte *) XSTRING_DATA (Fkey_description (keys)),
1964 (char *) XSTRING_DATA (Fsingle_key_description 1964 (CIbyte *) XSTRING_DATA (Fsingle_key_description
1965 (Vmeta_prefix_char))); 1965 (Vmeta_prefix_char)));
1966 else 1966 else
1967 signal_ferror_with_frob (Qinvalid_operation, mpc_binding, 1967 signal_ferror_with_frob (Qinvalid_operation, mpc_binding,
1968 "can't bind %s: %s %s has a non-keymap binding", 1968 "can't bind %s: %s %s has a non-keymap binding",
1969 (char *) XSTRING_DATA (Fkey_description (keys)), 1969 (CIbyte *) XSTRING_DATA (Fkey_description (keys)),
1970 (char *) XSTRING_DATA (Fkey_description 1970 (CIbyte *) XSTRING_DATA (Fkey_description
1971 (new_keys)), 1971 (new_keys)),
1972 (char *) XSTRING_DATA (Fsingle_key_description 1972 (CIbyte *) XSTRING_DATA (Fsingle_key_description
1973 (Vmeta_prefix_char))); 1973 (Vmeta_prefix_char)));
1974 } 1974 }
1975 1975
1976 DEFUN ("define-key", Fdefine_key, 3, 3, 0, /* 1976 DEFUN ("define-key", Fdefine_key, 3, 3, 0, /*
1977 Define key sequence KEYS, in KEYMAP, as DEF. 1977 Define key sequence KEYS, in KEYMAP, as DEF.
1978 KEYMAP is a keymap object. 1978 KEYMAP is a keymap object.
3495 3495
3496 if (i == 0) 3496 if (i == 0)
3497 string = s2; 3497 string = s2;
3498 else 3498 else
3499 { 3499 {
3500 /* if (NILP (sep)) Lisp_Object sep = build_string (" ") */; 3500 /* if (NILP (sep)) Lisp_Object sep = build_ascstring (" ") */;
3501 string = concat2 (string, concat2 (Vsingle_space_string, s2)); 3501 string = concat2 (string, concat2 (Vsingle_space_string, s2));
3502 } 3502 }
3503 } 3503 }
3504 return string; 3504 return string;
3505 } 3505 }
3653 { 3653 {
3654 p += set_itext_ichar (p, c); 3654 p += set_itext_ichar (p, c);
3655 } 3655 }
3656 3656
3657 *p = 0; 3657 *p = 0;
3658 return build_string ((char *) buf); 3658 return build_istring (buf);
3659 } 3659 }
3660 3660
3661 3661
3662 /************************************************************************/ 3662 /************************************************************************/
3663 /* where-is (mapping bindings to keys) */ 3663 /* where-is (mapping bindings to keys) */
4148 struct gcpro gcpro1; 4148 struct gcpro gcpro1;
4149 GCPRO1 (definition); 4149 GCPRO1 (definition);
4150 4150
4151 Findent_to (make_int (16), make_int (3), buffer); 4151 Findent_to (make_int (16), make_int (3), buffer);
4152 if (keymapp) 4152 if (keymapp)
4153 buffer_insert_c_string (XBUFFER (buffer), "<< "); 4153 buffer_insert_ascstring (XBUFFER (buffer), "<< ");
4154 4154
4155 if (SYMBOLP (definition)) 4155 if (SYMBOLP (definition))
4156 { 4156 {
4157 buffer_insert1 (XBUFFER (buffer), Fsymbol_name (definition)); 4157 buffer_insert1 (XBUFFER (buffer), Fsymbol_name (definition));
4158 } 4158 }
4159 else if (STRINGP (definition) || VECTORP (definition)) 4159 else if (STRINGP (definition) || VECTORP (definition))
4160 { 4160 {
4161 buffer_insert_c_string (XBUFFER (buffer), "Kbd Macro: "); 4161 buffer_insert_ascstring (XBUFFER (buffer), "Kbd Macro: ");
4162 buffer_insert1 (XBUFFER (buffer), Fkey_description (definition)); 4162 buffer_insert1 (XBUFFER (buffer), Fkey_description (definition));
4163 } 4163 }
4164 else if (COMPILED_FUNCTIONP (definition)) 4164 else if (COMPILED_FUNCTIONP (definition))
4165 buffer_insert_c_string (XBUFFER (buffer), "Anonymous Compiled Function"); 4165 buffer_insert_ascstring (XBUFFER (buffer), "Anonymous Compiled Function");
4166 else if (CONSP (definition) && EQ (XCAR (definition), Qlambda)) 4166 else if (CONSP (definition) && EQ (XCAR (definition), Qlambda))
4167 buffer_insert_c_string (XBUFFER (buffer), "Anonymous Lambda"); 4167 buffer_insert_ascstring (XBUFFER (buffer), "Anonymous Lambda");
4168 else if (KEYMAPP (definition)) 4168 else if (KEYMAPP (definition))
4169 { 4169 {
4170 Lisp_Object name = XKEYMAP (definition)->name; 4170 Lisp_Object name = XKEYMAP (definition)->name;
4171 if (STRINGP (name) || (SYMBOLP (name) && !NILP (name))) 4171 if (STRINGP (name) || (SYMBOLP (name) && !NILP (name)))
4172 { 4172 {
4173 buffer_insert_c_string (XBUFFER (buffer), "Prefix command "); 4173 buffer_insert_ascstring (XBUFFER (buffer), "Prefix command ");
4174 if (SYMBOLP (name) 4174 if (SYMBOLP (name)
4175 && EQ (find_symbol_value (name), definition)) 4175 && EQ (find_symbol_value (name), definition))
4176 buffer_insert1 (XBUFFER (buffer), Fsymbol_name (name)); 4176 buffer_insert1 (XBUFFER (buffer), Fsymbol_name (name));
4177 else 4177 else
4178 { 4178 {
4179 buffer_insert1 (XBUFFER (buffer), Fprin1_to_string (name, Qnil)); 4179 buffer_insert1 (XBUFFER (buffer), Fprin1_to_string (name, Qnil));
4180 } 4180 }
4181 } 4181 }
4182 else 4182 else
4183 buffer_insert_c_string (XBUFFER (buffer), "Prefix Command"); 4183 buffer_insert_ascstring (XBUFFER (buffer), "Prefix Command");
4184 } 4184 }
4185 else 4185 else
4186 buffer_insert_c_string (XBUFFER (buffer), "??"); 4186 buffer_insert_ascstring (XBUFFER (buffer), "??");
4187 4187
4188 if (keymapp) 4188 if (keymapp)
4189 buffer_insert_c_string (XBUFFER (buffer), " >>"); 4189 buffer_insert_ascstring (XBUFFER (buffer), " >>");
4190 buffer_insert_c_string (XBUFFER (buffer), "\n"); 4190 buffer_insert_ascstring (XBUFFER (buffer), "\n");
4191 UNGCPRO; 4191 UNGCPRO;
4192 } 4192 }
4193 4193
4194 struct describe_map_closure 4194 struct describe_map_closure
4195 { 4195 {
4468 describe_map_parent_mapper, &describe_map_closure); 4468 describe_map_parent_mapper, &describe_map_closure);
4469 4469
4470 if (!NILP (list)) 4470 if (!NILP (list))
4471 { 4471 {
4472 list = list_sort (list, Qnil, describe_map_sort_predicate); 4472 list = list_sort (list, Qnil, describe_map_sort_predicate);
4473 buffer_insert_c_string (buf, "\n"); 4473 buffer_insert_ascstring (buf, "\n");
4474 while (!NILP (list)) 4474 while (!NILP (list))
4475 { 4475 {
4476 Lisp_Object elt = XCAR (XCAR (list)); 4476 Lisp_Object elt = XCAR (XCAR (list));
4477 Lisp_Object keysym = XCAR (elt); 4477 Lisp_Object keysym = XCAR (elt);
4478 int modifiers = XINT (XCDR (elt)); 4478 int modifiers = XINT (XCDR (elt));
4479 4479
4480 if (!NILP (elt_prefix)) 4480 if (!NILP (elt_prefix))
4481 buffer_insert_lisp_string (buf, elt_prefix); 4481 buffer_insert_lisp_string (buf, elt_prefix);
4482 4482
4483 if (modifiers & XEMACS_MOD_META) 4483 if (modifiers & XEMACS_MOD_META)
4484 buffer_insert_c_string (buf, "M-"); 4484 buffer_insert_ascstring (buf, "M-");
4485 if (modifiers & XEMACS_MOD_CONTROL) 4485 if (modifiers & XEMACS_MOD_CONTROL)
4486 buffer_insert_c_string (buf, "C-"); 4486 buffer_insert_ascstring (buf, "C-");
4487 if (modifiers & XEMACS_MOD_SUPER) 4487 if (modifiers & XEMACS_MOD_SUPER)
4488 buffer_insert_c_string (buf, "S-"); 4488 buffer_insert_ascstring (buf, "S-");
4489 if (modifiers & XEMACS_MOD_HYPER) 4489 if (modifiers & XEMACS_MOD_HYPER)
4490 buffer_insert_c_string (buf, "H-"); 4490 buffer_insert_ascstring (buf, "H-");
4491 if (modifiers & XEMACS_MOD_ALT) 4491 if (modifiers & XEMACS_MOD_ALT)
4492 buffer_insert_c_string (buf, "Alt-"); 4492 buffer_insert_ascstring (buf, "Alt-");
4493 if (modifiers & XEMACS_MOD_SHIFT) 4493 if (modifiers & XEMACS_MOD_SHIFT)
4494 buffer_insert_c_string (buf, "Sh-"); 4494 buffer_insert_ascstring (buf, "Sh-");
4495 if (SYMBOLP (keysym)) 4495 if (SYMBOLP (keysym))
4496 { 4496 {
4497 Lisp_Object code = Fget (keysym, Qcharacter_of_keysym, Qnil); 4497 Lisp_Object code = Fget (keysym, Qcharacter_of_keysym, Qnil);
4498 Ichar c = (CHAR_OR_CHAR_INTP (code) 4498 Ichar c = (CHAR_OR_CHAR_INTP (code)
4499 ? XCHAR_OR_CHAR_INT (code) : (Ichar) -1); 4499 ? XCHAR_OR_CHAR_INT (code) : (Ichar) -1);
4500 /* Calling Fsingle_key_description() would cons more */ 4500 /* Calling Fsingle_key_description() would cons more */
4501 #if 0 /* This is bogus */ 4501 #if 0 /* This is bogus */
4502 if (EQ (keysym, QKlinefeed)) 4502 if (EQ (keysym, QKlinefeed))
4503 buffer_insert_c_string (buf, "LFD"); 4503 buffer_insert_ascstring (buf, "LFD");
4504 else if (EQ (keysym, QKtab)) 4504 else if (EQ (keysym, QKtab))
4505 buffer_insert_c_string (buf, "TAB"); 4505 buffer_insert_ascstring (buf, "TAB");
4506 else if (EQ (keysym, QKreturn)) 4506 else if (EQ (keysym, QKreturn))
4507 buffer_insert_c_string (buf, "RET"); 4507 buffer_insert_ascstring (buf, "RET");
4508 else if (EQ (keysym, QKescape)) 4508 else if (EQ (keysym, QKescape))
4509 buffer_insert_c_string (buf, "ESC"); 4509 buffer_insert_ascstring (buf, "ESC");
4510 else if (EQ (keysym, QKdelete)) 4510 else if (EQ (keysym, QKdelete))
4511 buffer_insert_c_string (buf, "DEL"); 4511 buffer_insert_ascstring (buf, "DEL");
4512 else if (EQ (keysym, QKspace)) 4512 else if (EQ (keysym, QKspace))
4513 buffer_insert_c_string (buf, "SPC"); 4513 buffer_insert_ascstring (buf, "SPC");
4514 else if (EQ (keysym, QKbackspace)) 4514 else if (EQ (keysym, QKbackspace))
4515 buffer_insert_c_string (buf, "BS"); 4515 buffer_insert_ascstring (buf, "BS");
4516 else 4516 else
4517 #endif 4517 #endif
4518 if (c >= printable_min) 4518 if (c >= printable_min)
4519 buffer_insert_emacs_char (buf, c); 4519 buffer_insert_emacs_char (buf, c);
4520 else buffer_insert1 (buf, Fsymbol_name (keysym)); 4520 else buffer_insert1 (buf, Fsymbol_name (keysym));
4521 } 4521 }
4522 else if (CHARP (keysym)) 4522 else if (CHARP (keysym))
4523 buffer_insert_emacs_char (buf, XCHAR (keysym)); 4523 buffer_insert_emacs_char (buf, XCHAR (keysym));
4524 else 4524 else
4525 buffer_insert_c_string (buf, "---bad keysym---"); 4525 buffer_insert_ascstring (buf, "---bad keysym---");
4526 4526
4527 if (elided) 4527 if (elided)
4528 elided = 0; 4528 elided = 0;
4529 else 4529 else
4530 { 4530 {
4536 list = XCDR (list); 4536 list = XCDR (list);
4537 } 4537 }
4538 if (k != 0) 4538 if (k != 0)
4539 { 4539 {
4540 if (k == 1) 4540 if (k == 1)
4541 buffer_insert_c_string (buf, ", "); 4541 buffer_insert_ascstring (buf, ", ");
4542 else 4542 else
4543 buffer_insert_c_string (buf, " .. "); 4543 buffer_insert_ascstring (buf, " .. ");
4544 elided = 1; 4544 elided = 1;
4545 continue; 4545 continue;
4546 } 4546 }
4547 } 4547 }
4548 4548