X-Git-Url: http://git.chise.org/gitweb/?p=m17n%2Fm17n-test.git;a=blobdiff_plain;f=m17n-imconf.c;h=90eb87f0d6ed55c03a6d061dda9f79161b0c966b;hp=d24aa26aff728e7f2777e2aa79c10d3b2b060aa8;hb=dc04cf7a79fad60b33e024ee2a0fa923f45694f0;hpb=33c2484c76806e4e65fde05b07ae1b0ab278f012 diff --git a/m17n-imconf.c b/m17n-imconf.c index d24aa26..90eb87f 100644 --- a/m17n-imconf.c +++ b/m17n-imconf.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include @@ -84,6 +85,30 @@ eval_close (MPlist *arg) } MPlist * +eval_get_description (MPlist *arg) +{ + MSymbol lang, name; + MText *mt; + MPlist *plist; + + if (! SYMBOLP (arg)) + ERROR (error_invalid_arg); + lang = mplist_value (arg); + arg = mplist_next (arg); + if (! SYMBOLP (arg)) + ERROR (error_invalid_arg); + name = mplist_value (arg); + mt = minput_get_description (lang, name); + if (! mt) + ERROR (error_command_fail); + plist = mplist (); + mplist_add (plist, Mtext, mt); + m17n_object_unref (mt); + return plist; +} + + +MPlist * parse_arg_common (MPlist *arg, MSymbol *lang, MSymbol *name, MSymbol *target) { if (TAILP (arg)) @@ -189,6 +214,7 @@ struct EvalFunc { {eval_set, "set SYMBOL FORM"}, {eval_open, "open LANG NAME"}, {eval_close, "close SYMBOL"}, + {eval_get_description, "get-description LANG NAME"}, {eval_get_command, "get-command [LANG NAME [COMMAND]]"}, {eval_config_command, "config-command LANG NAME [COMMAND [(KEY ...) ...]]"}, {eval_get_variable, "get-variable [LANG NAME [VARIABLE]]"}, @@ -235,21 +261,25 @@ eval (MPlist *plist) void init (void) { + int n; + M17N_INIT (); Merror = msymbol ("error"); Mvalue = msymbol ("value"); Meval_function = msymbol ("eval-function"); - msymbol_put (msymbol ("help"), Meval_function, eval_functions + 0); - msymbol_put (msymbol ("set"), Meval_function, eval_functions + 1); - msymbol_put (msymbol ("open"), Meval_function, eval_functions + 2); - msymbol_put (msymbol ("close"), Meval_function, eval_functions + 3); - msymbol_put (msymbol ("get-command"), Meval_function, eval_functions + 4); - msymbol_put (msymbol ("config-command"), Meval_function, eval_functions + 5); - msymbol_put (msymbol ("get-variable"), Meval_function, eval_functions + 6); - msymbol_put (msymbol ("config-variable"), Meval_function, eval_functions + 7); - msymbol_put (msymbol ("save-config"), Meval_function, eval_functions + 8); + n = 0; + msymbol_put (msymbol ("help"), Meval_function, eval_functions + n), n++; + msymbol_put (msymbol ("set"), Meval_function, eval_functions + n), n++; + msymbol_put (msymbol ("open"), Meval_function, eval_functions + n), n++; + msymbol_put (msymbol ("close"), Meval_function, eval_functions + n), n++; + msymbol_put (msymbol ("get-description"), Meval_function, eval_functions + n), n++; + msymbol_put (msymbol ("get-command"), Meval_function, eval_functions + n), n++; + msymbol_put (msymbol ("config-command"), Meval_function, eval_functions + n), n++; + msymbol_put (msymbol ("get-variable"), Meval_function, eval_functions + n), n++; + msymbol_put (msymbol ("config-variable"), Meval_function, eval_functions + n), n++; + msymbol_put (msymbol ("save-config"), Meval_function, eval_functions + n); error_invalid_format = mplist (); mplist_add (error_invalid_format, Msymbol, Merror); @@ -289,6 +319,8 @@ main () { char line[256]; + setlocale (LC_ALL, ""); + init (); while (printf ("> ") && fgets (line, 256, stdin) != NULL)