static void rline_setkey_intrinsic (char *keyseq) { char *str; SLkeymap_Type *kmap; if (NULL == (kmap = get_keymap ())) return; if (SLang_peek_at_stack () == SLANG_REF_TYPE) { SLang_Name_Type *nt; if (NULL == (nt = SLang_pop_function ())) return; (void) SLkm_define_slkey (keyseq, nt, kmap); return; } if (-1 == SLang_pop_slstring (&str)) return; (void) SLang_define_key (keyseq, str, kmap); SLang_free_slstring (str); }
static int setkey_fun (int argc, SLcmd_Cmd_Table_Type *table) /*{{{*/ { char *fun = table->string_args[1]; char *key = table->string_args[2]; (void) argc; if (NULL == SLang_find_key_function(fun, Most_Keymap)) { parse_error ("Undefined function"); } if (0 != SLang_define_key (key, fun, Most_Keymap)) parse_error ("Error setting key"); return 0; }