*** empty log message ***
[m17n/m17n-test.git] / m17n-imconf.c
index d24aa26..90eb87f 100644 (file)
@@ -1,6 +1,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <locale.h>
 #include <m17n.h>
 #include <m17n-misc.h>
 
 #include <m17n.h>
 #include <m17n-misc.h>
 
@@ -84,6 +85,30 @@ eval_close (MPlist *arg)
 }
 
 MPlist *
 }
 
 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))
 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_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]]"},
     {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)
 {
 void
 init (void)
 {
+  int n;
+
   M17N_INIT ();
 
   Merror = msymbol ("error");
   Mvalue = msymbol ("value");
 
   Meval_function = msymbol ("eval-function");
   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);
 
   error_invalid_format = mplist ();
   mplist_add (error_invalid_format, Msymbol, Merror);
@@ -289,6 +319,8 @@ main ()
 {
   char line[256];
 
 {
   char line[256];
 
+  setlocale (LC_ALL, "");
+
   init ();
 
   while (printf ("> ") && fgets (line, 256, stdin) != NULL)
   init ();
 
   while (printf ("> ") && fgets (line, 256, stdin) != NULL)