[uim-commit] r1497 - in branches/r5rs: . fep gtk helper po qt scm uim xim

tkng at freedesktop.org tkng at freedesktop.org
Wed Sep 14 15:20:40 PDT 2005


Author: tkng
Date: 2005-09-14 15:20:37 -0700 (Wed, 14 Sep 2005)
New Revision: 1497

Modified:
   branches/r5rs/
   branches/r5rs/Makefile.am
   branches/r5rs/configure.ac
   branches/r5rs/fep/callbacks.c
   branches/r5rs/fep/callbacks.h
   branches/r5rs/fep/draw.c
   branches/r5rs/fep/draw.h
   branches/r5rs/fep/escseq.h
   branches/r5rs/fep/helper.c
   branches/r5rs/fep/helper.h
   branches/r5rs/fep/key.h
   branches/r5rs/fep/read.c
   branches/r5rs/fep/read.h
   branches/r5rs/fep/str.h
   branches/r5rs/fep/udsock.h
   branches/r5rs/fep/uim-fep-tick.c
   branches/r5rs/fep/uim-fep.c
   branches/r5rs/fep/uim-fep.h
   branches/r5rs/gtk/gtk-im-uim.c
   branches/r5rs/helper/Makefile.am
   branches/r5rs/po/fr.po
   branches/r5rs/po/ja.po
   branches/r5rs/po/uim.pot
   branches/r5rs/qt/Makefile.am
   branches/r5rs/scm/Makefile.am
   branches/r5rs/scm/custom.scm
   branches/r5rs/scm/im-custom.scm
   branches/r5rs/scm/im.scm
   branches/r5rs/scm/key.scm
   branches/r5rs/scm/uim-module-manager.scm
   branches/r5rs/scm/util.scm
   branches/r5rs/uim/Makefile.am
   branches/r5rs/uim/context.h
   branches/r5rs/uim/plugin.c
   branches/r5rs/uim/uim-func.c
   branches/r5rs/uim/uim-helper-client.c
   branches/r5rs/uim/uim-helper.c
   branches/r5rs/uim/uim-ipc.c
   branches/r5rs/uim/uim-module-manager.c
   branches/r5rs/uim/uim.c
   branches/r5rs/xim/canddisp.cpp
   branches/r5rs/xim/connection.cpp
   branches/r5rs/xim/locale.cpp
   branches/r5rs/xim/main.cpp
   branches/r5rs/xim/ximic.cpp
   branches/r5rs/xim/ximserver.cpp
Log:
 r3028 at t42 (orig r1377):  ekato | 2005-09-02 01:21:47 +0900
 * scm/prime.scm : Fix siod dependency partially.
   Use eq? for comparison of symbols, map instead of siod's
   mapcar, #t instead of t, and string-length instead of length for
   checking string length.  The patch was provided by Jun Inoue.
 * scm/hk.scm : Use map instead of mapcar.
 * scm/spellcheck.scm : Ditto.
 
 r3030 at t42 (orig r1379):  tkng | 2005-09-02 08:47:47 +0900
 * uim/uim-func.c:
  -(switch_im): New function.
 
 * scm/im.scm:
  -(switch-im): Call switch_im instead of calling create-context.
   This is need because switching input method need C level preedit resetting,
   changing current_im_name, and so on.
 
 r3032 at t42 (orig r1381):  ekato | 2005-09-02 15:02:09 +0900
 * xim/ximic.cpp (XimIC::setFocus) : Move candidate window handling
   into InputContext::focusIn().
 * xim/ximserver.cpp (InputContext::focusIn) : Add candidate winow
   handling from XimIC::setFocus().
 
 r3034 at t42 (orig r1383):  ekato | 2005-09-02 17:19:05 +0900
 * gtk/gtk-im-uim.c (im_uim_finalize) : Destroy
   caret_state_indicator at finalize.
 
 r3036 at t42 (orig r1385):  ekato | 2005-09-02 18:09:41 +0900
 * scm/prime.scm : Replace t with else.  Also replace some #t in
   cond phrases with else.
 
 r3041 at t42 (orig r1390):  kzk | 2005-09-04 05:21:33 +0900
 * configure.ac
   - fixed typo. Please don't copy&paste, tkng...
 
 r3046 at t42 (orig r1395):  ekato | 2005-09-04 12:34:59 +0900
 * scm/generic.scm : Fix behavior on generic-proc-input-state not
   to handle prev-candidate-key? and next-candidate-key? with
   preedit.  Ignore symbol? and modifier-key-mask except
   shift-key-mask while having preedit.  Use "length" properly to
   the list in checking generic-prev-candidate-key? and
   generic-next-candidate-key? 
 (generic-proc-input-state-without-preedit) : New. Separated from
   generic-proc-input-state. 
 (generic-proc-input-state-with-preedit) : Ditto.
 * scm/hangul.scm (hangul-proc-on-mode-with-preedit) : New. Follow
   the changes in generic.scm.
 
 r3050 at t42 (orig r1399):  ekato | 2005-09-04 15:24:01 +0900
 * scm/generic.scm (generic-proc-input-state-without-preedit) :
   Handle generic-prev/next-candidate-key?.
 
 r3053 at t42 (orig r1402):  ekato | 2005-09-04 15:41:44 +0900
 * scm/generic.scm (generic-set-candidate-index-handler) : Update
   preedit.
 
 r3056 at t42 (orig r1405):  ekato | 2005-09-04 16:44:19 +0900
 * scm/generic.scm (generic-commit-by-numkey) : Fix to check the
   range.
 
 r3064 at t42 (orig r1413):  yamaken | 2005-09-05 05:23:19 +0900
 * scm/util.scm
   - (toplevel-env): Removed
   - (interaction-environment): New procedure
   - (bitwise-or): Rename to bitwise-ior to conform to final SRFI-60
   - (bitwise-ior): Renamed from bitwise-or
   - (enclose-another-env): Rename to %%enclose-another-env to indicate
     implementation-specific low level procedure
   - (%%enclose-another-env): Renamed from enclose-another-env
   - (define-record): Replace toplevel-env with interaction-environment
 * scm/custom.scm
   - (define-custom, custom-set-value!): Replace toplevel-env with
     interaction-environment
 * scm/im-custom.scm
   - (custom-installed-im-list): Ditto
 * scm/key.scm
   - (define-key-internal): Ditto
 * scm/custom-rt.scm
   - (custom-set-value!, define-custom): Ditto
 * scm/hangul.scm
   - (hangul-proc-on-mode-with-preedit, hangul-proc-on-mode,
     hangul-key-press-handler): Replace enclose-another-env with
     %%enclose-another-env
 * test/test-util.scm
   - (test toplevel-env): Removed
   - (test interaction-environment): New test
   - (test enclose-another-env): Removed
   - (test %%enclose-another-env): New test
 * doc/COMPATIBILITY
   - Add new section "Obsolete some misc Scheme APIs"
 
 r3083 at t42 (orig r1432):  yamamoto | 2005-09-06 02:57:31 +0900
 * fep/uim-fep.c
   - (reset_signal_handler): New function to reset signal settings.
   - (main_loop, signal_handler): Handle signals safely.
 * fep/read.c
   - (my_pselect): New function.
 * fep/callbacks.c
   - (set_candidate): Renamed from get_candidate.
   - (get_mode_str): Return current IM name and current mode name.
   - (prop_list_update_cb): Moved from helper.c.
     Parse helper message to get labels.
   - (prop_label_update_cb): Moved from helper.c.
 * fep/helper.c
   - (helper_handler): Convert encoding of commit_string from specified
     charset.
 
 
 r3084 at t42 (orig r1433):  yamamoto | 2005-09-06 03:01:01 +0900
 * configure.ac: Add checks for sig_atomic_t and pselect.
 
 r3085 at t42 (orig r1434):  yamamoto | 2005-09-06 03:06:28 +0900
 * typedef sig_t if it doesn't exist to compile on Solaris.
 
 r3102 at t42 (orig r1451):  ekato | 2005-09-07 23:46:44 +0900
 * uim/uim-module-manager.c : Clean up the code for improving
   readability.
 (get_arguments) : Removed.
 (modulenames) : Ditto.
 (main) : Stop using global uim_lisp modulenames variable, and use
   char *module_names instead. 
 * scm/uim-module-manager.scm : Follow the changes in
   uim/uim-module-mangager.c.  Stop using 'modules' file since
   it is sufficient to use installed-im-module-list for getting
   current information about the modules.
 (get-new-registered-module-list) : Rename to
   add-modules-to-module-list.
 (add-modules-to-module-list) : Renamed from
   get-new-registered-module-list.
 (remove-unregistered-modules) :	Rename to
   remove-modules-from-module-list.
 (remove-modules-from-module-list) : Renamed from
   remove-unregistered-modules).
 (register-modules) : Stop using get-arguments and use string
   "module-names" from C side instead.  Use
   installed-im-module-list as a current setting instead of reading
   modules file.
 (unregister-modules) : Ditto.
 (update-modules-installed-modules.scm-loader.scm) : Rename
   to update-all-files.
 (update-all-files) : Renamed from
   update-modules-installed-modules.scm-loader.scm.  Don't create
   modules file.
 (update-modules) : Rename to update-modules-file.
 (update-modules-file) : Renamed from update-modules.
 * scm/Makefile.am : Create installed-modules.scm and loader.scm using
   uim-module-manager.
 
 r3103 at t42 (orig r1452):  ekato | 2005-09-07 23:58:52 +0900
 * Proposed fix for bug #4363.
 * scm/im.scm (system-available-im-list) : New.
 * scm/im-custom.scm (usable-im-list) : New function to get the
   default value for enabled-im-list.
 * scm/uim-module-manager.scm (update-installed-modules-scm) :
   Define system-available-im-list as enabled-im-list.
 
 r3104 at t42 (orig r1453):  yamamoto | 2005-09-08 02:52:53 +0900
 * uim/uim.c: Include uim-util.h for is_setugid.
 * uim/uim-helper.c: Ditto.
 * uim/uim-ipc.c: Ditto.
 * uim/uim-func.c: Include uim-im-switcher.h for uim_switch_im.
 
 r3105 at t42 (orig r1454):  yamamoto | 2005-09-08 03:01:14 +0900
 * configure.ac:
   - Add check for errno.h.
   - Remove check for pselect.
 * fep/read.c
   - (pselect_) replacement for pselect(2)
 
 r3106 at t42 (orig r1455):  ekato | 2005-09-08 18:21:32 +0900
 * uim/uim-module-manager.c : Add --unregister-all option
   according to [anthy-dev 2213].  Update usage.
 * scm/uim-module-manager.scm (unregister-all-modules) : Ditto.
 
 
 r3107 at t42 (orig r1456):  ekato | 2005-09-08 19:30:58 +0900
 * uim/uim-module-manager.c (main) : Bug fix.
 
 r3110 at t42 (orig r1459):  ekato | 2005-09-09 14:13:22 +0900
 * po/uim.pot : Update.
 * po/ja.po : Ditto.
 * po/fr.po : Ditto.
 
 r3111 at t42 (orig r1460):  ekato | 2005-09-09 20:35:32 +0900
 * scm/uim-module-manager.scm (add-modules-to-module-list) :
   Fix to use symbol->string in showing warning.
 
 r3117 at t42 (orig r1466):  ekato | 2005-09-11 15:03:16 +0900
 * uim/uim-module-manager.scm (main) : Load path specific
   installed-modules.scm if --path option is specified.
 
 r3119 at t42 (orig r1468):  tkng | 2005-09-11 16:31:25 +0900
 * uim/Makefile.am:
  -(uim_sh_SOURCES): Added editline.h.
 
 r3120 at t42 (orig r1469):  tkng | 2005-09-11 17:31:12 +0900
 * Makefile.am: Added the --with-libedit option to the rule 'releasetest'.
 
 r3131 at t42 (orig r1480):  yamaken | 2005-09-12 22:39:49 +0900
 * uim/plugin.c
   - (plugin_load): Fix broken file loading when
     uim-plugin-lib-load-path or uim-plugin-scm-load-path is empty
 
 r3132 at t42 (orig r1481):  yamaken | 2005-09-12 23:17:12 +0900
 * This commit fixes broken custom update code that compatible with
   0.4.8 behavior, and refactors the experimental mtime-aware version
 
 * scm/custom-rt.scm
   - (custom-enable-mtime-aware-user-conf-reloading?): New variable
   - (custom-reload-group-syms): Rename to
     custom-group-conf-freshnesses since the name does not represent
     its actual content
   - (custom-group-conf-freshnesses): Renamed from
     custom-reload-group-syms
   - (prepend-new-reload-group-syms, update-gsym-mtime): Removed to be
     reorganized into custom-update-group-conf-freshness and
     custom-group-conf-updated?. The procedures must have 'custom-'
     prefix
   - (custom-update-group-conf-freshness, custom-group-conf-updated?):
     New procedure
   - (custom-load-updated-group-conf): Simplify
   - (require-custom): Record mtime of the file. This speeds first-time
     reloading of the experimental code
   - (custom-reload-configs): Rename to custom-reload-user-configs to
     make what it does clear
   - (custom-reload-user-configs):
     * Renamed from custom-reload-configs
     * Fix broken 0.4.8-compatible behavior (due to YamaKen's
       mis-remembering of what custom-reload-customs does)
     * Fix lacking hook handling
     * Fix lacking LIBUIM_VANILLA handling
     * Introduce custom-enable-mtime-aware-user-conf-reloading? to
       choose the two behaviors
     * Simplify the experimental mtime-aware version
     * Update the comment
 * uim/uim.c
   - (uim_prop_reload_configs): Follow the renaming of custom-reload-configs
 
 r3133 at t42 (orig r1482):  yamaken | 2005-09-12 23:23:59 +0900
 * This commit disables the experimental mtime-aware user-config
   reloading feature. See the added comments of uim-custom.c for detail
 
 * uim/uim-custom.c
   - Disable UIM_CUSTOM_EXPERIMENTAL_MTIME_SENSING
   - Add description about the change
 * scm/custom-rt.scm
   - (custom-enable-mtime-aware-user-conf-reloading?): Change default
     to #f
 
 r3134 at t42 (orig r1483):  yamaken | 2005-09-12 23:53:31 +0900
 * uim/editline.c
   - (UIM_EDITLINE_SEPARATED_BUILD): New macro. Currently defined as 1
     to be compatible with previous code. If no distro packagers need
     this, please remove
   - Include editline.h and uim-compat-scm.h
 * uim/plugin.c
   - (plugin_load): Fix an invalid argument passing for DPRINTFN()
 
 r3135 at t42 (orig r1484):  yamaken | 2005-09-13 00:30:29 +0900
 * This commit performs renaming only
 
 * uim/context.h
   - (UIM_NEW_MUTEX, UIM_NEW_MUTEX_STATIC): Rename to UIM_DEFINE_MUTEX*
     since the word 'NEW' may cause confusion about the functionality
     as if the mutex will be allocated on a heap
   - (UIM_DEFINE_MUTEX): Renamed from UIM_NEW_MUTEX
   - (UIM_DEFINE_MUTEX_STATIC): Renamed from UIM_NEW_MUTEX_STATIC
 * uim/uim.c
   - Rename mutexes since:
     * Name of mutexes should be consistent with each other
     * They should have 'mtx' in their name, but prefixing is YamaKen's
       way. If you prefer siffixing, please rename it again
   - (initing_or_quiting): Rename to mtx_initing_or_quiting
   - (mtx_initing_or_quiting): Renamed from initing_or_quiting
   - (context_array_mtx): Rename to mtx_context_array
   - (mtx_context_array): Renamed from context_array_mtx
   - Follow the ranaming of UIM_NEW_MUTEX_STATIC
   - (get_context_id, put_context_id, uim_find_context, uim_init,
     uim_quit): Follow the renaming of mutexes
 
 r3139 at t42 (orig r1488):  ekato | 2005-09-13 03:39:27 +0900
 * xim/locale.cpp (locale_map) : Update.  These locales are check
   with glibc-2.3.90.
 * xim/main.cpp (init_supported_locales) : Fix segv even when there
   is no suitable locales in the system.  See
   http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=327711 and
   thanks to Alban Crequy.
 
 r3141 at t42 (orig r1490):  ekato | 2005-09-13 05:18:03 +0900
 * Install uim-candwin-{gtk,qt} and uim-helper-server into
   libexecdir instead of bindir.
 
 * configure.ac : Define UIM_LIBEXECDIR as libexecdir.	
 * qt/Makefile.am : Install uim-candwin-qt into libexecdir.
 * helper/Makefile.am : Install uim-candwin-gtk into libexecdir.
 * uim/Makefile.am : Install uim-helper-server into libexecdir.
 * uim/uim-ipc.c (uim_ipc_open_command_with_option) : Search
   UIM_LIBEXECDIR path when is_setugid is true.
 * uim/uim-helper-client.c (get_server_command) : Prepend
   UIM_LIBEXECDIR for command path.
 * xim/canddisp.cpp (candwin_command) : Prepend UIM_LIBEXECDIR
   for command path.
 
 r3142 at t42 (orig r1491):  ekato | 2005-09-13 11:18:30 +0900
 * xim/locale.cpp (locale_map) : Add some more locales from X.Org's
   locale.alias.
 
 r3143 at t42 (orig r1492):  ekato | 2005-09-13 12:03:29 +0900
 * uim/uim-module-manager.cpp (read_module_list) : Removed because
   the function is unused.
 (write_module_list) : Ditto.
 * scm/uim-module-manager.scm (update-modules-file) : Ditto.
 



Property changes on: branches/r5rs
___________________________________________________________________
Name: svk:merge
   - fb73e508-85ea-0310-95c3-a85c473e0941:/trunk:1375
   + fb73e508-85ea-0310-95c3-a85c473e0941:/trunk:1492

Modified: branches/r5rs/Makefile.am
===================================================================
--- branches/r5rs/Makefile.am	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/Makefile.am	2005-09-14 22:20:37 UTC (rev 1497)
@@ -46,13 +46,13 @@
 
 releasetest-all-flag-enabled: RELEASETEST_CONFIGURE_FLAGS= --enable-debug \
 	 --enable-fep --enable-dict --with-m17nlib --with-canna \
-	 --with-gtk2 --with-gnome2 --with-qt --with-qt-immodule
+	 --with-gtk2 --with-gnome2 --with-qt --with-qt-immodule --with-libedit
 releasetest-all-flag-enabled: each-releasetest
 
 releasetest-all-flag-disabled: RELEASETEST_CONFIGURE_FLAGS= --disable-debug \
 	--disable-fep --disable-sumika	--disable-dict --without-m17nlib \
 	--without-canna --without-gtk2  --without-gnome2 --without-qt \
-	--without-qt-immodule
+	--without-qt-immodule --without-libedit
 releasetest-all-flag-disabled: each-releasetest
 
 each-releasetest:

Modified: branches/r5rs/configure.ac
===================================================================
--- branches/r5rs/configure.ac	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/configure.ac	2005-09-14 22:20:37 UTC (rev 1497)
@@ -168,7 +168,7 @@
 # Checks for header files.
 AC_FUNC_ALLOCA
 AC_HEADER_STDC
-AC_CHECK_HEADERS([fcntl.h locale.h stdlib.h unistd.h])
+AC_CHECK_HEADERS([fcntl.h locale.h stdlib.h unistd.h errno.h])
 AC_CHECK_HEADERS([string.h sys/ioctl.h sys/socket.h termios.h wchar.h])
 AC_CHECK_HEADERS([sys/time.h sys/stat.h sys/un.h getopt.h assert.h signal.h term.h ncurses/term.h ctype.h pwd.h stdarg.h])
 AC_CHECK_HEADERS([pty.h utmp.h util.h libutil.h])
@@ -177,6 +177,8 @@
 AC_CHECK_HEADERS([pthread.h], have_pthread=yes, have_pthread=no)
 
 # Check for type
+AC_CHECK_TYPES(sig_atomic_t, , ,
+  [ #include <signal.h> ])
 AC_CHECK_TYPES(sig_t, , ,
   [ #include <signal.h> ])
 
@@ -241,6 +243,8 @@
 AC_DEFINE_UNQUOTED(LIBDIR, "$LIBDIR", [libraries dir])
 DATADIR=`eval echo ${datadir}`
 AC_DEFINE_UNQUOTED(DATADIR, "$DATADIR", [read-only architecture-independent data dir])
+UIM_LIBEXECDIR=`eval echo "${libexecdir}"`
+AC_DEFINE_UNQUOTED(UIM_LIBEXECDIR, "$UIM_LIBEXECDIR", [libexec dir])
 # we should use more safe macro such as AC_EXPAND_DIR
 LOCALEDIR=`eval echo ${datadir}/locale`
 # backward compatibility
@@ -623,7 +627,7 @@
 
     # Check For moc-qt3
     if test -x "$QTDIR/bin/moc-qt3"; then
-      HOST_MOC="$QTDIR/bin/moc-qt3"
+      HOST_MOC_QT3="$QTDIR/bin/moc-qt3"
     else
       AC_CHECK_PROGS(HOST_MOC_QT3, moc-qt3, "")
     fi

Modified: branches/r5rs/fep/callbacks.c
===================================================================
--- branches/r5rs/fep/callbacks.c	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/fep/callbacks.c	2005-09-14 22:20:37 UTC (rev 1497)
@@ -52,6 +52,9 @@
 #include "uim-fep.h"
 #include "str.h"
 #include "callbacks.h"
+#include "helper.h"
+#include <uim/uim-im-switcher.h>
+#include <uim/uim-helper.h>
 
 /* ¥¹¥Æ¡¼¥¿¥¹¥é¥¤¥ó¤ÎºÇÂçÉý */
 static int s_max_width;
@@ -62,6 +65,7 @@
 static char *s_index_str;
 static struct preedit_tag *s_preedit;
 static int s_mode;
+static char *s_label_str;
 static char *s_nokori_str;
 static int s_start_callbacks = FALSE;
 
@@ -73,12 +77,14 @@
 static void pushback_cb(void *ptr, int attr, const char *str);
 static void update_cb(void *ptr);
 static void mode_update_cb(void *ptr, int mode);
+static void prop_list_update_cb(void *ptr, const char *str);
+static void prop_label_update_cb(void *ptr, const char *str);
 static struct preedit_tag *dup_preedit(struct preedit_tag *p);
 static void make_page_strs(void);
 static int numwidth(int n);
 static int index2page(int index);
 static void reset_candidate(void);
-static void get_candidate(void);
+static void set_candidate(void);
 
 struct candidate_tag {
   /* ¸õÊä¤Î¿ô */
@@ -128,21 +134,22 @@
   s_candidate_col = UNDEFINED;
   s_index_str = strdup("");
   s_mode = uim_get_current_mode(g_context);
+  s_label_str = strdup("");
   s_preedit = create_preedit();
   uim_set_preedit_cb(g_context, clear_cb, pushback_cb, update_cb);
   uim_set_mode_cb(g_context, mode_update_cb);
+  uim_set_prop_list_update_cb(g_context, prop_list_update_cb);
+  uim_set_prop_label_update_cb(g_context, prop_label_update_cb);
   if (g_opt.status_type != NONE) {
     uim_set_candidate_selector_cb(g_context, activate_cb, select_cb, shift_page_cb, deactivate_cb);
   }
 
   if (g_opt.ddskk) {
-    void *cd;
-    const char *nokori_str = "»Ä¤ê";
     const char *enc;
 
     if (uim_iconv->is_convertible(enc = get_enc(), "EUC-JP")) {
-      cd = uim_iconv->create(enc, "EUC-JP");
-      s_nokori_str = uim_iconv->convert(cd, nokori_str);
+      void *cd = uim_iconv->create(enc, "EUC-JP");
+      s_nokori_str = uim_iconv->convert(cd, "»Ä¤ê");
       if (cd) {
         uim_iconv->release(cd);
       }
@@ -170,6 +177,9 @@
 }
 
 
+/*
+ * ̾Á°¤¬Ê¶¤é¤ï¤·¤¤¤¬¡¢uim¦¤«¤éÉÁ²è¤òÍ׵ᤵ¤ì¤¿¤é¸Æ¤Ö¡£
+ */
 void start_callbacks(void)
 {
   if (s_start_callbacks) {
@@ -178,24 +188,6 @@
   s_start_callbacks = TRUE;
 
   debug2(("\n\nstart_callbacks()\n"));
-  if (s_commit_str != NULL) {
-    free(s_commit_str);
-  }
-  s_commit_str = strdup("");
-  if (s_candidate_str != NULL) {
-    free(s_candidate_str);
-    s_candidate_str = NULL;
-  }
-  if (s_index_str != NULL) {
-    free(s_index_str);
-    s_index_str = NULL;
-  }
-  if (s_statusline_str != NULL) {
-    free(s_statusline_str);
-    s_statusline_str = NULL;
-  }
-  s_candidate_col = UNDEFINED;
-  s_mode = uim_get_current_mode(g_context);
 }
 
 /*
@@ -214,10 +206,15 @@
   if (s_preedit->cursor == UNDEFINED) {
     s_preedit->cursor = s_preedit->width;
   }
+
+  free(s_statusline_str);
+  free(s_candidate_str);
+  free(s_index_str);
+
   if (s_candidate.nr != UNDEFINED) {
     s_statusline_str = strdup(s_candidate.page_strs[s_candidate.page]);
     if (s_candidate.index != UNDEFINED) {
-      get_candidate();
+      set_candidate();
     } else {
       s_candidate_str = strdup("");
       s_candidate_col = UNDEFINED;
@@ -239,7 +236,13 @@
  */
 char *get_commit_str(void)
 {
-  return strdup(s_commit_str);
+  char *return_value = strdup(s_commit_str);
+
+  assert(!s_start_callbacks);
+
+  free(s_commit_str);
+  s_commit_str = strdup("");
+  return return_value;
 }
 
 /*
@@ -248,6 +251,7 @@
  */
 char *get_statusline_str(void)
 {
+  assert(!s_start_callbacks);
   return strdup(s_statusline_str);
 }
 
@@ -257,6 +261,7 @@
  */
 char *get_candidate_str(void)
 {
+  assert(!s_start_callbacks);
   return strdup(s_candidate_str);
 }
 
@@ -266,6 +271,7 @@
  */
 int get_candidate_col(void)
 {
+  assert(!s_start_callbacks);
   return s_candidate_col;
 }
 
@@ -275,6 +281,7 @@
  */
 char *get_index_str(void)
 {
+  assert(!s_start_callbacks);
   return strdup(s_index_str);
 }
 
@@ -284,6 +291,8 @@
  */
 int get_index_col(void)
 {
+  assert(!s_start_callbacks);
+
   if (s_candidate.index != UNDEFINED) {
     return s_candidate.index_col[s_candidate.page];
   }
@@ -296,6 +305,7 @@
  */
 struct preedit_tag *get_preedit(void)
 {
+  assert(!s_start_callbacks);
   return dup_preedit(s_preedit);
 }
 
@@ -304,6 +314,7 @@
  */
 int get_mode(void)
 {
+  assert(!s_start_callbacks);
   return s_mode;
 }
 
@@ -313,10 +324,17 @@
  */
 char *get_mode_str(void)
 {
-  char *mode_str = (char *)uim_get_mode_name(g_context, s_mode);
-  mode_str = strdup(mode_str != NULL ? mode_str : "");
-  strhead(mode_str, s_max_width);
-  return mode_str;
+  char *str;
+  char *im_str = (char *)uim_get_current_im_name(g_context);
+
+  assert(!s_start_callbacks);
+
+  im_str = im_str != NULL ? im_str : "";
+  str = malloc(strlen(im_str) + strlen(s_label_str) + strlen("[]") + 1);
+  sprintf(str, "%s[%s]", im_str, s_label_str);
+  strhead(str, s_max_width);
+
+  return str;
 }
 
 /*
@@ -347,6 +365,9 @@
   debug2(("select_cb(index = %d)\n", index));
   return_if_fail(s_candidate.nr != UNDEFINED);
   return_if_fail(0 <= index && index < s_candidate.nr);
+  if (s_candidate.index == index) {
+    return;
+  }
   start_callbacks();
   s_candidate.index = index;
   s_candidate.page = index2page(index);
@@ -391,6 +412,9 @@
 {
   debug2(("commit_cb(commit_str = \"%s\")\n", commit_str));
   return_if_fail(commit_str != NULL);
+  if (strlen(commit_str) == 0) {
+    return;
+  }
   start_callbacks();
   s_commit_str = realloc(s_commit_str, strlen(s_commit_str) + strlen(commit_str) + 1);
   strcat(s_commit_str, commit_str);
@@ -415,10 +439,18 @@
 {
   int width;
   static int cursor = FALSE;
+
   debug2(("pushback_cb(attr = %d str = \"%s\")\n", attr, str));
+
   return_if_fail(str && s_preedit != NULL);
+
+  width = strwidth(str);
+
+  if (width == 0 && (attr & UPreeditAttr_Cursor) == 0) {
+    return;
+  }
+
   start_callbacks();
-  width = strwidth(str);
   /* UPreeditAttr_Cursor¤Î¤È¤­¤Ë¶õʸ»úÎó¤È¤Ï¸Â¤é¤Ê¤¤ */
   if (attr & UPreeditAttr_Cursor) {
     /* skk¤Î¼­½ñÅÐÏ¿¤Ï¥«¡¼¥½¥ë¤¬2²Õ½ê¤¢¤ë */
@@ -476,10 +508,137 @@
 static void mode_update_cb(void *ptr, int mode)
 {
   debug2(("mode_update_cb(mode = %d)\n", mode));
+
+  if (s_mode == mode) {
+    return;
+  }
+
   start_callbacks();
   s_mode = mode;
 }
 
+static void prop_list_update_cb(void *ptr, const char *str)
+{
+  char *line;
+  int error = TRUE; /* str ¤¬ "" ¤Î¤È¤­¤Ïerror¤Ë¤¹¤ë*/
+  char *labels = strdup("");
+  char *dup_str;
+
+  const char *enc;
+  char *message_buf;
+
+  debug(("prop_list_update_cb\n"));
+  debug2(("str = %s", str));
+
+  dup_str = line = strdup(str);
+
+  while (line[0] != '\0') {
+    int i;
+    char *tab;
+    char *eol;
+    char *label;
+    int label_width;
+    int max_label_width = 0;
+
+    error = TRUE;
+
+    /* branch = "branch\t" iconic_label "\t" buttontooltip_string "\n" */
+    if (!str_has_prefix(line, "branch\t")) {
+      break;
+    }
+    label = line + strlen("branch\t");
+
+    if ((tab = strchr(label, '\t')) == NULL) {
+      break;
+    }
+    *tab = '\0';
+
+    if ((eol = strchr(tab + 1, '\n')) == NULL) {
+      break;
+    }
+    line = eol + 1;
+
+    while (str_has_prefix(line, "leaf\t")) {
+      char *leaf_label = line + strlen("leaf\t");
+
+      tab = line + strlen("leaf");
+
+      /* leaf = "leaf\t" iconic_label "\t" menulabel_string "\t" menutooltip_string "\t" menucommand_name "\t" flag "\n" */
+      for (i = 0; i < 4; i++) {
+        if ((tab = strchr(tab + 1, '\t')) == NULL) {
+          goto loop_end;
+        }
+        *tab = '\0';
+      }
+      if ((eol = strchr(tab + 1, '\n')) == NULL) {
+        goto loop_end;
+      }
+      line = eol + 1;
+
+      error = FALSE;
+
+      label_width = strlen(leaf_label);
+      if (label_width > max_label_width) {
+        max_label_width = label_width;
+      }
+    }
+
+    label_width = strwidth(label);
+    labels = realloc(labels, strlen(labels) + strlen(label) + (max_label_width - label_width) + 1);
+    for (i = 0; i < (max_label_width - label_width); i++) {
+      strcat(labels, " ");
+    }
+    strcat(labels, label);
+  }
+
+loop_end:
+
+  free(dup_str);
+
+  if (error) {
+    free(labels);
+  } else {
+    if (strcmp(s_label_str, labels) != 0) {
+      start_callbacks();
+      free(s_label_str);
+      s_label_str = labels;
+    } else {
+      free(labels);
+    }
+  }
+
+  if (!g_focus_in) {
+    return;
+  }
+
+  enc = get_enc();
+  message_buf = malloc(strlen("prop_list_update\ncharset=") + strlen(enc) + strlen("\n") + strlen(str) + 1);
+  sprintf(message_buf, "prop_list_update\ncharset=%s\n%s", enc, str);
+  uim_helper_send_message(g_helper_fd, message_buf);
+  free(message_buf);
+  debug(("prop_list_update_cb send message\n"));
+}
+
+static void prop_label_update_cb(void *ptr, const char *str)
+{
+  const char *enc;
+  char *message_buf;
+
+  debug(("prop_label_update_cb\n"));
+  debug2(("str = %s", str));
+
+  if (!g_focus_in) {
+    return;
+  }
+
+  enc = get_enc();
+  message_buf = malloc(strlen("prop_label_update\ncharset=") + strlen(enc) + strlen("\n") + strlen(str) + 1);
+  sprintf(message_buf, "prop_label_update\ncharset=%s\n%s", enc, str);
+  uim_helper_send_message(g_helper_fd, message_buf);
+  free(message_buf);
+  debug(("prop_label_update_cb send message\n"));
+}
+
 /*
  * ¿·¤·¤¤¥×¥ê¥¨¥Ç¥£¥Ã¥È¤òºî¤ê¡¤¥Ý¥¤¥ó¥¿¤òÊÖ¤¹
  */
@@ -715,6 +874,7 @@
   if (s_candidate.nr == UNDEFINED) {
     return;
   }
+
   if (s_candidate.page_strs != NULL) {
     int i;
     for (i = 0; i < s_candidate.nr_pages; i++) {
@@ -745,7 +905,7 @@
 /*
  * s_candidate_col¤Ès_candidate_str¤Ès_index_str¤òÀßÄꤹ¤ë
  */
-static void get_candidate(void)
+static void set_candidate(void)
 {
   uim_candidate cand;
   int cand_width;
@@ -799,42 +959,36 @@
 
 void callbacks_winch(void)
 {
+  start_callbacks();
+
   s_max_width = g_win->ws_col;
   if (g_opt.statusline_width != UNDEFINED && g_opt.statusline_width <= s_max_width) {
     s_max_width = g_opt.statusline_width;
   }
-  if (s_candidate.nr != UNDEFINED) {
-    if (s_candidate.page_strs != NULL) {
-      int i;
-      for (i = 0; i < s_candidate.nr_pages; i++) {
-        free(s_candidate.page_strs[i]);
-      }
-      free(s_candidate.page_strs);
-      s_candidate.page_strs = NULL;
+
+  if (s_candidate.nr == UNDEFINED) {
+    return;
+  }
+
+  /* ¸õÊä°ìÍ÷¤òɽ¼¨Ãæ */
+  if (s_candidate.page_strs != NULL) {
+    int i;
+    for (i = 0; i < s_candidate.nr_pages; i++) {
+      free(s_candidate.page_strs[i]);
     }
-    if (s_candidate.page2index != NULL) {
-      free(s_candidate.page2index);
-      s_candidate.page2index = NULL;
-    }
-    if (s_candidate.index_col != NULL) {
-      free(s_candidate.index_col);
-      s_candidate.index_col = NULL;
-    }
-    make_page_strs();
-    if (s_statusline_str != NULL) {
-      free(s_statusline_str);
-    }
-    if (s_candidate_str != NULL) {
-      free(s_candidate_str);
-    }
-    s_statusline_str = strdup(s_candidate.page_strs[s_candidate.page]);
-    if (s_candidate.index != UNDEFINED) {
-      get_candidate();
-    } else {
-      s_candidate_str = strdup("");
-      s_candidate_col = UNDEFINED;
-    }
+    free(s_candidate.page_strs);
+    s_candidate.page_strs = NULL;
   }
+  if (s_candidate.page2index != NULL) {
+    free(s_candidate.page2index);
+    s_candidate.page2index = NULL;
+  }
+  if (s_candidate.index_col != NULL) {
+    free(s_candidate.index_col);
+    s_candidate.index_col = NULL;
+  }
+
+  make_page_strs();
 }
 
 void callbacks_set_mode(int mode)

Modified: branches/r5rs/fep/callbacks.h
===================================================================
--- branches/r5rs/fep/callbacks.h	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/fep/callbacks.h	2005-09-14 22:20:37 UTC (rev 1497)
@@ -34,8 +34,6 @@
 #ifndef CALLBACKS_H
 #define CALLBACKS_H
 
-#include <uim/uim.h>
-
 struct preedit_tag {
   /* ʸ»úÎó¤ÎÉý */
   int width;

Modified: branches/r5rs/fep/draw.c
===================================================================
--- branches/r5rs/fep/draw.c	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/fep/draw.c	2005-09-14 22:20:37 UTC (rev 1497)
@@ -151,8 +151,9 @@
 
 /*
  * ¥×¥ê¥¨¥Ç¥£¥Ã¥È¡¤¥¹¥Æ¡¼¥¿¥¹¥é¥¤¥ó¤òÉÁ²è¤¹¤ë
+ * ÉÁ¼Ì¤¹¤ëɬÍפ¬¤Ê¤¤¾ì¹ç¤ÏFALSE¤òÊÖ¤¹
  */
-void draw(void)
+int draw(void)
 {
   char *commit_str;
 
@@ -161,22 +162,26 @@
   int i;
 
   if (!end_callbacks()) {
-    return;
+    return FALSE;
   }
 
-  /* üËö¥µ¥¤¥º¤¬Êѹ¹¤µ¤ì¤¿¤È¤­¤Ïs_head¤òÊѹ¹¤¹¤ë */
+  prev_preedit = s_preedit;
+  s_preedit = get_preedit();
+  commit_str = get_commit_str();
+
+  /* üËö¥µ¥¤¥º¤¬Êѹ¹¤µ¤ì¤¿¤È¤­¤Ïs_head¤òÊѹ¹¤·¡¢Á°¤Îpreedit¤¬¤Ê¤«¤Ã¤¿¤³¤È¤Ë¤¹¤ë */
   if (s_winch && g_start_preedit) {
     if (g_opt.no_report_cursor) {
       s_preedit->cursor = 0;
     } else {
       s_head = get_cursor_position();
     }
+    end_preedit();
+    free_preedit(prev_preedit);
+    prev_preedit = create_preedit();
   }
+  s_winch = FALSE;
 
-  prev_preedit = s_preedit;
-  s_preedit = get_preedit();
-  commit_str = get_commit_str();
-
   debug2(("draw()\n"));
   debug2(("commit_str = \"%s\"\n", commit_str));
   debug2(("preedit->width = %d\n", s_preedit->width));
@@ -234,9 +239,9 @@
   free_preedit(prev_preedit);
   free(commit_str);
   put_cursor_normal();
-  s_winch = FALSE;
 
   debug2(("\ndraw end\n"));
+  return TRUE;
 }
 
 /*
@@ -510,20 +515,57 @@
 
     if (g_opt.status_type != NONE && statusline_str[0] == '\0') {
       if (g_opt.status_type == LASTLINE) {
+        int mode_str_width = strwidth(mode_str);
+
+        statusline_str_width = mode_str_width;
+
         if (restore) {
           put_save_cursor();
         }
         put_cursor_invisible();
-        put_goto_lastline(0);
-        put_uim_str(mode_str, UPreeditAttr_None);
-        statusline_str_width = strwidth(mode_str);
-        if (draw_background) {
-          put_clear_to_end_of_line(g_win->ws_col - statusline_str_width);
-        } else if (statusline_str_width < prev_statusline_str_width) {
-          put_clear_to_end_of_line(prev_statusline_str_width - statusline_str_width);
+
+        /* draw_background ¤Ê¤é¤Ð force ¤Ç¤¢¤ë */
+        /* ÏÀÍýŪ¤Ë¤Ï´Ø·¸¤Ê¤¤¤¬¤½¤Î¤è¤¦¤Ê»È¤ï¤ìÊý¤·¤«¤·¤Æ¤¤¤Ê¤¤ */
+        assert(!draw_background || force);
+
+        if (force) {
+          put_goto_lastline(0);
+          put_uim_str(mode_str, UPreeditAttr_None);
+
+          if (draw_background) {
+            put_clear_to_end_of_line(g_win->ws_col - statusline_str_width);
+          } else if (statusline_str_width < prev_statusline_str_width) {
+            put_clear_to_end_of_line(prev_statusline_str_width - statusline_str_width);
+          }
+
+        } else {
+          /* !force ¤Ê¤Î¤Ç prev_statusline_str_width ¤Ï¥â¡¼¥Éɽ¼¨¤ÎŤµ¤Ç¤¢¤ë */
+          int eq_width = compare_str(mode_str, prev_mode_str);
+          int eq_byte = width2byte(mode_str, eq_width)[0];
+          int prev_mode_str_width = strwidth(prev_mode_str);
+
+          put_goto_lastline(eq_width);
+          if (mode_str_width == prev_mode_str_width) {
+            int eq_width_rev = compare_str_rev(mode_str, prev_mode_str);
+
+            if (eq_width_rev > 0) {
+              int draw_byte = width2byte(mode_str + eq_byte, mode_str_width - eq_width - eq_width_rev)[0];
+              put_uim_str_len(mode_str + eq_byte, UPreeditAttr_None, draw_byte);
+
+            } else {
+              put_uim_str(mode_str + eq_byte, UPreeditAttr_None);
+            }
+            
+          } else {
+            put_uim_str(mode_str + eq_byte, UPreeditAttr_None);
+            if (statusline_str_width < prev_statusline_str_width) {
+              put_clear_to_end_of_line(prev_statusline_str_width - statusline_str_width);
+            }
+          }
         }
+
       } else if (g_opt.status_type == BACKTICK) {
-        strncpy(s_modebuf, mode_str, MODESIZE - 1);
+        strncpy(s_modebuf, mode_str, sizeof(s_modebuf) - 1);
       }
     }
   }
@@ -608,7 +650,7 @@
   int eq_width;
 
   /* üËö¥µ¥¤¥º¤¬Êѹ¹¤µ¤ì¤¿¤È¤­¤Ïprev_preedit¤Ï̵»ë¤¹¤ë */
-  eq_width = s_winch ? 0 : compare_preedit(preedit, prev_preedit);
+  eq_width = compare_preedit(preedit, prev_preedit);
 
 #if DEBUG > 2
   debug2(("\neq_width = %d\n", eq_width));
@@ -1087,9 +1129,23 @@
 /*
  * üËö¥µ¥¤¥º¤¬Êѹ¹¤µ¤ì¤¿¤È¤­¤Ë¸Æ¤Ö
  */
-void draw_winch(void)
+void draw_winch(struct winsize *prev_win)
 {
   s_winch = TRUE;
+  if (g_opt.status_type == LASTLINE) {
+    put_save_cursor();
+    put_cursor_invisible();
+    put_change_scroll_region(0, g_win->ws_row - 1);
+    if (g_win->ws_row > prev_win->ws_row) {
+      struct winsize save_win = *g_win;
+      *g_win = *prev_win;
+      clear_lastline();
+      *g_win = save_win;
+    }
+    draw_statusline_force_no_restore();
+    put_restore_cursor();
+    put_cursor_normal();
+  }
 }
 
 #if defined(DEBUG) && DEBUG > 2

Modified: branches/r5rs/fep/draw.h
===================================================================
--- branches/r5rs/fep/draw.h	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/fep/draw.h	2005-09-14 22:20:37 UTC (rev 1497)
@@ -34,19 +34,21 @@
 #ifndef DRAW_H
 #define DRAW_H
 
-#include <uim/uim.h>
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#ifdef HAVE_SYS_IOCTL_H
+#include <sys/ioctl.h>
+#endif
 
-#define FORCE -1
-#define CLEAR -2
 #define CANDSIZE 500
 
-#include "callbacks.h"
 extern int g_start_preedit;
 extern int g_commit;
 
 void init_draw(int master, const char *path_getmode);
 void update_backtick(void);
-void draw(void);
+int draw(void);
 void draw_statusline_restore(void);
 void draw_statusline_force_no_restore(void);
 void draw_statusline_force_restore(void);
@@ -54,8 +56,6 @@
 void clear_backtick(void);
 int is_commit_and_preedit(void);
 void draw_commit_and_preedit(void);
-void draw_winch(void);
+void draw_winch(struct winsize *prevwin);
 
-
 #endif
-

Modified: branches/r5rs/fep/escseq.h
===================================================================
--- branches/r5rs/fep/escseq.h	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/fep/escseq.h	2005-09-14 22:20:37 UTC (rev 1497)
@@ -48,7 +48,6 @@
   int background;
 };
 
-
 void init_escseq(const struct attribute_tag *attr_uim);
 void quit_escseq(void);
 void fixtty(void);
@@ -77,4 +76,5 @@
 void put_pty_str(const char *str, int len);
 char *cut_padding(const char *escseq);
 void escseq_winch(void);
+
 #endif

Modified: branches/r5rs/fep/helper.c
===================================================================
--- branches/r5rs/fep/helper.c	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/fep/helper.c	2005-09-14 22:20:37 UTC (rev 1497)
@@ -57,14 +57,10 @@
 static void helper_disconnected_cb(void);
 static void helper_handler_change_im(const char *str);
 static void send_im_list(void);
-static void prop_list_update_cb(void *ptr, const char *str);
-static void prop_label_update_cb(void *ptr, const char *str);
 
 void init_helper(void)
 {
   g_helper_fd = uim_helper_init_client_fd(helper_disconnected_cb);
-  uim_set_prop_list_update_cb(g_context, prop_list_update_cb);
-  uim_set_prop_label_update_cb(g_context, prop_label_update_cb);
 }
 
 void quit_helper(void)
@@ -80,7 +76,6 @@
   g_helper_fd = -1;
 }
 
-#define str_has_prefix(str, prefix) (strncmp((str), (prefix), strlen((prefix))) == 0)
 void helper_handler(void)
 {
   char *message;
@@ -139,10 +134,29 @@
         char *eol;
         debug(("commit_string\n"));
         if ((eol = strchr(message, '\n')) != NULL) {
-          char *commit_string = eol + 1;
-          if ((eol = strchr(commit_string, '\n')) != NULL) {
-            *eol = '\0';
-            commit_cb(NULL, commit_string);
+          char *charset = eol + 1;
+
+          if (str_has_prefix(charset, "charset=")) {
+            charset += strlen("charset=");
+            if ((eol = strchr(charset, '\n')) != NULL) {
+              char *commit_string = eol + 1;
+
+              *eol = '\0';
+              if ((eol = strchr(commit_string, '\n')) != NULL) {
+                const char *commit_enc;
+
+                *eol = '\0';
+                if (uim_iconv->is_convertible(commit_enc = get_enc(), charset)) {
+                  void *cd = uim_iconv->create(commit_enc, charset);
+                  commit_string = uim_iconv->convert(cd, commit_string);
+                  commit_cb(NULL, commit_string);
+                  free(commit_string);
+                  if (cd) {
+                    uim_iconv->release(cd);
+                  }
+                }
+              }
+            }
           }
         }
 
@@ -202,51 +216,12 @@
 
     message = realloc(message, strlen(message) + strlen(im_str) + 1);
     strcat(message, im_str);
+    free(im_str);
   }
   uim_helper_send_message(g_helper_fd, message);
   free(message);
 }
 
-static void prop_list_update_cb(void *ptr, const char *str)
-{
-  const char *enc;
-  char *message_buf;
-
-  debug(("prop_list_update_cb\n"));
-  debug2(("str = %s", str));
-
-  if (!g_focus_in) {
-    return;
-  }
-
-  enc = get_enc();
-  message_buf = malloc(strlen("prop_list_update\ncharset=") + strlen(enc) + strlen("\n") + strlen(str) + 1);
-  sprintf(message_buf, "prop_list_update\ncharset=%s\n%s", enc, str);
-  uim_helper_send_message(g_helper_fd, message_buf);
-  free(message_buf);
-  debug(("prop_list_update_cb send message\n"));
-}
-
-static void prop_label_update_cb(void *ptr, const char *str)
-{
-  const char *enc;
-  char *message_buf;
-
-  debug(("prop_label_update_cb\n"));
-  debug2(("str = %s", str));
-
-  if (!g_focus_in) {
-    return;
-  }
-
-  enc = get_enc();
-  message_buf = malloc(strlen("prop_label_update\ncharset=") + strlen(enc) + strlen("\n") + strlen(str) + 1);
-  sprintf(message_buf, "prop_label_update\ncharset=%s\n%s", enc, str);
-  uim_helper_send_message(g_helper_fd, message_buf);
-  free(message_buf);
-  debug(("prop_label_update_cb send message\n"));
-}
-
 void focus_in(void)
 {
   g_focus_in = TRUE;

Modified: branches/r5rs/fep/helper.h
===================================================================
--- branches/r5rs/fep/helper.h	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/fep/helper.h	2005-09-14 22:20:37 UTC (rev 1497)
@@ -34,6 +34,8 @@
 #ifndef HELPER_H
 #define HELPER_H
 
+#define str_has_prefix(str, prefix) (strncmp((str), (prefix), strlen((prefix))) == 0)
+
 extern int g_focus_in;
 extern int g_helper_fd;
 

Modified: branches/r5rs/fep/key.h
===================================================================
--- branches/r5rs/fep/key.h	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/fep/key.h	2005-09-14 22:20:37 UTC (rev 1497)
@@ -33,10 +33,10 @@
 
 #ifndef KEY_H
 #define KEY_H
+
 int tty2key(char key);
 int tty2key_state(char key);
 int *escape_sequence2key(const char *str, int str_len);
 void print_key(int key, int key_state);
 
 #endif
-

Modified: branches/r5rs/fep/read.c
===================================================================
--- branches/r5rs/fep/read.c	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/fep/read.c	2005-09-14 22:20:37 UTC (rev 1497)
@@ -37,9 +37,6 @@
 #ifndef DEBUG
 #define NDEBUG
 #endif
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
@@ -52,6 +49,9 @@
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
+#ifdef HAVE_ERRNO_H
+#include "errno.h"
+#endif
 
 #include "uim-fep.h"
 #include "read.h"
@@ -59,6 +59,10 @@
 static char *s_unget_buf = NULL;
 static int s_buf_size = 0;
 
+
+static int pselect_(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
+            const struct timespec *timeout, const sigset_t *sigmask);
+
 /*
  * select
  * unget¤¬¤¢¤ë¤È¤­¤Ïselect¤ò¸Æ¤Ð¤Ê¤¤. 
@@ -74,6 +78,20 @@
 }
 
 /*
+ * pselect
+ * unget¤¬¤¢¤ë¤È¤­¤Ïpselect¤ò¸Æ¤Ð¤Ê¤¤. 
+ */
+int my_pselect(int n, fd_set *readfds, const sigset_t *sigmask)
+{
+  if (s_buf_size > 0) {
+    FD_ZERO(readfds);
+    FD_SET(g_win_in, readfds);
+    return 1;
+  }
+  return pselect_(n, readfds, NULL, NULL, NULL, sigmask);
+}
+
+/*
  * stdin¤òread¤¹¤ë
  * unget¤¬¤¢¤ë¤È¤­¤Ï¤½¤ì¤òÊÖ¤¹
  */
@@ -108,3 +126,36 @@
   memcpy(s_unget_buf + s_buf_size, str, count);
   s_buf_size += count;
 }
+
+static int pselect_(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
+            const struct timespec *timeout, const sigset_t *sigmask)
+{
+  int ret;
+  sigset_t orig_sigmask;
+  sigset_t pending_signals;
+
+  /* ¥·¥°¥Ê¥ë¤¬ÊÝᤵ¤ì¤Æ¤¤¤ë¤« */
+  sigpending(&pending_signals);
+  if (
+      sigismember(&pending_signals, SIGHUP)   ||
+      sigismember(&pending_signals, SIGTERM)  ||
+      sigismember(&pending_signals, SIGQUIT)  ||
+      sigismember(&pending_signals, SIGINT)   ||
+      sigismember(&pending_signals, SIGWINCH) ||
+      sigismember(&pending_signals, SIGUSR1)  ||
+      sigismember(&pending_signals, SIGUSR2)  ||
+      sigismember(&pending_signals, SIGTSTP)  ||
+      sigismember(&pending_signals, SIGCONT)
+     ) {
+    sigprocmask(SIG_SETMASK, sigmask, &orig_sigmask);
+    sigprocmask(SIG_SETMASK, &orig_sigmask, NULL);
+    errno = EINTR;
+    return -1;
+  }
+
+  /* timeout ¤Ï»È¤ï¤Ê¤¤ */
+  sigprocmask(SIG_SETMASK, sigmask, &orig_sigmask);
+  ret = select(n, readfds, writefds, exceptfds, NULL);
+  sigprocmask(SIG_SETMASK, &orig_sigmask, NULL);
+  return ret;
+}

Modified: branches/r5rs/fep/read.h
===================================================================
--- branches/r5rs/fep/read.h	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/fep/read.h	2005-09-14 22:20:37 UTC (rev 1497)
@@ -33,16 +33,23 @@
 
 #ifndef READ_H
 #define READ_H
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
 #if HAVE_SYS_TIME_H
 #include <sys/time.h>
 #endif
 #if HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
+#ifdef HAVE_SIGNAL_H
+#include <signal.h>
+#endif
+
 int my_select(int n, fd_set *readfds, struct timeval *timeout);
+int my_pselect(int n, fd_set *readfds, const sigset_t *sigmask);
 ssize_t read_stdin(void *buf, int count);
 void unget_stdin(const char *str, int count);
 
-
 #endif
-

Modified: branches/r5rs/fep/str.h
===================================================================
--- branches/r5rs/fep/str.h	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/fep/str.h	2005-09-14 22:20:37 UTC (rev 1497)
@@ -33,6 +33,7 @@
 
 #ifndef STR_H
 #define STR_H
+
 void init_str(void);
 const char *get_enc(void);
 int compare_str(char *str1, char *str2);
@@ -46,5 +47,5 @@
 char *rstrstr_len(const char *haystack, const char *needle, int haystack_len);
 char *strstr_len(const char *haystack, const char *needle, int haystack_len);
 char *tab2space(const char *tabstr);
+
 #endif
-

Modified: branches/r5rs/fep/udsock.h
===================================================================
--- branches/r5rs/fep/udsock.h	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/fep/udsock.h	2005-09-14 22:20:37 UTC (rev 1497)
@@ -33,9 +33,11 @@
 
 #ifndef UDSOCK_H
 #define UDSOCK_H
+
 #ifndef UNIX_PATH_MAX
 #define UNIX_PATH_MAX 100
 #endif
+
 const char *usersockname(const char *file);
 void init_sendsocket(const char *sock_path);
 void sendline(const char *buf);
@@ -44,4 +46,3 @@
 void close_socket(void);
 
 #endif
-

Modified: branches/r5rs/fep/uim-fep-tick.c
===================================================================
--- branches/r5rs/fep/uim-fep-tick.c	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/fep/uim-fep-tick.c	2005-09-14 22:20:37 UTC (rev 1497)
@@ -55,8 +55,8 @@
 static void version(void);
 int main(int argc, char **argv)
 {
-  char *buf = malloc(BUFSIZE + 1);
-  char *prev_buf = malloc(BUFSIZE + 1);
+  char buf[BUFSIZE + 1];
+  char prev_buf[BUFSIZE + 1];
   const char *sock_path = NULL;
   int op;
 

Modified: branches/r5rs/fep/uim-fep.c
===================================================================
--- branches/r5rs/fep/uim-fep.c	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/fep/uim-fep.c	2005-09-14 22:20:37 UTC (rev 1497)
@@ -59,6 +59,7 @@
 #ifdef HAVE_STRINGS_H
 #include <strings.h>
 #endif
+/* solaris¤Ç¤Ï term.h¤ÎÁ°¤Ëcurses.h¤¬É¬Í× */
 #ifdef HAVE_CURSES_H
 #include <curses.h>
 #endif
@@ -147,7 +148,19 @@
 static char s_path_setmode[MAXPATHLEN];
 static char s_path_getmode[MAXPATHLEN];
 static int s_setmode_fd = -1;
+#ifndef HAVE_SIG_ATOMIC_T
+typedef int sig_atomic_t;
+#endif
+static volatile sig_atomic_t s_signal_flag;
+static sigset_t s_orig_sigmask;
 
+#define SIG_FLAG_DONE    1
+#define SIG_FLAG_RECOVER (1 << 1)
+#define SIG_FLAG_WINCH   (1 << 2)
+#define SIG_FLAG_USR1    (1 << 3)
+#define SIG_FLAG_USR2    (1 << 4)
+#define SIG_FLAG_TSTP    (1 << 5)
+
 static void init_uim(const char *engine);
 static const char *get_default_im_name(void);
 static int make_color_escseq(const char *instr, struct attribute_tag *attr);
@@ -157,12 +170,13 @@
 static void recover_loop(void);
 static struct winsize *get_winsize(void);
 static void set_signal_handler(void);
-static void recover(int sig_no);
-static void sigtstp_handler(int sig_no);
-static void sigcont_handler(int sig_no);
-static void sigwinch_handler(int sig_no);
-static void sigusr1_handler(int sig_no);
-static void sigusr2_handler(int sig_no);
+static void reset_signal_handler(void);
+static void signal_handler(int sig_no);
+static void recover(void);
+static void sigtstp_handler(void);
+static void sigwinch_handler(void);
+static void sigusr1_handler(void);
+static void sigusr2_handler(void);
 static void usage(void);
 static void version(void);
 
@@ -504,6 +518,7 @@
   }
   init_helper();
   init_callbacks();
+  focus_in();
   init_draw(s_master, s_path_getmode);
   init_escseq(&attr_uim);
   set_signal_handler();
@@ -746,6 +761,7 @@
         debug2(("<end draw_commit_and_preedit>"));
       }
     }
+
     FD_ZERO(&fds);
     FD_SET(g_win_in, &fds);
     FD_SET(s_master, &fds);
@@ -755,15 +771,41 @@
     if (g_helper_fd >= 0) {
       FD_SET(g_helper_fd, &fds);
     }
-    if (my_select(nfd, &fds, NULL) <= 0) {
+
+    if (my_pselect(nfd, &fds, &s_orig_sigmask) <= 0) {
       /* signal¤Ç³ä¤ê¹þ¤Þ¤ì¤¿¤È¤­¤Ë¤¯¤ë¡£select¤ÎÊÖ¤êÃͤÏ-1¤Çerrno==EINTR */
+      debug(("signal flag = %x\n", s_signal_flag));
+      if ((s_signal_flag & SIG_FLAG_DONE   ) != 0) {
+        s_signal_flag &= ~SIG_FLAG_DONE;
+        done(1);
+      }
+      if ((s_signal_flag & SIG_FLAG_RECOVER) != 0) {
+        s_signal_flag &= ~SIG_FLAG_RECOVER;
+        recover();
+      }
+      if ((s_signal_flag & SIG_FLAG_WINCH  ) != 0) {
+        s_signal_flag &= ~SIG_FLAG_WINCH;
+        sigwinch_handler();
+      }
+      if ((s_signal_flag & SIG_FLAG_USR1   ) != 0) {
+        s_signal_flag &= ~SIG_FLAG_USR1;
+        sigusr1_handler();
+      }
+      if ((s_signal_flag & SIG_FLAG_USR2   ) != 0) {
+        s_signal_flag &= ~SIG_FLAG_USR2;
+        sigusr2_handler();
+      }
+      if ((s_signal_flag & SIG_FLAG_TSTP   ) != 0) {
+        s_signal_flag &= ~SIG_FLAG_TSTP;
+        sigtstp_handler();
+      }
       continue;
     }
 
-
     /* ¥â¡¼¥É¤òÊѹ¹¤¹¤ë */
     if (s_setmode_fd >= 0 && FD_ISSET(s_setmode_fd, &fds)) {
       int start, end;
+
 #ifdef __CYGWIN32__
       if ((len = read(s_setmode_fd, buf, sizeof(buf) - 1)) <= 0) {
         debug2(("pipe closed\n"));
@@ -773,10 +815,12 @@
 #else
       len = read(s_setmode_fd, buf, sizeof(buf) - 1);
 #endif
+
       for (end = len - 1; end >= 0 && !isdigit((unsigned char)buf[end]); --end);
       /* ¥×¥ê¥¨¥Ç¥£¥Ã¥È¤òÊÔ½¸Ãæ¤Ç¤Ê¤±¤ì¤Ð¥â¡¼¥É¤òÊѹ¹¤¹¤ë */
       if (end >= 0 && !g_start_preedit) {
         int mode;
+
         for (start = end; start > 0 && isdigit((unsigned char)buf[start - 1]); --start);
         buf[end + 1] = '\0';
         mode = atoi(&buf[start]);
@@ -859,9 +903,10 @@
             print_key(key, key_state);
           } else {
             int raw = press_key(key, key_state);
-            draw();
-            if (g_opt.status_type == BACKTICK) {
-              update_backtick();
+            if (!draw()) {
+              if (g_opt.status_type == BACKTICK) {
+                update_backtick();
+              }
             }
             if (raw && !g_start_preedit) {
               if (key_state & UMod_Alt) {
@@ -974,41 +1019,87 @@
 static void set_signal_handler(void)
 {
   struct sigaction act;
+  sigset_t sigmask;
+
+  sigemptyset(&sigmask);
+  sigaddset(&sigmask, SIGHUP);
+  sigaddset(&sigmask, SIGTERM);
+  sigaddset(&sigmask, SIGQUIT);
+  sigaddset(&sigmask, SIGINT);
+  sigaddset(&sigmask, SIGWINCH);
+  sigaddset(&sigmask, SIGUSR1);
+  sigaddset(&sigmask, SIGUSR2);
+  sigaddset(&sigmask, SIGTSTP);
+  sigaddset(&sigmask, SIGCONT);
+  sigprocmask(SIG_BLOCK, &sigmask, &s_orig_sigmask);
+
   /* ¥·¥°¥Ê¥ë¤ò¥Ö¥í¥Ã¥¯¤·¤Ê¤¤ */
   sigemptyset(&act.sa_mask);
   act.sa_flags = 0;
   /* ¥·¥¹¥Æ¥à¥³¡¼¥ë¤òºÆ¼Â¹Ô¤¹¤ë(¼ÂÁõ°Í¸) */
   /* act.sa_flags = SA_RESTART; */
 
-  act.sa_handler = done;
+  act.sa_handler = signal_handler;
   sigaction(SIGHUP, &act, NULL);
   sigaction(SIGTERM, &act, NULL);
-
-  /* act.sa_handler = reload_uim; */
   sigaction(SIGQUIT, &act, NULL);
-
-  act.sa_handler = recover;
   sigaction(SIGINT, &act, NULL);
+  sigaction(SIGWINCH, &act, NULL);
+  sigaction(SIGUSR1, &act, NULL);
+  sigaction(SIGUSR2, &act, NULL);
+  sigaction(SIGTSTP, &act, NULL);
+  sigaction(SIGCONT, &act, NULL);
+}
 
+static void reset_signal_handler(void)
+{
+  struct sigaction act;
 
-  act.sa_handler = sigwinch_handler;
+  sigprocmask(SIG_SETMASK, &s_orig_sigmask, NULL);
+
+  sigemptyset(&act.sa_mask);
+  act.sa_flags = 0;
+  act.sa_handler = SIG_DFL;
+  sigaction(SIGHUP, &act, NULL);
+  sigaction(SIGTERM, &act, NULL);
+  sigaction(SIGQUIT, &act, NULL);
+  sigaction(SIGINT, &act, NULL);
   sigaction(SIGWINCH, &act, NULL);
-
-  act.sa_handler = sigusr1_handler;
   sigaction(SIGUSR1, &act, NULL);
-
-  act.sa_handler = sigusr2_handler;
   sigaction(SIGUSR2, &act, NULL);
-
-  act.sa_handler = sigtstp_handler;
   sigaction(SIGTSTP, &act, NULL);
-
-  act.sa_handler = sigcont_handler;
   sigaction(SIGCONT, &act, NULL);
 }
 
-static void recover(int sig_no)
+static void signal_handler(int sig_no)
 {
+  switch (sig_no) {
+    case SIGHUP:
+    case SIGTERM:
+    case SIGQUIT:
+      s_signal_flag |= SIG_FLAG_DONE;
+      break;
+    case SIGINT:
+      s_signal_flag |= SIG_FLAG_RECOVER;
+      break;
+    case SIGWINCH:
+      s_signal_flag |= SIG_FLAG_WINCH;
+      break;
+    case SIGUSR1:
+      s_signal_flag |= SIG_FLAG_USR1;
+      break;
+    case SIGUSR2:
+      s_signal_flag |= SIG_FLAG_USR2;
+      break;
+    case SIGTSTP:
+      s_signal_flag |= SIG_FLAG_TSTP;
+      break;
+  }
+}
+
+static void recover(void)
+{
+  reset_signal_handler();
   put_exit_attribute_mode();
   put_restore_cursor();
   put_cursor_normal();
@@ -1016,10 +1107,13 @@
   done(EXIT_SUCCESS);
 }
 
-static void sigtstp_handler(int sig_no)
+/*
+ * µÙ»ß¥·¥°¥Ê¥ë
+ */
+static void sigtstp_handler(void)
 {
   struct sigaction act;
-  sigset_t mask;
+  sigset_t sigmask;
 
   quit_escseq();
   put_save_cursor();
@@ -1028,48 +1122,38 @@
   sigemptyset(&act.sa_mask);
   act.sa_flags = 0;
   act.sa_handler = SIG_DFL;
+  sigaction(SIGTSTP, &act, NULL);
+  sigaction(SIGCONT, &act, NULL);
 
-  sigemptyset(&mask);
-  sigaddset(&mask, SIGTSTP);
-  sigprocmask(SIG_UNBLOCK, &mask, NULL);
+  sigemptyset(&sigmask);
+  sigaddset(&sigmask, SIGTSTP);
+  sigaddset(&sigmask, SIGCONT);
+  sigprocmask(SIG_UNBLOCK, &sigmask, NULL);
 
-  sigaction(SIGTSTP, &act, NULL);
   kill(getpid(), SIGTSTP);
+
+  sigprocmask(SIG_BLOCK, &sigmask, NULL);
   
-  act.sa_handler = sigtstp_handler;
+  act.sa_handler = signal_handler;
   sigaction(SIGTSTP, &act, NULL);
-}
-
-static void sigcont_handler(int sig_no)
-{
+  sigaction(SIGCONT, &act, NULL);
   fixtty();
 }
 
 /*
  * üËö¤Î¥µ¥¤¥º¤¬ÊѤï¤Ã¤¿¤È¤­¤Ë²¾ÁÛüËö¤ÎÂ礭¤µ¤ò¹ç¤ï¤»¤ë¡£
  */
-static void sigwinch_handler(int sig_no)
+static void sigwinch_handler(void)
 {
   struct winsize *prev_win = g_win;
   g_win = get_winsize();
+
   debug2(("g_win->ws_row = %d g_win->ws_col = %d\n", g_win->ws_row, g_win->ws_col));
+
   escseq_winch();
   callbacks_winch();
-  draw_winch();
-  if (g_opt.status_type == LASTLINE) {
-    put_save_cursor();
-    put_cursor_invisible();
-    if (g_win->ws_row > prev_win->ws_row) {
-      struct winsize save_win = *g_win;
-      g_win->ws_row = prev_win->ws_row;
-      clear_lastline();
-      *g_win = save_win;
-    }
-    draw_statusline_force_no_restore();
-    put_change_scroll_region(0, g_win->ws_row - 1);
-    put_restore_cursor();
-    put_cursor_normal();
-  }
+  draw_winch(prev_win);
+
   free(prev_win);
   ioctl(s_master, TIOCSWINSZ, g_win);
 }
@@ -1095,13 +1179,13 @@
   exit(exit_value);
 }
 
-static void sigusr1_handler(int sig_no)
+static void sigusr1_handler(void)
 {
   press_key(UKey_Private1, 0);
   draw();
 }
 
-static void sigusr2_handler(int sig_no)
+static void sigusr2_handler(void)
 {
   press_key(UKey_Private2, 0);
   draw();

Modified: branches/r5rs/fep/uim-fep.h
===================================================================
--- branches/r5rs/fep/uim-fep.h	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/fep/uim-fep.h	2005-09-14 22:20:37 UTC (rev 1497)
@@ -40,8 +40,9 @@
 #ifdef HAVE_SYS_IOCTL_H
 #include <sys/ioctl.h>
 #endif
-#ifdef HAVE_TERMIOS_H
-#include <termios.h>
+/* solaris ¤Çwinsize¤ò»È¤¦¤¿¤á¤ËɬÍ× */
+#ifdef HAVE_CURSES_H
+#include <curses.h>
 #endif
 #include <uim/uim.h>
 

Modified: branches/r5rs/gtk/gtk-im-uim.c
===================================================================
--- branches/r5rs/gtk/gtk-im-uim.c	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/gtk/gtk-im-uim.c	2005-09-14 22:20:37 UTC (rev 1497)
@@ -665,6 +665,10 @@
     gtk_widget_destroy(GTK_WIDGET(uic->cwin));
     uic->cwin = NULL;
   }
+  if (uic->caret_state_indicator) {
+    gtk_widget_destroy(uic->caret_state_indicator);
+    uic->caret_state_indicator = NULL;
+  }
 
   uim_release_context(uic->uc);
 

Modified: branches/r5rs/helper/Makefile.am
===================================================================
--- branches/r5rs/helper/Makefile.am	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/helper/Makefile.am	2005-09-14 22:20:37 UTC (rev 1497)
@@ -38,7 +38,12 @@
 
 if GTK2
 
-bin_PROGRAMS = uim-candwin-gtk uim-toolbar-gtk uim-toolbar-gtk-systray uim-im-switcher-gtk uim-input-pad-ja
+bin_PROGRAMS = uim-toolbar-gtk uim-toolbar-gtk-systray uim-im-switcher-gtk uim-input-pad-ja
+if APPLET
+libexec_PROGRAMS += uim-candwin-gtk
+else
+libexec_PROGRAMS = uim-candwin-gtk
+endif
 
 if DICT
 bin_PROGRAMS += uim-dict-gtk
@@ -92,10 +97,9 @@
 
 install-exec-hook-gtk2:
 	cd $(DESTDIR)$(bindir) && \
-	  rm -f uim-helper-candwin-gtk uim-helper-toolbar-gtk uim-helper-toolbar-gtk-systray && \
-	  $(LN_S) uim-candwin-gtk uim-helper-candwin-gtk && \
+	  rm -f uim-helper-toolbar-gtk uim-helper-toolbar-gtk-systray && \
 	  $(LN_S) uim-toolbar-gtk uim-helper-toolbar-gtk && \
-	  $(LN_S) uim-toolbar-gtk-systray uim-helper-toolbar-gtk-systray 
+	  $(LN_S) uim-toolbar-gtk-systray uim-helper-toolbar-gtk-systray
 else
 install-exec-hook-gtk2:
 	true # dummy

Modified: branches/r5rs/po/fr.po
===================================================================
--- branches/r5rs/po/fr.po	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/po/fr.po	2005-09-14 22:20:37 UTC (rev 1497)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: uim\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-06-07 18:18+0900\n"
+"POT-Creation-Date: 2005-09-09 14:09+0900\n"
 "PO-Revision-Date: 2005-02-21 15:52+0100\n"
 "Last-Translator: Thierry Vignaud <tvignaud at mandrakesoft.com>\n"
 "Language-Team: fr <LL at li.org>\n"
@@ -47,24 +47,24 @@
 msgid "Description"
 msgstr "Description"
 
-#: helper/im-switcher-gtk.c:322 qt/switcher-qt.cpp:67
+#: helper/im-switcher-gtk.c:323 qt/switcher-qt.cpp:67
 msgid "uim input method switcher"
 msgstr ""
 
-#: helper/im-switcher-gtk.c:348 qt/switcher-qt.cpp:105
+#: helper/im-switcher-gtk.c:352 qt/switcher-qt.cpp:105
 msgid "Changing way"
 msgstr ""
 
-#: helper/im-switcher-gtk.c:356 qt/switcher-qt.cpp:106
+#: helper/im-switcher-gtk.c:360 qt/switcher-qt.cpp:106
 msgid "Change whole desktop"
 msgstr ""
 
 #. default is "Change whole desktop"
-#: helper/im-switcher-gtk.c:357 qt/switcher-qt.cpp:109
+#: helper/im-switcher-gtk.c:361 qt/switcher-qt.cpp:109
 msgid "Change this application only"
 msgstr ""
 
-#: helper/im-switcher-gtk.c:358 qt/switcher-qt.cpp:111
+#: helper/im-switcher-gtk.c:362 qt/switcher-qt.cpp:111
 msgid "Change this text area only"
 msgstr ""
 
@@ -332,28 +332,44 @@
 msgid "Example"
 msgstr "Exemple"
 
-#: helper/pref-gtk.c:118
+#: helper/pref-gtk.c:144
 msgid ""
 "Some value(s) have been changed.\n"
 "Save?"
 msgstr ""
 
-#: helper/pref-gtk.c:190
+#: helper/pref-gtk.c:216
 msgid ""
 "Some value(s) have been changed.\n"
 "Do you realy quit this program?"
 msgstr ""
 
-#: helper/pref-gtk.c:229 qt/pref-qt.cpp:138
+#: helper/pref-gtk.c:255 qt/pref-qt.cpp:138
 msgid "Group"
 msgstr "Groupe"
 
 #. Defaults button
-#: helper/pref-gtk.c:319
+#: helper/pref-gtk.c:347
 msgid "_Defaults"
 msgstr ""
 
-#: helper/pref-gtk.c:481
+#: helper/pref-gtk.c:352
+msgid "Revert all changes to default"
+msgstr ""
+
+#: helper/pref-gtk.c:362
+msgid "Apply all changes"
+msgstr ""
+
+#: helper/pref-gtk.c:370
+msgid "Quit this application without applying changes"
+msgstr ""
+
+#: helper/pref-gtk.c:381
+msgid "Quit this application with applying changes"
+msgstr ""
+
+#: helper/pref-gtk.c:530
 msgid ""
 "The user customize file \"~/.uim\" is found.\n"
 "This file will override all conflicted settings set by\n"
@@ -361,66 +377,62 @@
 "Please check the file if you find your settings aren't applied."
 msgstr ""
 
-#: helper/pref-gtk-custom-widgets.c:382
+#: helper/pref-gtk-custom-widgets.c:384
 msgid "Specify file"
 msgstr ""
 
-#: helper/pref-gtk-custom-widgets.c:419
-#, fuzzy
+#: helper/pref-gtk-custom-widgets.c:421
 msgid "File..."
-msgstr "Fichier"
+msgstr "Fichier..."
 
-#: helper/pref-gtk-custom-widgets.c:1108
+#: helper/pref-gtk-custom-widgets.c:1110
 msgid "Enabled"
 msgstr ""
 
-#: helper/pref-gtk-custom-widgets.c:1134
-#, fuzzy
+#: helper/pref-gtk-custom-widgets.c:1136
 msgid "Enabled items"
-msgstr "Méthodes d'entrée activées"
+msgstr ""
 
-#: helper/pref-gtk-custom-widgets.c:1212
+#: helper/pref-gtk-custom-widgets.c:1214
 msgid "Disabled"
 msgstr ""
 
-#: helper/pref-gtk-custom-widgets.c:1238
+#: helper/pref-gtk-custom-widgets.c:1240
 msgid "Disabled items"
 msgstr ""
 
-#: helper/pref-gtk-custom-widgets.c:1276 helper/pref-gtk-custom-widgets.c:1865
-#, fuzzy
+#: helper/pref-gtk-custom-widgets.c:1278 helper/pref-gtk-custom-widgets.c:1867
 msgid "Edit..."
-msgstr "_Éditer ..."
+msgstr "_Édition ..."
 
-#: helper/pref-gtk-custom-widgets.c:1484 qt/pref-customwidgets.cpp:839
+#: helper/pref-gtk-custom-widgets.c:1486 qt/pref-customwidgets.cpp:839
 msgid "Press keys to grab (e.g. <Control>a)"
 msgstr ""
 
-#: helper/pref-gtk-custom-widgets.c:1485
+#: helper/pref-gtk-custom-widgets.c:1487
 msgid "Grabbing keys"
 msgstr ""
 
-#: helper/pref-gtk-custom-widgets.c:1706
+#: helper/pref-gtk-custom-widgets.c:1708
 #, c-format
 msgid "%s - key configuration"
 msgstr ""
 
-#: helper/pref-gtk-custom-widgets.c:1743
+#: helper/pref-gtk-custom-widgets.c:1745
 msgid "Key preference"
 msgstr ""
 
-#: helper/pref-gtk-custom-widgets.c:1789
+#: helper/pref-gtk-custom-widgets.c:1791
 msgid "Key:"
 msgstr ""
 
-#: helper/pref-gtk-custom-widgets.c:1810
+#: helper/pref-gtk-custom-widgets.c:1812
 msgid "Grab..."
 msgstr ""
 
 #: helper/toolbar-common-gtk.c:63
-#, fuzzy
 msgid "Switch input method"
-msgstr "Autres méthodes d'entrée"
+msgstr ""
 
 #: helper/toolbar-common-gtk.c:69
 msgid "Preference"
@@ -439,9 +451,8 @@
 msgstr ""
 
 #: helper/toolbar-common-gtk.c:93
-#, fuzzy
 msgid "Help"
-msgstr "_Aide"
+msgstr "Aide"
 
 #: helper/toolbar-common-gtk.c:593 qt/toolbar-common-quimhelpertoolbar.cpp:61
 msgid "Quit this toolbar"
@@ -623,43 +634,46 @@
 #: scm/anthy-custom.lisp:78 scm/anthy-custom.lisp:84 scm/anthy-custom.lisp:90
 #: scm/anthy-custom.lisp:173 scm/anthy-custom.lisp:192
 #: scm/anthy-custom.lisp:201 scm/anthy-custom.lisp:243
-#: scm/anthy-custom.lisp:252 scm/anthy-key-custom.lisp:37
-#: scm/anthy-key-custom.lisp:41 scm/anthy-key-custom.lisp:45
-#: scm/canna-custom.lisp:44 scm/canna-custom.lisp:55 scm/canna-custom.lisp:61
-#: scm/canna-custom.lisp:76 scm/canna-custom.lisp:82 scm/canna-custom.lisp:88
-#: scm/canna-custom.lisp:167 scm/canna-custom.lisp:186
-#: scm/canna-custom.lisp:195 scm/canna-custom.lisp:237
-#: scm/canna-custom.lisp:246 scm/canna-custom.lisp:295
-#: scm/canna-custom.lisp:301 scm/canna-key-custom.lisp:37
-#: scm/canna-key-custom.lisp:41 scm/canna-key-custom.lisp:45
-#: scm/generic-custom.lisp:37 scm/generic-custom.lisp:43
-#: scm/generic-custom.lisp:49 scm/generic-custom.lisp:55
-#: scm/generic-custom.lisp:61 scm/generic-key-custom.lisp:37
-#: scm/generic-key-custom.lisp:41 scm/im-custom.lisp:46 scm/im-custom.lisp:50
-#: scm/im-custom.lisp:55 scm/im-custom.lisp:60 scm/im-custom.lisp:65
-#: scm/im-custom.lisp:70 scm/im-custom.lisp:75 scm/im-custom.lisp:80
-#: scm/im-custom.lisp:85 scm/im-custom.lisp:90 scm/im-custom.lisp:95
-#: scm/im-custom.lisp:100 scm/im-custom.lisp:105 scm/im-custom.lisp:116
-#: scm/im-custom.lisp:126 scm/im-custom.lisp:219 scm/im-custom.lisp:279
-#: scm/im-custom.lisp:295 scm/im-custom.lisp:301 scm/im-custom.lisp:308
-#: scm/im-custom.lisp:314 scm/im-custom.lisp:320 scm/im-custom.lisp:326
-#: scm/im-custom.lisp:332 scm/im-custom.lisp:338 scm/im-custom.lisp:344
-#: scm/im-custom.lisp:351 scm/im-custom.lisp:357 scm/im-custom.lisp:364
-#: scm/im-custom.lisp:370 scm/im-custom.lisp:376 scm/im-custom.lisp:382
-#: scm/prime-custom.lisp:58 scm/prime-custom.lisp:64 scm/prime-custom.lisp:70
-#: scm/prime-custom.lisp:76 scm/prime-custom.lisp:82 scm/prime-custom.lisp:90
-#: scm/prime-custom.lisp:96 scm/prime-custom.lisp:102
-#: scm/prime-custom.lisp:145 scm/prime-custom.lisp:154
+#: scm/anthy-custom.lisp:252 scm/anthy-custom.lisp:290
+#: scm/anthy-key-custom.lisp:37 scm/anthy-key-custom.lisp:41
+#: scm/anthy-key-custom.lisp:45 scm/canna-custom.lisp:44
+#: scm/canna-custom.lisp:55 scm/canna-custom.lisp:61 scm/canna-custom.lisp:76
+#: scm/canna-custom.lisp:82 scm/canna-custom.lisp:88 scm/canna-custom.lisp:94
+#: scm/canna-custom.lisp:173 scm/canna-custom.lisp:192
+#: scm/canna-custom.lisp:201 scm/canna-custom.lisp:243
+#: scm/canna-custom.lisp:252 scm/canna-custom.lisp:301
+#: scm/canna-custom.lisp:307 scm/canna-custom.lisp:364
+#: scm/canna-key-custom.lisp:37 scm/canna-key-custom.lisp:41
+#: scm/canna-key-custom.lisp:45 scm/generic-custom.lisp:37
+#: scm/generic-custom.lisp:43 scm/generic-custom.lisp:49
+#: scm/generic-custom.lisp:55 scm/generic-custom.lisp:61
+#: scm/generic-key-custom.lisp:37 scm/generic-key-custom.lisp:41
+#: scm/im-custom.lisp:47 scm/im-custom.lisp:51 scm/im-custom.lisp:56
+#: scm/im-custom.lisp:61 scm/im-custom.lisp:66 scm/im-custom.lisp:71
+#: scm/im-custom.lisp:76 scm/im-custom.lisp:81 scm/im-custom.lisp:86
+#: scm/im-custom.lisp:91 scm/im-custom.lisp:96 scm/im-custom.lisp:101
+#: scm/im-custom.lisp:106 scm/im-custom.lisp:117 scm/im-custom.lisp:127
+#: scm/im-custom.lisp:229 scm/im-custom.lisp:289 scm/im-custom.lisp:305
+#: scm/im-custom.lisp:311 scm/im-custom.lisp:318 scm/im-custom.lisp:324
+#: scm/im-custom.lisp:330 scm/im-custom.lisp:336 scm/im-custom.lisp:342
+#: scm/im-custom.lisp:348 scm/im-custom.lisp:354 scm/im-custom.lisp:367
+#: scm/im-custom.lisp:373 scm/im-custom.lisp:380 scm/im-custom.lisp:386
+#: scm/im-custom.lisp:390 scm/im-custom.lisp:396 scm/im-custom.lisp:402
+#: scm/prime-custom.lisp:55 scm/prime-custom.lisp:61 scm/prime-custom.lisp:69
+#: scm/prime-custom.lisp:75 scm/prime-custom.lisp:93 scm/prime-custom.lisp:99
+#: scm/prime-custom.lisp:106 scm/prime-custom.lisp:113
+#: scm/prime-custom.lisp:121 scm/prime-custom.lisp:129
+#: scm/prime-custom.lisp:135 scm/prime-custom.lisp:141
 #: scm/prime-key-custom.lisp:61 scm/prime-key-custom.lisp:65
 #: scm/prime-key-custom.lisp:69 scm/skk-custom.lisp:59 scm/skk-custom.lisp:65
 #: scm/skk-custom.lisp:73 scm/skk-custom.lisp:79 scm/skk-custom.lisp:85
-#: scm/skk-custom.lisp:91 scm/skk-custom.lisp:218 scm/skk-custom.lisp:237
-#: scm/skk-custom.lisp:246 scm/skk-custom.lisp:277 scm/skk-custom.lisp:286
-#: scm/skk-custom.lisp:329 scm/skk-custom.lisp:335 scm/skk-custom.lisp:347
-#: scm/skk-custom.lisp:354 scm/skk-custom.lisp:361 scm/skk-custom.lisp:373
-#: scm/skk-custom.lisp:379 scm/skk-custom.lisp:385 scm/skk-custom.lisp:391
-#: scm/skk-custom.lisp:401 scm/skk-custom.lisp:407 scm/skk-custom.lisp:428
-#: scm/skk-custom.lisp:434 scm/skk-custom.lisp:441 scm/skk-key-custom.lisp:65
+#: scm/skk-custom.lisp:91 scm/skk-custom.lisp:217 scm/skk-custom.lisp:236
+#: scm/skk-custom.lisp:245 scm/skk-custom.lisp:276 scm/skk-custom.lisp:285
+#: scm/skk-custom.lisp:328 scm/skk-custom.lisp:334 scm/skk-custom.lisp:346
+#: scm/skk-custom.lisp:353 scm/skk-custom.lisp:360 scm/skk-custom.lisp:372
+#: scm/skk-custom.lisp:378 scm/skk-custom.lisp:384 scm/skk-custom.lisp:390
+#: scm/skk-custom.lisp:400 scm/skk-custom.lisp:406 scm/skk-custom.lisp:427
+#: scm/skk-custom.lisp:433 scm/skk-custom.lisp:440 scm/skk-key-custom.lisp:65
 #: scm/skk-key-custom.lisp:69 scm/skk-key-custom.lisp:73
 #: scm/skk-key-custom.lisp:78 scm/spellcheck-custom.lisp:48
 #: scm/spellcheck-custom.lisp:54 scm/spellcheck-custom.lisp:60
@@ -668,7 +682,7 @@
 msgid "long description will be here."
 msgstr ""
 
-#: scm/anthy-custom.lisp:56 scm/canna-custom.lisp:60 scm/im-custom.lisp:79
+#: scm/anthy-custom.lisp:56 scm/canna-custom.lisp:60 scm/im-custom.lisp:80
 msgid "Segment separator"
 msgstr ""
 
@@ -685,115 +699,119 @@
 msgstr ""
 
 #: scm/anthy-custom.lisp:83 scm/canna-custom.lisp:87
-#: scm/generic-custom.lisp:54 scm/prime-custom.lisp:57 scm/skk-custom.lisp:90
+#: scm/generic-custom.lisp:54 scm/prime-custom.lisp:92 scm/skk-custom.lisp:90
 msgid "Number of candidates in candidate window at a time"
 msgstr ""
 
-#: scm/anthy-custom.lisp:89 scm/generic-custom.lisp:60
+#: scm/anthy-custom.lisp:89 scm/canna-custom.lisp:93
+#: scm/generic-custom.lisp:60 scm/prime-custom.lisp:128
 msgid "Select candidate by numeral keys"
 msgstr ""
 
-#: scm/anthy-custom.lisp:119 scm/canna-custom.lisp:113
-#: scm/prime-custom.lisp:122 scm/skk-custom.lisp:169
+#: scm/anthy-custom.lisp:119 scm/canna-custom.lisp:119
+#: scm/prime-custom.lisp:160 scm/skk-custom.lisp:168
 msgid "Direct input"
 msgstr ""
 
-#: scm/anthy-custom.lisp:120 scm/canna-custom.lisp:114 scm/skk-custom.lisp:170
+#: scm/anthy-custom.lisp:120 scm/canna-custom.lisp:120 scm/skk-custom.lisp:169
 msgid "Direct input mode"
 msgstr ""
 
-#: scm/anthy-custom.lisp:124 scm/canna-custom.lisp:118 scm/skk-custom.lisp:174
+#: scm/anthy-custom.lisp:124 scm/canna-custom.lisp:124 scm/skk-custom.lisp:173
 msgid "Hiragana"
 msgstr ""
 
-#: scm/anthy-custom.lisp:125 scm/canna-custom.lisp:119 scm/skk-custom.lisp:175
+#: scm/anthy-custom.lisp:125 scm/canna-custom.lisp:125 scm/skk-custom.lisp:174
 msgid "Hiragana input mode"
 msgstr ""
 
-#: scm/anthy-custom.lisp:129 scm/canna-custom.lisp:123 scm/skk-custom.lisp:179
+#: scm/anthy-custom.lisp:129 scm/canna-custom.lisp:129 scm/skk-custom.lisp:178
 msgid "Katakana"
 msgstr ""
 
-#: scm/anthy-custom.lisp:130 scm/canna-custom.lisp:124 scm/skk-custom.lisp:180
+#: scm/anthy-custom.lisp:130 scm/canna-custom.lisp:130 scm/skk-custom.lisp:179
 msgid "Katakana input mode"
 msgstr ""
 
-#: scm/anthy-custom.lisp:134 scm/canna-custom.lisp:128 scm/skk-custom.lisp:184
+#: scm/anthy-custom.lisp:134 scm/canna-custom.lisp:134 scm/skk-custom.lisp:183
 msgid "Halfwidth Katakana"
 msgstr ""
 
-#: scm/anthy-custom.lisp:135 scm/canna-custom.lisp:129 scm/skk-custom.lisp:185
+#: scm/anthy-custom.lisp:135 scm/canna-custom.lisp:135 scm/skk-custom.lisp:184
 msgid "Halfwidth Katakana input mode"
 msgstr ""
 
-#: scm/anthy-custom.lisp:139 scm/canna-custom.lisp:133
-#: scm/prime-custom.lisp:132 scm/skk-custom.lisp:189
+#: scm/anthy-custom.lisp:139 scm/canna-custom.lisp:139
+#: scm/prime-custom.lisp:170 scm/skk-custom.lisp:188
 msgid "Fullwidth Alphanumeric"
 msgstr ""
 
-#: scm/anthy-custom.lisp:140 scm/canna-custom.lisp:134
-#: scm/prime-custom.lisp:133 scm/skk-custom.lisp:190
+#: scm/anthy-custom.lisp:140 scm/canna-custom.lisp:140
+#: scm/prime-custom.lisp:171 scm/skk-custom.lisp:189
 msgid "Fullwidth Alphanumeric input mode"
 msgstr ""
 
-#: scm/anthy-custom.lisp:147 scm/canna-custom.lisp:141 scm/skk-custom.lisp:197
+#: scm/anthy-custom.lisp:147 scm/canna-custom.lisp:147 scm/skk-custom.lisp:196
 msgid "Romaji"
 msgstr ""
 
-#: scm/anthy-custom.lisp:148 scm/canna-custom.lisp:142 scm/skk-custom.lisp:198
+#: scm/anthy-custom.lisp:148 scm/canna-custom.lisp:148 scm/skk-custom.lisp:197
 msgid "Romaji input mode"
 msgstr ""
 
-#: scm/anthy-custom.lisp:152 scm/canna-custom.lisp:146
+#: scm/anthy-custom.lisp:152 scm/canna-custom.lisp:152
 msgid "Kana"
 msgstr "Kana"
 
-#: scm/anthy-custom.lisp:153 scm/canna-custom.lisp:147
+#: scm/anthy-custom.lisp:153 scm/canna-custom.lisp:153
 msgid "Kana input mode"
 msgstr ""
 
-#: scm/anthy-custom.lisp:157 scm/canna-custom.lisp:151 scm/skk-custom.lisp:202
+#: scm/anthy-custom.lisp:157 scm/canna-custom.lisp:157 scm/skk-custom.lisp:201
 msgid "AZIK"
 msgstr ""
 
-#: scm/anthy-custom.lisp:158 scm/canna-custom.lisp:152 scm/skk-custom.lisp:203
+#: scm/anthy-custom.lisp:158 scm/canna-custom.lisp:158 scm/skk-custom.lisp:202
 msgid "AZIK extended romaji input mode"
 msgstr ""
 
 #: scm/anthy-custom.lisp:167 scm/anthy-custom.lisp:168
-#: scm/canna-custom.lisp:161 scm/canna-custom.lisp:162 scm/skk-custom.lisp:212
-#: scm/skk-custom.lisp:213
+#: scm/canna-custom.lisp:167 scm/canna-custom.lisp:168 scm/skk-custom.lisp:211
+#: scm/skk-custom.lisp:212
 msgid "Input mode"
 msgstr ""
 
 #: scm/anthy-custom.lisp:170 scm/anthy-custom.lisp:171
-#: scm/canna-custom.lisp:164 scm/canna-custom.lisp:165 scm/skk-custom.lisp:215
-#: scm/skk-custom.lisp:216
+#: scm/canna-custom.lisp:170 scm/canna-custom.lisp:171 scm/skk-custom.lisp:214
+#: scm/skk-custom.lisp:215
 msgid "Kana input method"
 msgstr "Méthode d'entrée Kana"
 
-#: scm/anthy-custom.lisp:172 scm/canna-custom.lisp:166 scm/skk-custom.lisp:217
+#: scm/anthy-custom.lisp:172 scm/canna-custom.lisp:172 scm/skk-custom.lisp:216
 msgid "Enabled toolbar buttons"
 msgstr ""
 
-#: scm/anthy-custom.lisp:191 scm/canna-custom.lisp:185
-#: scm/prime-custom.lisp:144 scm/skk-custom.lisp:236
+#: scm/anthy-custom.lisp:191 scm/canna-custom.lisp:191 scm/skk-custom.lisp:235
 msgid "Default input mode"
 msgstr ""
 
-#: scm/anthy-custom.lisp:200 scm/canna-custom.lisp:194
-#: scm/prime-custom.lisp:153 scm/skk-custom.lisp:245
+#: scm/anthy-custom.lisp:200 scm/canna-custom.lisp:200 scm/skk-custom.lisp:244
 msgid "Input mode menu items"
 msgstr ""
 
-#: scm/anthy-custom.lisp:242 scm/canna-custom.lisp:236 scm/skk-custom.lisp:276
+#: scm/anthy-custom.lisp:242 scm/canna-custom.lisp:242 scm/skk-custom.lisp:275
 msgid "Default kana input method"
 msgstr "Méthode d'entrée Kana par défaut"
 
-#: scm/anthy-custom.lisp:251 scm/canna-custom.lisp:245 scm/skk-custom.lisp:285
+#: scm/anthy-custom.lisp:251 scm/canna-custom.lisp:251 scm/skk-custom.lisp:284
 msgid "Kana input method menu items"
 msgstr "Entrées de menu de la méthode d'entrée Kana"
 
+#: scm/anthy-custom.lisp:289 scm/canna-custom.lisp:363
+#: scm/prime-custom.lisp:134 scm/skk-custom.lisp:426
+msgid "Friendly for vi user"
+msgstr ""
+
 #: scm/anthy-key-custom.lisp:36
 msgid "Anthy key bindings 1"
 msgstr ""
@@ -815,26 +833,31 @@
 #: scm/anthy-key-custom.lisp:76 scm/anthy-key-custom.lisp:82
 #: scm/anthy-key-custom.lisp:88 scm/anthy-key-custom.lisp:94
 #: scm/anthy-key-custom.lisp:100 scm/anthy-key-custom.lisp:106
-#: scm/anthy-key-custom.lisp:113 scm/anthy-key-custom.lisp:119
-#: scm/anthy-key-custom.lisp:130 scm/anthy-key-custom.lisp:136
+#: scm/anthy-key-custom.lisp:112 scm/anthy-key-custom.lisp:119
+#: scm/anthy-key-custom.lisp:125 scm/anthy-key-custom.lisp:136
 #: scm/anthy-key-custom.lisp:142 scm/anthy-key-custom.lisp:148
 #: scm/anthy-key-custom.lisp:154 scm/anthy-key-custom.lisp:160
 #: scm/anthy-key-custom.lisp:166 scm/anthy-key-custom.lisp:172
-#: scm/anthy-key-custom.lisp:178 scm/anthy-key-custom.lisp:188
+#: scm/anthy-key-custom.lisp:178 scm/anthy-key-custom.lisp:184
 #: scm/anthy-key-custom.lisp:194 scm/anthy-key-custom.lisp:200
 #: scm/anthy-key-custom.lisp:206 scm/anthy-key-custom.lisp:212
 #: scm/anthy-key-custom.lisp:218 scm/anthy-key-custom.lisp:224
-#: scm/anthy-key-custom.lisp:230 scm/canna-key-custom.lisp:52
+#: scm/anthy-key-custom.lisp:230 scm/anthy-key-custom.lisp:236
+#: scm/anthy-key-custom.lisp:242 scm/canna-key-custom.lisp:52
 #: scm/canna-key-custom.lisp:58 scm/canna-key-custom.lisp:64
 #: scm/canna-key-custom.lisp:70 scm/canna-key-custom.lisp:76
 #: scm/canna-key-custom.lisp:82 scm/canna-key-custom.lisp:88
-#: scm/canna-key-custom.lisp:94 scm/canna-key-custom.lisp:103
-#: scm/canna-key-custom.lisp:110 scm/canna-key-custom.lisp:116
-#: scm/canna-key-custom.lisp:122 scm/canna-key-custom.lisp:128
+#: scm/canna-key-custom.lisp:94 scm/canna-key-custom.lisp:100
+#: scm/canna-key-custom.lisp:106 scm/canna-key-custom.lisp:112
+#: scm/canna-key-custom.lisp:121 scm/canna-key-custom.lisp:128
 #: scm/canna-key-custom.lisp:134 scm/canna-key-custom.lisp:140
-#: scm/canna-key-custom.lisp:161 scm/canna-key-custom.lisp:167
+#: scm/canna-key-custom.lisp:146 scm/canna-key-custom.lisp:152
+#: scm/canna-key-custom.lisp:158 scm/canna-key-custom.lisp:164
+#: scm/canna-key-custom.lisp:170 scm/canna-key-custom.lisp:179
 #: scm/canna-key-custom.lisp:185 scm/canna-key-custom.lisp:191
 #: scm/canna-key-custom.lisp:197 scm/canna-key-custom.lisp:203
+#: scm/canna-key-custom.lisp:209 scm/canna-key-custom.lisp:215
+#: scm/canna-key-custom.lisp:221 scm/canna-key-custom.lisp:227
 #: scm/generic-key-custom.lisp:48 scm/generic-key-custom.lisp:54
 #: scm/generic-key-custom.lisp:60 scm/generic-key-custom.lisp:66
 #: scm/generic-key-custom.lisp:72 scm/generic-key-custom.lisp:78
@@ -864,12 +887,13 @@
 #: scm/skk-key-custom.lisp:161 scm/skk-key-custom.lisp:167
 #: scm/skk-key-custom.lisp:173 scm/skk-key-custom.lisp:179
 #: scm/skk-key-custom.lisp:185 scm/skk-key-custom.lisp:191
-#: scm/skk-key-custom.lisp:209 scm/skk-key-custom.lisp:215
+#: scm/skk-key-custom.lisp:197 scm/skk-key-custom.lisp:215
 #: scm/skk-key-custom.lisp:221 scm/skk-key-custom.lisp:227
 #: scm/skk-key-custom.lisp:233 scm/skk-key-custom.lisp:239
-#: scm/skk-key-custom.lisp:245 scm/spellcheck-custom.lisp:72
-#: scm/tutcode-key-custom.lisp:76 scm/tutcode-key-custom.lisp:82
-#: scm/tutcode-key-custom.lisp:88 scm/tutcode-key-custom.lisp:95
+#: scm/skk-key-custom.lisp:245 scm/skk-key-custom.lisp:251
+#: scm/spellcheck-custom.lisp:72 scm/tutcode-key-custom.lisp:76
+#: scm/tutcode-key-custom.lisp:82 scm/tutcode-key-custom.lisp:88
+#: scm/tutcode-key-custom.lisp:95
 msgid "long description will be here"
 msgstr ""
 
@@ -894,97 +918,105 @@
 msgstr ""
 
 #: scm/anthy-key-custom.lisp:87
+msgid "[Anthy] convert to hiragana"
+msgstr ""
+
+#: scm/anthy-key-custom.lisp:93
 msgid "[Anthy] convert to katakana"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:93
+#: scm/anthy-key-custom.lisp:99
 msgid "[Anthy] convert to halfwidth katakana"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:99
+#: scm/anthy-key-custom.lisp:105
 msgid "[Anthy] commit as transposed kana"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:105
+#: scm/anthy-key-custom.lisp:111
 msgid "[Anthy] fullwidth alphanumeric mode"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:112
+#: scm/anthy-key-custom.lisp:118
 msgid "[Anthy] halfwidth katakana mode"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:118
+#: scm/anthy-key-custom.lisp:124
 msgid "[Anthy] toggle hiragana/katakana mode"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:129
+#: scm/anthy-key-custom.lisp:135
 msgid "[Anthy] on"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:135
+#: scm/anthy-key-custom.lisp:141
 msgid "[Anthy] off"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:141
+#: scm/anthy-key-custom.lisp:147
 msgid "[Anthy] begin conversion"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:147
+#: scm/anthy-key-custom.lisp:153
 msgid "[Anthy] commit"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:153
+#: scm/anthy-key-custom.lisp:159
 msgid "[Anthy] cancel"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:159
+#: scm/anthy-key-custom.lisp:165
 msgid "[Anthy] next candidate"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:165
+#: scm/anthy-key-custom.lisp:171
 msgid "[Anthy] previous candidate"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:171
+#: scm/anthy-key-custom.lisp:177
 msgid "[Anthy] next page of candidate window"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:177
+#: scm/anthy-key-custom.lisp:183
 msgid "[Anthy] previous page of candidate window"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:187
+#: scm/anthy-key-custom.lisp:193
 msgid "[Anthy] beginning of preedit"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:193
+#: scm/anthy-key-custom.lisp:199
 msgid "[Anthy] end of preedit"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:199
+#: scm/anthy-key-custom.lisp:205
 msgid "[Anthy] erase after cursor"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:205
+#: scm/anthy-key-custom.lisp:211
 msgid "[Anthy] erase before cursor"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:211
+#: scm/anthy-key-custom.lisp:217
 msgid "[Anthy] backspace"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:217
+#: scm/anthy-key-custom.lisp:223
 msgid "[Anthy] delete"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:223
+#: scm/anthy-key-custom.lisp:229
 msgid "[Anthy] go left"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:229
+#: scm/anthy-key-custom.lisp:235
 msgid "[Anthy] go right"
 msgstr ""
 
+#: scm/anthy-key-custom.lisp:241
+msgid "[Anthy] anthy-vi-escape-key?"
+msgstr ""
+
 #: scm/canna-custom.lisp:35
 msgid "Canna"
 msgstr ""
@@ -993,11 +1025,11 @@
 msgid "Canna server"
 msgstr ""
 
-#: scm/canna-custom.lisp:294
+#: scm/canna-custom.lisp:300
 msgid "Use Canna server"
 msgstr ""
 
-#: scm/canna-custom.lisp:300
+#: scm/canna-custom.lisp:306
 msgid "Canna server name"
 msgstr ""
 
@@ -1030,73 +1062,105 @@
 msgstr ""
 
 #: scm/canna-key-custom.lisp:75
+msgid "[Canna] convert to hiragana"
+msgstr ""
+
+#: scm/canna-key-custom.lisp:81
+msgid "[Canna] convert to katakana"
+msgstr ""
+
+#: scm/canna-key-custom.lisp:87
+msgid "[Canna] convert to halfwidth katakana"
+msgstr ""
+
+#: scm/canna-key-custom.lisp:93
 msgid "[Canna] commit as transposed kana"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:81
+#: scm/canna-key-custom.lisp:99
 msgid "[Canna] fullwidth alphanumeric mode"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:87
+#: scm/canna-key-custom.lisp:105
 msgid "[Canna] halfwidth katakana mode"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:93
+#: scm/canna-key-custom.lisp:111
 msgid "[Canna] toggle hiragana/katakana mode"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:102
+#: scm/canna-key-custom.lisp:120
 msgid "[Canna] on"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:109
+#: scm/canna-key-custom.lisp:127
 msgid "[Canna] off"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:115
+#: scm/canna-key-custom.lisp:133
 msgid "[Canna] begin conversion"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:121
+#: scm/canna-key-custom.lisp:139
 msgid "[Canna] commit"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:127
+#: scm/canna-key-custom.lisp:145
 msgid "[Canna] cancel"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:133
+#: scm/canna-key-custom.lisp:151
 msgid "[Canna] next candidate"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:139
+#: scm/canna-key-custom.lisp:157
 msgid "[Canna] previous candidate"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:160
+#: scm/canna-key-custom.lisp:163
+msgid "[Canna] next page of candidate window"
+msgstr ""
+
+#: scm/canna-key-custom.lisp:169
+msgid "[Canna] previous page of candidate window"
+msgstr ""
+
+#: scm/canna-key-custom.lisp:178
 msgid "[Canna] beginning of preedit"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:166
+#: scm/canna-key-custom.lisp:184
 msgid "[Canna] end of preedit"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:184
+#: scm/canna-key-custom.lisp:190
+msgid "[Canna] erase after cursor"
+msgstr ""
+
+#: scm/canna-key-custom.lisp:196
+msgid "[Canna] erase before cursor"
+msgstr ""
+
+#: scm/canna-key-custom.lisp:202
 msgid "[Canna] backspace"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:190
+#: scm/canna-key-custom.lisp:208
 msgid "[Canna] delete"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:196
+#: scm/canna-key-custom.lisp:214
 msgid "[Canna] go left"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:202
+#: scm/canna-key-custom.lisp:220
 msgid "[Canna] go right"
 msgstr ""
 
+#: scm/canna-key-custom.lisp:226
+msgid "[Canna] canna-vi-escape-key?"
+msgstr ""
+
 #: scm/direct.lisp:53
 msgid "direct"
 msgstr ""
@@ -1209,175 +1273,187 @@
 msgid " Mode"
 msgstr ""
 
-#: scm/hangul.lisp:93
+#: scm/hangul.lisp:107
 msgid "Hangul (2-bul)"
 msgstr "Hangul (2-bul)"
 
-#: scm/hangul.lisp:94
+#: scm/hangul.lisp:108
 msgid "2-bul style hangul input method"
 msgstr ""
 
-#: scm/hangul.lisp:102
+#: scm/hangul.lisp:116
 msgid "Hangul (3-bul)"
 msgstr "Hangul (3-bul)"
 
-#: scm/hangul.lisp:103
+#: scm/hangul.lisp:117
 msgid "3-bul style hangul input method"
 msgstr ""
 
-#: scm/hangul.lisp:110
+#: scm/hangul.lisp:124
 msgid "Hangul (Romaja)"
 msgstr "Hangul (Romaja)"
 
-#: scm/hangul.lisp:111
+#: scm/hangul.lisp:125
 msgid "Romaja input style hangul input method"
 msgstr ""
 
-#: scm/im-custom.lisp:45
+#: scm/im-custom.lisp:46
 msgid "Global settings"
 msgstr "Paramètres globaux"
 
-#: scm/im-custom.lisp:49
+#: scm/im-custom.lisp:50
 msgid "Toolbar"
 msgstr "Barre d'outils"
 
-#: scm/im-custom.lisp:54
+#: scm/im-custom.lisp:55
 msgid "Advanced settings"
 msgstr "Paramètres avancés"
 
-#: scm/im-custom.lisp:59
+#: scm/im-custom.lisp:60
 msgid "Buttons"
 msgstr "Boutons"
 
-#: scm/im-custom.lisp:64
+#: scm/im-custom.lisp:65
 msgid "Candidate window"
 msgstr "Fenêtre des candidats"
 
-#: scm/im-custom.lisp:69
+#: scm/im-custom.lisp:70
 msgid "Annotation"
 msgstr "Annotation"
 
-#: scm/im-custom.lisp:74
+#: scm/im-custom.lisp:75
 msgid "Dictionary"
 msgstr "Dictionnaire"
 
-#: scm/im-custom.lisp:84
+#: scm/im-custom.lisp:85
 msgid "Mode transition"
 msgstr ""
 
-#: scm/im-custom.lisp:89
+#: scm/im-custom.lisp:90
 msgid "Special operation"
 msgstr ""
 
-#: scm/im-custom.lisp:94 scm/im-custom.lisp:125
+#: scm/im-custom.lisp:95 scm/im-custom.lisp:126
 msgid "Default input method"
 msgstr "Méthode d'entrée par défaut"
 
-#: scm/im-custom.lisp:99
+#: scm/im-custom.lisp:100
 msgid "Input method deployment"
 msgstr ""
 
-#: scm/im-custom.lisp:104
+#: scm/im-custom.lisp:105
 msgid "Visual preference"
 msgstr ""
 
-#: scm/im-custom.lisp:115
+#: scm/im-custom.lisp:116
 msgid "Specify default IM"
 msgstr ""
 
-#: scm/im-custom.lisp:218
+#: scm/im-custom.lisp:228
 msgid "Enabled input methods"
 msgstr "Méthodes d'entrée activées"
 
-#: scm/im-custom.lisp:276 scm/skk-custom.lisp:70 scm/skk-custom.lisp:371
+#: scm/im-custom.lisp:286 scm/skk-custom.lisp:70 scm/skk-custom.lisp:370
 msgid "uim"
 msgstr "uim"
 
-#: scm/im-custom.lisp:276 scm/skk-custom.lisp:70 scm/skk-custom.lisp:371
+#: scm/im-custom.lisp:286 scm/skk-custom.lisp:70 scm/skk-custom.lisp:370
 msgid "uim native"
 msgstr "uim natif"
 
-#: scm/im-custom.lisp:277
+#: scm/im-custom.lisp:287
 msgid "ATOK like"
 msgstr "comme ATOK"
 
-#: scm/im-custom.lisp:277
+#: scm/im-custom.lisp:287
 msgid "Similar to ATOK"
 msgstr "Semblable à ATOK"
 
-#: scm/im-custom.lisp:278
+#: scm/im-custom.lisp:288
 msgid "Preedit color"
 msgstr ""
 
-#: scm/im-custom.lisp:286 scm/im-custom.lisp:287
+#: scm/im-custom.lisp:296 scm/im-custom.lisp:297
 msgid "Adjacent to cursor"
 msgstr ""
 
-#: scm/im-custom.lisp:289 scm/im-custom.lisp:290
+#: scm/im-custom.lisp:299 scm/im-custom.lisp:300
 msgid "Left end of preedit area"
 msgstr ""
 
-#: scm/im-custom.lisp:292 scm/im-custom.lisp:293
+#: scm/im-custom.lisp:302 scm/im-custom.lisp:303
 msgid "Right end of preedit area"
 msgstr ""
 
-#: scm/im-custom.lisp:294
+#: scm/im-custom.lisp:304
 msgid "Candidate window position"
 msgstr ""
 
-#: scm/im-custom.lisp:300
+#: scm/im-custom.lisp:310
 msgid "Enable lazy input method loading for fast startup"
 msgstr ""
 
-#: scm/im-custom.lisp:307
+#: scm/im-custom.lisp:317
 msgid "Show input method switcher button on toolbar"
 msgstr ""
 
-#: scm/im-custom.lisp:313
+#: scm/im-custom.lisp:323
 msgid "Show uim preference tool button on toolbar"
 msgstr ""
 
-#: scm/im-custom.lisp:319
+#: scm/im-custom.lisp:329
 msgid "Show uim Japanese dictionary tool button on toolbar"
 msgstr ""
 
-#: scm/im-custom.lisp:325
+#: scm/im-custom.lisp:335
 msgid "Show uim input pad button on toolbar"
 msgstr ""
 
-#: scm/im-custom.lisp:331
+#: scm/im-custom.lisp:341
 msgid "Show uim handwriting-input pad button on toolbar"
 msgstr ""
 
-#: scm/im-custom.lisp:337
+#: scm/im-custom.lisp:347
 msgid "Show uim help button on toolbar"
 msgstr ""
 
-#: scm/im-custom.lisp:343
+#: scm/im-custom.lisp:353
 msgid "Show input mode nearby cursor"
 msgstr ""
 
-#: scm/im-custom.lisp:350
+#: scm/im-custom.lisp:359
+msgid "Time length for showing input mode nearby the cursor"
+msgstr ""
+
+#: scm/im-custom.lisp:360
+msgid "Set 0 to show indicator always."
+msgstr ""
+
+#: scm/im-custom.lisp:366
 msgid "EB library settings"
 msgstr "Paramètres de la bibliothèque EB"
 
-#: scm/im-custom.lisp:356
+#: scm/im-custom.lisp:372
 msgid "Use EB library to search annotations"
 msgstr ""
 
-#: scm/im-custom.lisp:363
+#: scm/im-custom.lisp:379
 msgid "The directory which contains EB dictionary file"
 msgstr ""
 
-#: scm/im-custom.lisp:369
+#: scm/im-custom.lisp:385
 msgid "XIM settings"
 msgstr ""
 
-#: scm/im-custom.lisp:375
+#: scm/im-custom.lisp:389
+msgid "Preedit settings of XIM"
+msgstr ""
+
+#: scm/im-custom.lisp:395
 msgid "Use anti-aliased fonts for Over-the-Spot/Root-Window preedit"
 msgstr ""
 
-#: scm/im-custom.lisp:381
+#: scm/im-custom.lisp:401
 msgid "Font name for preedit area (anti-aliased)"
 msgstr ""
 
@@ -1385,65 +1461,96 @@
 msgid "International Phonetic Alphabet (X-SAMPA)"
 msgstr ""
 
-#. I think that the name "euro" is not appropriate since it
-#. represents nation or geographic region.  -- YamaKen 2005-01-29
-#: scm/latin.lisp:582
+#: scm/latin.lisp:720
 msgid "Latin characters"
 msgstr "Caractères latins"
 
-#: scm/latin.lisp:583
+#: scm/latin.lisp:721
 msgid "Latin characters mainly used for Latin and German languages"
 msgstr ""
 
-#: scm/m17nlib.lisp:336
+#: scm/m17nlib.lisp:338
 msgid "An input method provided by the m17n library"
 msgstr "Une méthode d'entrée fournie par la bibliothèqye m17n-lib"
 
-#: scm/prime-custom.lisp:35
+#: scm/prime-custom.lisp:34
 msgid "PRIME"
 msgstr "PRIME"
 
-#: scm/prime-custom.lisp:36
-msgid "Japanese predictable input method"
+#: scm/prime-custom.lisp:35
+msgid "Japanese predictive input method"
 msgstr ""
 
-#: scm/prime-custom.lisp:63 scm/spellcheck-custom.lisp:65
-msgid "Always showing candidate window"
+#: scm/prime-custom.lisp:42
+msgid "PRIME (advanced)"
+msgstr "PRIME (avancé)"
+
+#: scm/prime-custom.lisp:43
+msgid "Advanced settings for PRIME"
+msgstr "Paramètres avancés pour PRIME"
+
+#: scm/prime-custom.lisp:46 scm/prime-custom.lisp:52 scm/prime-custom.lisp:165
+#: uim/iso-639-1.def:105
+msgid "Japanese"
+msgstr "Japonais"
+
+#: scm/prime-custom.lisp:47
+msgid "Japanese specific settings"
 msgstr ""
 
-#: scm/prime-custom.lisp:69
+#: scm/prime-custom.lisp:53 uim/iso-639-1.def:74
+msgid "English"
+msgstr "Anglais"
+
+#: scm/prime-custom.lisp:54
+msgid "Default language"
+msgstr ""
+
+#: scm/prime-custom.lisp:60
 msgid "Enable auto register mode"
 msgstr ""
 
-#: scm/prime-custom.lisp:75
-msgid "Enable pseudo mode cursor"
+#: scm/prime-custom.lisp:66
+msgid "Wide width (Zenkaku)"
 msgstr ""
 
-#: scm/prime-custom.lisp:81
-msgid "Show candidate annotations"
+#: scm/prime-custom.lisp:67
+msgid "Half width (Hankaku)"
 msgstr ""
 
-#: scm/prime-custom.lisp:89
-msgid "Show usage examples of candidate words"
+#: scm/prime-custom.lisp:68
+msgid "Space character"
 msgstr ""
 
-#: scm/prime-custom.lisp:95
+#: scm/prime-custom.lisp:74
 msgid "Use Unix Domain Socket to communicate with PRIME"
 msgstr ""
 
-#: scm/prime-custom.lisp:101
-msgid "Mask preedit strings (For T-Code users)"
+#: scm/prime-custom.lisp:98 scm/spellcheck-custom.lisp:65
+msgid "Always showing candidate window"
 msgstr ""
 
-#: scm/prime-custom.lisp:123
+#: scm/prime-custom.lisp:105
+msgid "Show usage examples of candidate words"
+msgstr ""
+
+#: scm/prime-custom.lisp:112
+msgid "Show candidate annotations"
+msgstr ""
+
+#: scm/prime-custom.lisp:120
+msgid "Show candidate forms"
+msgstr ""
+
+#: scm/prime-custom.lisp:140
+msgid "Enable pseudo mode cursor"
+msgstr ""
+
+#: scm/prime-custom.lisp:161
 msgid "PRIME off"
 msgstr "PRIME désactivé"
 
-#: scm/prime-custom.lisp:127 uim/iso-639-1.def:103
-msgid "Japanese"
-msgstr "Japonais"
-
-#: scm/prime-custom.lisp:128
+#: scm/prime-custom.lisp:166
 msgid "PRIME on"
 msgstr "PRIME sactivé"
 
@@ -1460,27 +1567,27 @@
 msgstr ""
 
 #: scm/prime-key-custom.lisp:75
-msgid "[PRIME] regist a word"
+msgid "[PRIME] prime-register-key"
 msgstr ""
 
 #: scm/prime-key-custom.lisp:81
-msgid "[PRIME] hiragana typing mode"
+msgid "[PRIME] prime-typing-mode-hiragana-key"
 msgstr ""
 
 #: scm/prime-key-custom.lisp:87
-msgid "[PRIME] katakana typing mode"
+msgid "[PRIME] prime-typing-mode-katakana-key"
 msgstr ""
 
 #: scm/prime-key-custom.lisp:93
-msgid "[PRIME] halfwidth katakana typing mode"
+msgid "[PRIME] prime-typing-mode-hankana-key"
 msgstr ""
 
 #: scm/prime-key-custom.lisp:99
-msgid "[PRIME] wide ascii typing mode"
+msgid "[PRIME] prime-typing-mode-wideascii-key"
 msgstr ""
 
 #: scm/prime-key-custom.lisp:105
-msgid "[PRIME] ascii typing mode"
+msgid "[PRIME] prime-typing-mode-ascii-key"
 msgstr ""
 
 #: scm/prime-key-custom.lisp:114
@@ -1548,7 +1655,7 @@
 msgstr ""
 
 #: scm/pyload.lisp:42
-msgid "Pinyin (Simplified)"
+msgid "New Pinyin (Simplified)"
 msgstr "Pinyin (simplifié)"
 
 #: scm/pyload.lisp:43
@@ -1603,7 +1710,7 @@
 msgid "ddskk-like"
 msgstr ""
 
-#: scm/skk-custom.lisp:71 scm/skk-custom.lisp:370
+#: scm/skk-custom.lisp:71 scm/skk-custom.lisp:369
 msgid "Similar to ddskk"
 msgstr "Semblable à ddskk"
 
@@ -1615,63 +1722,59 @@
 msgid "Set candidate window behavior manually"
 msgstr ""
 
-#: scm/skk-custom.lisp:328
+#: scm/skk-custom.lisp:327
 msgid "Use skkserv instead of SKK-JISYO"
 msgstr ""
 
-#: scm/skk-custom.lisp:334
+#: scm/skk-custom.lisp:333
 msgid "Port number of skkserv"
 msgstr ""
 
-#: scm/skk-custom.lisp:346
+#: scm/skk-custom.lisp:345
 msgid "Dictionary file"
 msgstr "Fichier dictionnaire"
 
-#: scm/skk-custom.lisp:353
+#: scm/skk-custom.lisp:352
 msgid "Personal dictionary file"
 msgstr "Fichier du dictionnaire personnel"
 
-#: scm/skk-custom.lisp:360
+#: scm/skk-custom.lisp:359
 msgid "Personal dictionary file (dedicated to uim)"
 msgstr ""
 
-#: scm/skk-custom.lisp:370
+#: scm/skk-custom.lisp:369
 msgid "ddskk"
 msgstr "ddskk"
 
-#: scm/skk-custom.lisp:372
+#: scm/skk-custom.lisp:371
 msgid "Visual style"
 msgstr "Style visuel"
 
-#: scm/skk-custom.lisp:378
+#: scm/skk-custom.lisp:377
 msgid "Use recursive learning"
 msgstr ""
 
-#: scm/skk-custom.lisp:384
+#: scm/skk-custom.lisp:383
 msgid "Use numeric conversion"
 msgstr ""
 
-#: scm/skk-custom.lisp:390
+#: scm/skk-custom.lisp:389
 msgid "Enable auto conversion with punctuation marks"
 msgstr ""
 
-#: scm/skk-custom.lisp:400
+#: scm/skk-custom.lisp:399
 msgid "Show annotation of candidate word"
 msgstr ""
 
-#: scm/skk-custom.lisp:406
+#: scm/skk-custom.lisp:405
 msgid "Show annotation also in preedit area"
 msgstr ""
 
-#: scm/skk-custom.lisp:427
-msgid "Friendly for vi user"
-msgstr ""
-
-#: scm/skk-custom.lisp:433
+#: scm/skk-custom.lisp:432
 msgid "Use Enter key as just committing (egg-like operation)"
 msgstr ""
 
-#: scm/skk-custom.lisp:440
+#: scm/skk-custom.lisp:439
 msgid "Commit newline as ASCII string instead of native key-event"
 msgstr ""
 
@@ -1763,31 +1866,35 @@
 msgid "[SKK] skk-state-direct-no-preedit-nop-key?"
 msgstr ""
 
-#: scm/skk-key-custom.lisp:208
+#: scm/skk-key-custom.lisp:196
+msgid "[SKK] skk-purge-candidate-key?"
+msgstr ""
+
+#: scm/skk-key-custom.lisp:214
 msgid "[SKK] next candidate"
 msgstr ""
 
-#: scm/skk-key-custom.lisp:214
+#: scm/skk-key-custom.lisp:220
 msgid "[SKK] previous candidate"
 msgstr ""
 
-#: scm/skk-key-custom.lisp:220
+#: scm/skk-key-custom.lisp:226
 msgid "[SKK] next page of candidate window"
 msgstr ""
 
-#: scm/skk-key-custom.lisp:226
+#: scm/skk-key-custom.lisp:232
 msgid "[SKK] previous page of candidate window"
 msgstr ""
 
-#: scm/skk-key-custom.lisp:232
+#: scm/skk-key-custom.lisp:238
 msgid "[SKK] backspace"
 msgstr ""
 
-#: scm/skk-key-custom.lisp:238
+#: scm/skk-key-custom.lisp:244
 msgid "[SKK] go left"
 msgstr ""
 
-#: scm/skk-key-custom.lisp:244
+#: scm/skk-key-custom.lisp:250
 msgid "[SKK] go right"
 msgstr ""
 
@@ -1937,520 +2044,528 @@
 msgstr ""
 
 #: uim/iso-639-1.def:52
+msgid "Bengali"
+msgstr ""
+
+#: uim/iso-639-1.def:53
 msgid "Bhutani"
 msgstr ""
 
-#: uim/iso-639-1.def:53
+#: uim/iso-639-1.def:54
 msgid "Bihari"
 msgstr "Bihari"
 
-#: uim/iso-639-1.def:54
+#: uim/iso-639-1.def:55
 msgid "Bislama"
 msgstr "Bislama"
 
-#: uim/iso-639-1.def:55
+#: uim/iso-639-1.def:56
 msgid "Breton"
 msgstr "Breton"
 
-#: uim/iso-639-1.def:56
+#: uim/iso-639-1.def:57
 msgid "Bulgarian"
 msgstr "Bulgare"
 
-#: uim/iso-639-1.def:57
+#: uim/iso-639-1.def:58
 msgid "Burmese"
 msgstr "Birman"
 
-#: uim/iso-639-1.def:58
+#: uim/iso-639-1.def:59
 msgid "Byelorussian (Belarusian)"
 msgstr ""
 
-#: uim/iso-639-1.def:59
+#: uim/iso-639-1.def:60
+msgid "Byelorussian"
+msgstr ""
+
+#: uim/iso-639-1.def:61
 msgid "Cambodian"
 msgstr "Cambodgien"
 
-#: uim/iso-639-1.def:60
+#: uim/iso-639-1.def:62
 msgid "Catalan"
 msgstr "Catalan"
 
-#: uim/iso-639-1.def:61
+#: uim/iso-639-1.def:63
 msgid "Chewa"
 msgstr ""
 
-#: uim/iso-639-1.def:62
+#: uim/iso-639-1.def:64
 msgid "Chinese (Simplified)"
 msgstr "Chinois (simplifié)"
 
-#: uim/iso-639-1.def:63 uim/iso-639-1.def:64
+#: uim/iso-639-1.def:65 uim/iso-639-1.def:66
 msgid "Chinese (Traditional)"
 msgstr "Chinois (traditionnel)"
 
-#: uim/iso-639-1.def:65
+#: uim/iso-639-1.def:67
 msgid "Chinese"
 msgstr "Chinois"
 
-#: uim/iso-639-1.def:66
+#: uim/iso-639-1.def:68
 msgid "Corsican"
 msgstr "Corse"
 
-#: uim/iso-639-1.def:67
+#: uim/iso-639-1.def:69
 msgid "Croatian"
 msgstr "Croate"
 
-#: uim/iso-639-1.def:68
+#: uim/iso-639-1.def:70
 msgid "Czech"
 msgstr "Tchèque"
 
-#: uim/iso-639-1.def:69
+#: uim/iso-639-1.def:71
 msgid "Danish"
 msgstr "Danois"
 
-#: uim/iso-639-1.def:70
-msgid "Divehi"
+#: uim/iso-639-1.def:72
+msgid "Dhivehi"
 msgstr ""
 
-#: uim/iso-639-1.def:71
+#: uim/iso-639-1.def:73
 msgid "Dutch"
 msgstr "Hollandais"
 
-#: uim/iso-639-1.def:72
-msgid "English"
-msgstr "Anglais"
-
-#: uim/iso-639-1.def:73
+#: uim/iso-639-1.def:75
 msgid "Esperanto"
 msgstr "Esperanto"
 
-#: uim/iso-639-1.def:74
+#: uim/iso-639-1.def:76
 msgid "Estonian"
 msgstr "Estonien"
 
-#: uim/iso-639-1.def:75
+#: uim/iso-639-1.def:77
 msgid "Faeroese"
 msgstr ""
 
-#: uim/iso-639-1.def:76
+#: uim/iso-639-1.def:78
 msgid "Farsi"
 msgstr "Farsi"
 
-#: uim/iso-639-1.def:77
+#: uim/iso-639-1.def:79
 msgid "Fiji"
 msgstr "ÃŽles Fidji"
 
-#: uim/iso-639-1.def:78
+#: uim/iso-639-1.def:80
 msgid "Finnish"
 msgstr "Finlandais"
 
-#: uim/iso-639-1.def:79
+#: uim/iso-639-1.def:81
 msgid "Flemish"
 msgstr ""
 
 #. defined as "nl" in the source
-#: uim/iso-639-1.def:80
+#: uim/iso-639-1.def:82
 msgid "French"
 msgstr "Français"
 
-#: uim/iso-639-1.def:81
+#: uim/iso-639-1.def:83
 msgid "Frisian"
 msgstr "Frisian"
 
-#: uim/iso-639-1.def:82
+#: uim/iso-639-1.def:84
 msgid "Galician"
 msgstr "Galicien"
 
-#: uim/iso-639-1.def:83
+#: uim/iso-639-1.def:85
 msgid "Gaelic (Scottish)"
 msgstr "Gaélique d'Écosse"
 
-#: uim/iso-639-1.def:84
+#: uim/iso-639-1.def:86
 msgid "Gaelic (Manx)"
 msgstr "Gaélique (Man)"
 
-#: uim/iso-639-1.def:85
+#: uim/iso-639-1.def:87
 msgid "Georgian"
 msgstr "Georgien"
 
-#: uim/iso-639-1.def:86
+#: uim/iso-639-1.def:88
 msgid "German"
 msgstr "Allemand"
 
-#: uim/iso-639-1.def:87
+#: uim/iso-639-1.def:89
 msgid "Greek"
 msgstr "Grec"
 
-#: uim/iso-639-1.def:88
+#: uim/iso-639-1.def:90
 msgid "Greenlandic"
 msgstr "Groenlandais"
 
-#: uim/iso-639-1.def:89
+#: uim/iso-639-1.def:91
 msgid "Guarani"
 msgstr "Guarani"
 
-#: uim/iso-639-1.def:90
+#: uim/iso-639-1.def:92
 msgid "Gujarati"
 msgstr "Gujarati"
 
-#: uim/iso-639-1.def:91
+#: uim/iso-639-1.def:93
 msgid "Hausa"
 msgstr "Hausa"
 
-#: uim/iso-639-1.def:92
+#: uim/iso-639-1.def:94
 msgid "Hebrew"
 msgstr "Hébreu"
 
-#: uim/iso-639-1.def:93
+#: uim/iso-639-1.def:95
 msgid "Hindi"
 msgstr "Hindi"
 
-#: uim/iso-639-1.def:94
+#: uim/iso-639-1.def:96
 msgid "Hungarian"
 msgstr "Hongrois"
 
-#: uim/iso-639-1.def:95
+#: uim/iso-639-1.def:97
 msgid "Icelandic"
 msgstr "Islandais"
 
-#: uim/iso-639-1.def:96
+#: uim/iso-639-1.def:98
 msgid "Indonesian"
 msgstr "Indonésien"
 
-#: uim/iso-639-1.def:97
+#: uim/iso-639-1.def:99
 msgid "Interlingua"
 msgstr "Interlingua"
 
-#: uim/iso-639-1.def:98
+#: uim/iso-639-1.def:100
 msgid "Interlingue"
 msgstr "Interlangue"
 
-#: uim/iso-639-1.def:99
+#: uim/iso-639-1.def:101
 msgid "Inuktitut"
 msgstr "Inuktitut"
 
-#: uim/iso-639-1.def:100
+#: uim/iso-639-1.def:102
 msgid "Inupiak"
 msgstr ""
 
-#: uim/iso-639-1.def:101
+#: uim/iso-639-1.def:103
 msgid "Irish"
 msgstr "Irlandais"
 
-#: uim/iso-639-1.def:102
+#: uim/iso-639-1.def:104
 msgid "Italian"
 msgstr "Italien"
 
-#: uim/iso-639-1.def:104
+#: uim/iso-639-1.def:106
 msgid "Javanese"
 msgstr "Javanais"
 
-#: uim/iso-639-1.def:105
+#: uim/iso-639-1.def:107
 msgid "Kannada"
 msgstr "Kannada"
 
-#: uim/iso-639-1.def:106
+#: uim/iso-639-1.def:108
 msgid "Kashmiri"
 msgstr "Kashmiri"
 
-#: uim/iso-639-1.def:107
+#: uim/iso-639-1.def:109
 msgid "Kazakh"
 msgstr "Kazakh"
 
-#: uim/iso-639-1.def:108
+#: uim/iso-639-1.def:110
 msgid "Kinyarwanda (Ruanda)"
 msgstr ""
 
-#: uim/iso-639-1.def:109
+#: uim/iso-639-1.def:111
 msgid "Kirghiz"
 msgstr "Kirghiz"
 
-#: uim/iso-639-1.def:110
+#: uim/iso-639-1.def:112
 msgid "Kirundi (Rundi)"
 msgstr ""
 
-#: uim/iso-639-1.def:111
+#: uim/iso-639-1.def:113
 msgid "Konkani"
 msgstr ""
 
 #. defined as "kok" in ISO 639-2
-#: uim/iso-639-1.def:112
+#: uim/iso-639-1.def:114
 msgid "Korean"
 msgstr "Coréen"
 
-#: uim/iso-639-1.def:113
+#: uim/iso-639-1.def:115
 msgid "Kurdish"
 msgstr "Kurde"
 
-#: uim/iso-639-1.def:114
+#: uim/iso-639-1.def:116
 msgid "Laothian"
 msgstr "Laotien"
 
-#: uim/iso-639-1.def:115
+#: uim/iso-639-1.def:117
 msgid "Latin"
 msgstr "Latin"
 
-#: uim/iso-639-1.def:116
+#: uim/iso-639-1.def:118
 msgid "Latvian (Lettish)"
 msgstr ""
 
-#: uim/iso-639-1.def:117
+#: uim/iso-639-1.def:119
 msgid "Lingala"
 msgstr "Lingala"
 
-#: uim/iso-639-1.def:118
+#: uim/iso-639-1.def:120
 msgid "Lithuanian"
 msgstr "Lituanien"
 
-#: uim/iso-639-1.def:119
+#: uim/iso-639-1.def:121
 msgid "Macedonian"
 msgstr "Macédonien"
 
-#: uim/iso-639-1.def:120
+#: uim/iso-639-1.def:122
 msgid "Malagasy"
 msgstr "Malagasy"
 
-#: uim/iso-639-1.def:121
+#: uim/iso-639-1.def:123
 msgid "Malay"
 msgstr "Malay"
 
-#: uim/iso-639-1.def:122
+#: uim/iso-639-1.def:124
 msgid "Malayalam"
 msgstr "Malayalam"
 
-#: uim/iso-639-1.def:123
+#: uim/iso-639-1.def:125
 msgid "Maltese"
 msgstr "Maltais"
 
-#: uim/iso-639-1.def:124
+#: uim/iso-639-1.def:126
 msgid "Maori"
 msgstr "Maori"
 
-#: uim/iso-639-1.def:125
+#: uim/iso-639-1.def:127
 msgid "Marathi"
 msgstr "Marathi"
 
-#: uim/iso-639-1.def:126
+#: uim/iso-639-1.def:128
 msgid "Moldavian"
 msgstr "Moldave"
 
-#: uim/iso-639-1.def:127
+#: uim/iso-639-1.def:129
 msgid "Mongolian"
 msgstr "Mongol"
 
-#: uim/iso-639-1.def:128
+#: uim/iso-639-1.def:130
+msgid "Myanmar"
+msgstr ""
+
+#: uim/iso-639-1.def:131
 msgid "Nauru"
 msgstr "Nauru"
 
-#: uim/iso-639-1.def:129
+#: uim/iso-639-1.def:132
 msgid "Nepali"
 msgstr "Népalais"
 
-#: uim/iso-639-1.def:130
+#: uim/iso-639-1.def:133
 msgid "Norwegian"
 msgstr "Norvégien"
 
-#: uim/iso-639-1.def:131
+#: uim/iso-639-1.def:134
 msgid "Occitan"
 msgstr "Occitan"
 
-#: uim/iso-639-1.def:132
+#: uim/iso-639-1.def:135
 msgid "Oriya"
 msgstr "Oriya"
 
-#: uim/iso-639-1.def:133
+#: uim/iso-639-1.def:136
 msgid "Oromo (Afan, Galla)"
 msgstr ""
 
-#: uim/iso-639-1.def:134
+#: uim/iso-639-1.def:137
 msgid "Pashto (Pushto)"
 msgstr ""
 
-#: uim/iso-639-1.def:135
+#: uim/iso-639-1.def:138
 msgid "Polish"
 msgstr "Polonais"
 
-#: uim/iso-639-1.def:136
+#: uim/iso-639-1.def:139
 msgid "Portuguese"
 msgstr "Portugais"
 
-#: uim/iso-639-1.def:137
+#: uim/iso-639-1.def:140
 msgid "Punjabi"
 msgstr "Punjabi"
 
-#: uim/iso-639-1.def:138
+#: uim/iso-639-1.def:141
 msgid "Quechua"
 msgstr "Quechua"
 
-#: uim/iso-639-1.def:139
+#: uim/iso-639-1.def:142
 msgid "Romanian"
 msgstr "Roumain"
 
-#: uim/iso-639-1.def:140
+#: uim/iso-639-1.def:143
 msgid "Russian"
 msgstr "Russe"
 
-#: uim/iso-639-1.def:141
+#: uim/iso-639-1.def:144
 msgid "Samoan"
 msgstr "Samoan"
 
-#: uim/iso-639-1.def:142
+#: uim/iso-639-1.def:145
 msgid "Sangro"
 msgstr ""
 
-#: uim/iso-639-1.def:143
+#: uim/iso-639-1.def:146
 msgid "Sanskrit"
 msgstr "Sanskrit"
 
-#: uim/iso-639-1.def:144
+#: uim/iso-639-1.def:147
 msgid "Serbian"
 msgstr "Serbe"
 
-#: uim/iso-639-1.def:145
+#: uim/iso-639-1.def:148
 msgid "Sesotho"
 msgstr ""
 
-#: uim/iso-639-1.def:146
+#: uim/iso-639-1.def:149
 msgid "Setswana"
 msgstr ""
 
-#: uim/iso-639-1.def:147
+#: uim/iso-639-1.def:150
 msgid "Shona"
 msgstr "Shona"
 
-#: uim/iso-639-1.def:148
+#: uim/iso-639-1.def:151
 msgid "Sindhi"
 msgstr "Sindhi"
 
-#: uim/iso-639-1.def:149
+#: uim/iso-639-1.def:152
 msgid "Sinhalese"
 msgstr "Sinhalese"
 
-#: uim/iso-639-1.def:150
+#: uim/iso-639-1.def:153
 msgid "Siswati"
 msgstr ""
 
-#: uim/iso-639-1.def:151
+#: uim/iso-639-1.def:154
 msgid "Slovak"
 msgstr "Slovaque"
 
-#: uim/iso-639-1.def:152
+#: uim/iso-639-1.def:155
 msgid "Slovenian"
 msgstr "Slovène"
 
-#: uim/iso-639-1.def:153
+#: uim/iso-639-1.def:156
 msgid "Somali"
 msgstr "Somalien"
 
-#: uim/iso-639-1.def:154
+#: uim/iso-639-1.def:157
 msgid "Spanish"
 msgstr "Espagnol"
 
-#: uim/iso-639-1.def:155
+#: uim/iso-639-1.def:158
 msgid "Sundanese"
 msgstr "Soundanais"
 
-#: uim/iso-639-1.def:156
+#: uim/iso-639-1.def:159
 msgid "Swahili (Kiswahili)"
 msgstr "Swahili (Kiswahili)"
 
-#: uim/iso-639-1.def:157
+#: uim/iso-639-1.def:160
 msgid "Swedish"
 msgstr "Suédois"
 
-#: uim/iso-639-1.def:158
+#: uim/iso-639-1.def:161
 msgid "Syriac"
 msgstr "Syriaque"
 
 #. defined as "syr" in ISO 639-2
-#: uim/iso-639-1.def:159
+#: uim/iso-639-1.def:162
 msgid "Tagalog"
 msgstr "Tagalog"
 
-#: uim/iso-639-1.def:160
+#: uim/iso-639-1.def:163
 msgid "Tajik"
 msgstr "Tajikistanais"
 
-#: uim/iso-639-1.def:161
+#: uim/iso-639-1.def:164
 msgid "Tamil"
 msgstr "Tamoul"
 
-#: uim/iso-639-1.def:162
+#: uim/iso-639-1.def:165
 msgid "Tatar"
 msgstr "Tatar"
 
-#: uim/iso-639-1.def:163
+#: uim/iso-639-1.def:166
 msgid "Telugu"
 msgstr "Telugu"
 
-#: uim/iso-639-1.def:164
+#: uim/iso-639-1.def:167
 msgid "Thai"
 msgstr "Thaïlandais"
 
-#: uim/iso-639-1.def:165
+#: uim/iso-639-1.def:168
 msgid "Tibetan"
 msgstr "Tibétain"
 
-#: uim/iso-639-1.def:166
+#: uim/iso-639-1.def:169
 msgid "Tigrinya"
 msgstr "Tigrinya"
 
-#: uim/iso-639-1.def:167
+#: uim/iso-639-1.def:170
 msgid "Tonga"
 msgstr "Tonga"
 
-#: uim/iso-639-1.def:168
+#: uim/iso-639-1.def:171
 msgid "Tsonga"
 msgstr "Tsonga"
 
-#: uim/iso-639-1.def:169
+#: uim/iso-639-1.def:172
 msgid "Turkish"
 msgstr "Turque"
 
-#: uim/iso-639-1.def:170
+#: uim/iso-639-1.def:173
 msgid "Turkmen"
 msgstr "Turkmène"
 
-#: uim/iso-639-1.def:171
+#: uim/iso-639-1.def:174
 msgid "Twi"
 msgstr "Twi"
 
-#: uim/iso-639-1.def:172
+#: uim/iso-639-1.def:175
 msgid "Uighur"
 msgstr "Uighur"
 
-#: uim/iso-639-1.def:173
+#: uim/iso-639-1.def:176
 msgid "Ukrainian"
 msgstr "Ukrainien"
 
-#: uim/iso-639-1.def:174
+#: uim/iso-639-1.def:177
 msgid "Urdu"
 msgstr "Urdu"
 
-#: uim/iso-639-1.def:175
+#: uim/iso-639-1.def:178
 msgid "Uzbek"
 msgstr "Ouzbek"
 
-#: uim/iso-639-1.def:176
+#: uim/iso-639-1.def:179
 msgid "Vietnamese"
 msgstr "Vietnamien"
 
-#: uim/iso-639-1.def:177
+#: uim/iso-639-1.def:180
 msgid "Welsh"
 msgstr "Gallois"
 
-#: uim/iso-639-1.def:178
+#: uim/iso-639-1.def:181
 msgid "Wolof"
 msgstr "Wolof"
 
-#: uim/iso-639-1.def:179
+#: uim/iso-639-1.def:182
 msgid "Xhosa"
 msgstr "Xhosa"
 
-#: uim/iso-639-1.def:180
+#: uim/iso-639-1.def:183
 msgid "Yiddish"
 msgstr "Yiddish"
 
-#: uim/iso-639-1.def:181
+#: uim/iso-639-1.def:184
 msgid "Yoruba"
 msgstr "Yoruba"
 
-#: uim/iso-639-1.def:182
+#: uim/iso-639-1.def:185
 msgid "Zulu"
 msgstr "Zoulou"

Modified: branches/r5rs/po/ja.po
===================================================================
--- branches/r5rs/po/ja.po	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/po/ja.po	2005-09-14 22:20:37 UTC (rev 1497)
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: uim 0.4.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-06-07 18:18+0900\n"
+"POT-Creation-Date: 2005-09-09 14:09+0900\n"
 "PO-Revision-Date: 2005-02-24 19:28+0900\n"
 "Last-Translator: YamaKen <yamaken at bp.iij4u.or.jp>\n"
 "Language-Team: Japanese <LL at li.org>\n"
@@ -53,24 +53,24 @@
 msgid "Description"
 msgstr "ÀâÌÀ"
 
-#: helper/im-switcher-gtk.c:322 qt/switcher-qt.cpp:67
+#: helper/im-switcher-gtk.c:323 qt/switcher-qt.cpp:67
 msgid "uim input method switcher"
 msgstr "ÆþÎÏÊý¼°¤ÎÀÚ¤êÂؤ¨"
 
-#: helper/im-switcher-gtk.c:348 qt/switcher-qt.cpp:105
+#: helper/im-switcher-gtk.c:352 qt/switcher-qt.cpp:105
 msgid "Changing way"
 msgstr "ÀÚ¤êÂؤ¨ÊýË¡"
 
-#: helper/im-switcher-gtk.c:356 qt/switcher-qt.cpp:106
+#: helper/im-switcher-gtk.c:360 qt/switcher-qt.cpp:106
 msgid "Change whole desktop"
 msgstr "¥Ç¥¹¥¯¥È¥Ã¥×Á´ÂΤòÀÚ¤êÂؤ¨"
 
 #. default is "Change whole desktop"
-#: helper/im-switcher-gtk.c:357 qt/switcher-qt.cpp:109
+#: helper/im-switcher-gtk.c:361 qt/switcher-qt.cpp:109
 msgid "Change this application only"
 msgstr "¤³¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¤ßÀÚ¤êÂؤ¨"
 
-#: helper/im-switcher-gtk.c:358 qt/switcher-qt.cpp:111
+#: helper/im-switcher-gtk.c:362 qt/switcher-qt.cpp:111
 msgid "Change this text area only"
 msgstr "¤³¤Î¥Æ¥­¥¹¥È¥¨¥ê¥¢¤Î¤ßÀÚ¤êÂؤ¨"
 
@@ -338,7 +338,7 @@
 msgid "Example"
 msgstr "Îã"
 
-#: helper/pref-gtk.c:118
+#: helper/pref-gtk.c:144
 msgid ""
 "Some value(s) have been changed.\n"
 "Save?"
@@ -346,7 +346,7 @@
 "ÀßÄ꤬Êѹ¹¤µ¤ì¤Æ¤¤¤Þ¤¹¡£\n"
 "¥»¡¼¥Ö¤·¤Þ¤¹¤«?"
 
-#: helper/pref-gtk.c:190
+#: helper/pref-gtk.c:216
 msgid ""
 "Some value(s) have been changed.\n"
 "Do you realy quit this program?"
@@ -354,16 +354,32 @@
 "ÀßÄ꤬Êѹ¹¤µ¤ì¤Æ¤¤¤Þ¤¹¡£\n"
 "ËÜÅö¤Ë½ªÎ»¤·¤Þ¤¹¤«?"
 
-#: helper/pref-gtk.c:229 qt/pref-qt.cpp:138
+#: helper/pref-gtk.c:255 qt/pref-qt.cpp:138
 msgid "Group"
 msgstr "¥°¥ë¡¼¥×"
 
 #. Defaults button
-#: helper/pref-gtk.c:319
+#: helper/pref-gtk.c:347
 msgid "_Defaults"
 msgstr "¥Ç¥Õ¥©¥ë¥È(_D)"
 
-#: helper/pref-gtk.c:481
+#: helper/pref-gtk.c:352
+msgid "Revert all changes to default"
+msgstr ""
+
+#: helper/pref-gtk.c:362
+msgid "Apply all changes"
+msgstr ""
+
+#: helper/pref-gtk.c:370
+msgid "Quit this application without applying changes"
+msgstr ""
+
+#: helper/pref-gtk.c:381
+msgid "Quit this application with applying changes"
+msgstr ""
+
+#: helper/pref-gtk.c:530
 msgid ""
 "The user customize file \"~/.uim\" is found.\n"
 "This file will override all conflicted settings set by\n"
@@ -375,56 +391,56 @@
 "(\"~/.uim.d/customs/*.scm\") ¤è¤ê¤âÍ¥À褵¤ì¤Þ¤¹¡£\n"
 "ÀßÄ꤬ȿ±Ç¤µ¤ì¤Ê¤¤¾ì¹ç¤Ï¡¢¤³¤Î¥Õ¥¡¥¤¥ë¤ò¥Á¥§¥Ã¥¯¤·¤Æ²¼¤µ¤¤¡£"
 
-#: helper/pref-gtk-custom-widgets.c:382
+#: helper/pref-gtk-custom-widgets.c:384
 msgid "Specify file"
 msgstr "¥Õ¥¡¥¤¥ë¤Î»ØÄê"
 
-#: helper/pref-gtk-custom-widgets.c:419
+#: helper/pref-gtk-custom-widgets.c:421
 msgid "File..."
 msgstr "»²¾È..."
 
-#: helper/pref-gtk-custom-widgets.c:1108
+#: helper/pref-gtk-custom-widgets.c:1110
 msgid "Enabled"
 msgstr "Í­¸ú"
 
-#: helper/pref-gtk-custom-widgets.c:1134
+#: helper/pref-gtk-custom-widgets.c:1136
 msgid "Enabled items"
 msgstr "Í­¸ú¤Ê¹àÌÜ"
 
-#: helper/pref-gtk-custom-widgets.c:1212
+#: helper/pref-gtk-custom-widgets.c:1214
 msgid "Disabled"
 msgstr "̵¸ú"
 
-#: helper/pref-gtk-custom-widgets.c:1238
+#: helper/pref-gtk-custom-widgets.c:1240
 msgid "Disabled items"
 msgstr "̵¸ú¤Ê¹àÌÜ"
 
-#: helper/pref-gtk-custom-widgets.c:1276 helper/pref-gtk-custom-widgets.c:1865
+#: helper/pref-gtk-custom-widgets.c:1278 helper/pref-gtk-custom-widgets.c:1867
 msgid "Edit..."
 msgstr "ÊÔ½¸..."
 
-#: helper/pref-gtk-custom-widgets.c:1484 qt/pref-customwidgets.cpp:839
+#: helper/pref-gtk-custom-widgets.c:1486 qt/pref-customwidgets.cpp:839
 msgid "Press keys to grab (e.g. <Control>a)"
 msgstr "¼èÆÀ¤¹¤ë¥­¡¼¤ò²¡¤·¤Æ²¼¤µ¤¤ (Îã:<Control>a)"
 
-#: helper/pref-gtk-custom-widgets.c:1485
+#: helper/pref-gtk-custom-widgets.c:1487
 msgid "Grabbing keys"
 msgstr "¥­¡¼¤ò¼èÆÀÃæ"
 
-#: helper/pref-gtk-custom-widgets.c:1706
+#: helper/pref-gtk-custom-widgets.c:1708
 #, c-format
 msgid "%s - key configuration"
 msgstr "%s - ¥­¡¼ÀßÄê"
 
-#: helper/pref-gtk-custom-widgets.c:1743
+#: helper/pref-gtk-custom-widgets.c:1745
 msgid "Key preference"
 msgstr "¥­¡¼ÀßÄê"
 
-#: helper/pref-gtk-custom-widgets.c:1789
+#: helper/pref-gtk-custom-widgets.c:1791
 msgid "Key:"
 msgstr "¥­¡¼:"
 
-#: helper/pref-gtk-custom-widgets.c:1810
+#: helper/pref-gtk-custom-widgets.c:1812
 msgid "Grab..."
 msgstr "¼èÆÀ..."
 
@@ -638,43 +654,46 @@
 #: scm/anthy-custom.lisp:78 scm/anthy-custom.lisp:84 scm/anthy-custom.lisp:90
 #: scm/anthy-custom.lisp:173 scm/anthy-custom.lisp:192
 #: scm/anthy-custom.lisp:201 scm/anthy-custom.lisp:243
-#: scm/anthy-custom.lisp:252 scm/anthy-key-custom.lisp:37
-#: scm/anthy-key-custom.lisp:41 scm/anthy-key-custom.lisp:45
-#: scm/canna-custom.lisp:44 scm/canna-custom.lisp:55 scm/canna-custom.lisp:61
-#: scm/canna-custom.lisp:76 scm/canna-custom.lisp:82 scm/canna-custom.lisp:88
-#: scm/canna-custom.lisp:167 scm/canna-custom.lisp:186
-#: scm/canna-custom.lisp:195 scm/canna-custom.lisp:237
-#: scm/canna-custom.lisp:246 scm/canna-custom.lisp:295
-#: scm/canna-custom.lisp:301 scm/canna-key-custom.lisp:37
-#: scm/canna-key-custom.lisp:41 scm/canna-key-custom.lisp:45
-#: scm/generic-custom.lisp:37 scm/generic-custom.lisp:43
-#: scm/generic-custom.lisp:49 scm/generic-custom.lisp:55
-#: scm/generic-custom.lisp:61 scm/generic-key-custom.lisp:37
-#: scm/generic-key-custom.lisp:41 scm/im-custom.lisp:46 scm/im-custom.lisp:50
-#: scm/im-custom.lisp:55 scm/im-custom.lisp:60 scm/im-custom.lisp:65
-#: scm/im-custom.lisp:70 scm/im-custom.lisp:75 scm/im-custom.lisp:80
-#: scm/im-custom.lisp:85 scm/im-custom.lisp:90 scm/im-custom.lisp:95
-#: scm/im-custom.lisp:100 scm/im-custom.lisp:105 scm/im-custom.lisp:116
-#: scm/im-custom.lisp:126 scm/im-custom.lisp:219 scm/im-custom.lisp:279
-#: scm/im-custom.lisp:295 scm/im-custom.lisp:301 scm/im-custom.lisp:308
-#: scm/im-custom.lisp:314 scm/im-custom.lisp:320 scm/im-custom.lisp:326
-#: scm/im-custom.lisp:332 scm/im-custom.lisp:338 scm/im-custom.lisp:344
-#: scm/im-custom.lisp:351 scm/im-custom.lisp:357 scm/im-custom.lisp:364
-#: scm/im-custom.lisp:370 scm/im-custom.lisp:376 scm/im-custom.lisp:382
-#: scm/prime-custom.lisp:58 scm/prime-custom.lisp:64 scm/prime-custom.lisp:70
-#: scm/prime-custom.lisp:76 scm/prime-custom.lisp:82 scm/prime-custom.lisp:90
-#: scm/prime-custom.lisp:96 scm/prime-custom.lisp:102
-#: scm/prime-custom.lisp:145 scm/prime-custom.lisp:154
+#: scm/anthy-custom.lisp:252 scm/anthy-custom.lisp:290
+#: scm/anthy-key-custom.lisp:37 scm/anthy-key-custom.lisp:41
+#: scm/anthy-key-custom.lisp:45 scm/canna-custom.lisp:44
+#: scm/canna-custom.lisp:55 scm/canna-custom.lisp:61 scm/canna-custom.lisp:76
+#: scm/canna-custom.lisp:82 scm/canna-custom.lisp:88 scm/canna-custom.lisp:94
+#: scm/canna-custom.lisp:173 scm/canna-custom.lisp:192
+#: scm/canna-custom.lisp:201 scm/canna-custom.lisp:243
+#: scm/canna-custom.lisp:252 scm/canna-custom.lisp:301
+#: scm/canna-custom.lisp:307 scm/canna-custom.lisp:364
+#: scm/canna-key-custom.lisp:37 scm/canna-key-custom.lisp:41
+#: scm/canna-key-custom.lisp:45 scm/generic-custom.lisp:37
+#: scm/generic-custom.lisp:43 scm/generic-custom.lisp:49
+#: scm/generic-custom.lisp:55 scm/generic-custom.lisp:61
+#: scm/generic-key-custom.lisp:37 scm/generic-key-custom.lisp:41
+#: scm/im-custom.lisp:47 scm/im-custom.lisp:51 scm/im-custom.lisp:56
+#: scm/im-custom.lisp:61 scm/im-custom.lisp:66 scm/im-custom.lisp:71
+#: scm/im-custom.lisp:76 scm/im-custom.lisp:81 scm/im-custom.lisp:86
+#: scm/im-custom.lisp:91 scm/im-custom.lisp:96 scm/im-custom.lisp:101
+#: scm/im-custom.lisp:106 scm/im-custom.lisp:117 scm/im-custom.lisp:127
+#: scm/im-custom.lisp:229 scm/im-custom.lisp:289 scm/im-custom.lisp:305
+#: scm/im-custom.lisp:311 scm/im-custom.lisp:318 scm/im-custom.lisp:324
+#: scm/im-custom.lisp:330 scm/im-custom.lisp:336 scm/im-custom.lisp:342
+#: scm/im-custom.lisp:348 scm/im-custom.lisp:354 scm/im-custom.lisp:367
+#: scm/im-custom.lisp:373 scm/im-custom.lisp:380 scm/im-custom.lisp:386
+#: scm/im-custom.lisp:390 scm/im-custom.lisp:396 scm/im-custom.lisp:402
+#: scm/prime-custom.lisp:55 scm/prime-custom.lisp:61 scm/prime-custom.lisp:69
+#: scm/prime-custom.lisp:75 scm/prime-custom.lisp:93 scm/prime-custom.lisp:99
+#: scm/prime-custom.lisp:106 scm/prime-custom.lisp:113
+#: scm/prime-custom.lisp:121 scm/prime-custom.lisp:129
+#: scm/prime-custom.lisp:135 scm/prime-custom.lisp:141
 #: scm/prime-key-custom.lisp:61 scm/prime-key-custom.lisp:65
 #: scm/prime-key-custom.lisp:69 scm/skk-custom.lisp:59 scm/skk-custom.lisp:65
 #: scm/skk-custom.lisp:73 scm/skk-custom.lisp:79 scm/skk-custom.lisp:85
-#: scm/skk-custom.lisp:91 scm/skk-custom.lisp:218 scm/skk-custom.lisp:237
-#: scm/skk-custom.lisp:246 scm/skk-custom.lisp:277 scm/skk-custom.lisp:286
-#: scm/skk-custom.lisp:329 scm/skk-custom.lisp:335 scm/skk-custom.lisp:347
-#: scm/skk-custom.lisp:354 scm/skk-custom.lisp:361 scm/skk-custom.lisp:373
-#: scm/skk-custom.lisp:379 scm/skk-custom.lisp:385 scm/skk-custom.lisp:391
-#: scm/skk-custom.lisp:401 scm/skk-custom.lisp:407 scm/skk-custom.lisp:428
-#: scm/skk-custom.lisp:434 scm/skk-custom.lisp:441 scm/skk-key-custom.lisp:65
+#: scm/skk-custom.lisp:91 scm/skk-custom.lisp:217 scm/skk-custom.lisp:236
+#: scm/skk-custom.lisp:245 scm/skk-custom.lisp:276 scm/skk-custom.lisp:285
+#: scm/skk-custom.lisp:328 scm/skk-custom.lisp:334 scm/skk-custom.lisp:346
+#: scm/skk-custom.lisp:353 scm/skk-custom.lisp:360 scm/skk-custom.lisp:372
+#: scm/skk-custom.lisp:378 scm/skk-custom.lisp:384 scm/skk-custom.lisp:390
+#: scm/skk-custom.lisp:400 scm/skk-custom.lisp:406 scm/skk-custom.lisp:427
+#: scm/skk-custom.lisp:433 scm/skk-custom.lisp:440 scm/skk-key-custom.lisp:65
 #: scm/skk-key-custom.lisp:69 scm/skk-key-custom.lisp:73
 #: scm/skk-key-custom.lisp:78 scm/spellcheck-custom.lisp:48
 #: scm/spellcheck-custom.lisp:54 scm/spellcheck-custom.lisp:60
@@ -683,7 +702,7 @@
 msgid "long description will be here."
 msgstr "¾ÜºÙµ­½ÒͽÄê"
 
-#: scm/anthy-custom.lisp:56 scm/canna-custom.lisp:60 scm/im-custom.lisp:79
+#: scm/anthy-custom.lisp:56 scm/canna-custom.lisp:60 scm/im-custom.lisp:80
 msgid "Segment separator"
 msgstr "ʸÀá¶èÀÚ¤ê"
 
@@ -700,115 +719,119 @@
 msgstr "¸õÊ䥦¥£¥ó¥É¥¦¤Îɽ¼¨¤ò³«»Ï¤¹¤ë¤Þ¤Ç¤ÎÊÑ´¹¥­¡¼²¡²¼¿ô"
 
 #: scm/anthy-custom.lisp:83 scm/canna-custom.lisp:87
-#: scm/generic-custom.lisp:54 scm/prime-custom.lisp:57 scm/skk-custom.lisp:90
+#: scm/generic-custom.lisp:54 scm/prime-custom.lisp:92 scm/skk-custom.lisp:90
 msgid "Number of candidates in candidate window at a time"
 msgstr "¸õÊ䥦¥£¥ó¥É¥¦¤Ëɽ¼¨¤¹¤ë¸õÊä¿ô"
 
-#: scm/anthy-custom.lisp:89 scm/generic-custom.lisp:60
+#: scm/anthy-custom.lisp:89 scm/canna-custom.lisp:93
+#: scm/generic-custom.lisp:60 scm/prime-custom.lisp:128
 msgid "Select candidate by numeral keys"
 msgstr "¿ô»ú¥­¡¼¤Ç¸õÊä¤òÁªÂò¤¹¤ë"
 
-#: scm/anthy-custom.lisp:119 scm/canna-custom.lisp:113
-#: scm/prime-custom.lisp:122 scm/skk-custom.lisp:169
+#: scm/anthy-custom.lisp:119 scm/canna-custom.lisp:119
+#: scm/prime-custom.lisp:160 scm/skk-custom.lisp:168
 msgid "Direct input"
 msgstr "ľÀÜÆþÎÏ"
 
-#: scm/anthy-custom.lisp:120 scm/canna-custom.lisp:114 scm/skk-custom.lisp:170
+#: scm/anthy-custom.lisp:120 scm/canna-custom.lisp:120 scm/skk-custom.lisp:169
 msgid "Direct input mode"
 msgstr "ľÀÜÆþÎϥ⡼¥É"
 
-#: scm/anthy-custom.lisp:124 scm/canna-custom.lisp:118 scm/skk-custom.lisp:174
+#: scm/anthy-custom.lisp:124 scm/canna-custom.lisp:124 scm/skk-custom.lisp:173
 msgid "Hiragana"
 msgstr "¤Ò¤é¤¬¤Ê"
 
-#: scm/anthy-custom.lisp:125 scm/canna-custom.lisp:119 scm/skk-custom.lisp:175
+#: scm/anthy-custom.lisp:125 scm/canna-custom.lisp:125 scm/skk-custom.lisp:174
 msgid "Hiragana input mode"
 msgstr "¤Ò¤é¤¬¤ÊÆþÎϥ⡼¥É"
 
-#: scm/anthy-custom.lisp:129 scm/canna-custom.lisp:123 scm/skk-custom.lisp:179
+#: scm/anthy-custom.lisp:129 scm/canna-custom.lisp:129 scm/skk-custom.lisp:178
 msgid "Katakana"
 msgstr "¥«¥¿¥«¥Ê"
 
-#: scm/anthy-custom.lisp:130 scm/canna-custom.lisp:124 scm/skk-custom.lisp:180
+#: scm/anthy-custom.lisp:130 scm/canna-custom.lisp:130 scm/skk-custom.lisp:179
 msgid "Katakana input mode"
 msgstr "¥«¥¿¥«¥ÊÆþÎϥ⡼¥É"
 
-#: scm/anthy-custom.lisp:134 scm/canna-custom.lisp:128 scm/skk-custom.lisp:184
+#: scm/anthy-custom.lisp:134 scm/canna-custom.lisp:134 scm/skk-custom.lisp:183
 msgid "Halfwidth Katakana"
 msgstr "Ⱦ³Ñ¥«¥¿¥«¥Ê"
 
-#: scm/anthy-custom.lisp:135 scm/canna-custom.lisp:129 scm/skk-custom.lisp:185
+#: scm/anthy-custom.lisp:135 scm/canna-custom.lisp:135 scm/skk-custom.lisp:184
 msgid "Halfwidth Katakana input mode"
 msgstr "Ⱦ³Ñ¥«¥¿¥«¥ÊÆþÎϥ⡼¥É"
 
-#: scm/anthy-custom.lisp:139 scm/canna-custom.lisp:133
-#: scm/prime-custom.lisp:132 scm/skk-custom.lisp:189
+#: scm/anthy-custom.lisp:139 scm/canna-custom.lisp:139
+#: scm/prime-custom.lisp:170 scm/skk-custom.lisp:188
 msgid "Fullwidth Alphanumeric"
 msgstr "Á´³Ñ±Ñ¿ô"
 
-#: scm/anthy-custom.lisp:140 scm/canna-custom.lisp:134
-#: scm/prime-custom.lisp:133 scm/skk-custom.lisp:190
+#: scm/anthy-custom.lisp:140 scm/canna-custom.lisp:140
+#: scm/prime-custom.lisp:171 scm/skk-custom.lisp:189
 msgid "Fullwidth Alphanumeric input mode"
 msgstr "Á´³Ñ±Ñ¿ôÆþÎϥ⡼¥É"
 
-#: scm/anthy-custom.lisp:147 scm/canna-custom.lisp:141 scm/skk-custom.lisp:197
+#: scm/anthy-custom.lisp:147 scm/canna-custom.lisp:147 scm/skk-custom.lisp:196
 msgid "Romaji"
 msgstr "¥í¡¼¥Þ»ú"
 
-#: scm/anthy-custom.lisp:148 scm/canna-custom.lisp:142 scm/skk-custom.lisp:198
+#: scm/anthy-custom.lisp:148 scm/canna-custom.lisp:148 scm/skk-custom.lisp:197
 msgid "Romaji input mode"
 msgstr "¥í¡¼¥Þ»úÆþÎϥ⡼¥É"
 
-#: scm/anthy-custom.lisp:152 scm/canna-custom.lisp:146
+#: scm/anthy-custom.lisp:152 scm/canna-custom.lisp:152
 msgid "Kana"
 msgstr "¤«¤Ê"
 
-#: scm/anthy-custom.lisp:153 scm/canna-custom.lisp:147
+#: scm/anthy-custom.lisp:153 scm/canna-custom.lisp:153
 msgid "Kana input mode"
 msgstr "¤«¤ÊÆþÎϥ⡼¥É"
 
-#: scm/anthy-custom.lisp:157 scm/canna-custom.lisp:151 scm/skk-custom.lisp:202
+#: scm/anthy-custom.lisp:157 scm/canna-custom.lisp:157 scm/skk-custom.lisp:201
 msgid "AZIK"
 msgstr "AZIK"
 
-#: scm/anthy-custom.lisp:158 scm/canna-custom.lisp:152 scm/skk-custom.lisp:203
+#: scm/anthy-custom.lisp:158 scm/canna-custom.lisp:158 scm/skk-custom.lisp:202
 msgid "AZIK extended romaji input mode"
 msgstr "AZIK³ÈÄ¥¥í¡¼¥Þ»úÆþÎϥ⡼¥É"
 
 #: scm/anthy-custom.lisp:167 scm/anthy-custom.lisp:168
-#: scm/canna-custom.lisp:161 scm/canna-custom.lisp:162 scm/skk-custom.lisp:212
-#: scm/skk-custom.lisp:213
+#: scm/canna-custom.lisp:167 scm/canna-custom.lisp:168 scm/skk-custom.lisp:211
+#: scm/skk-custom.lisp:212
 msgid "Input mode"
 msgstr "ÆþÎϥ⡼¥É"
 
 #: scm/anthy-custom.lisp:170 scm/anthy-custom.lisp:171
-#: scm/canna-custom.lisp:164 scm/canna-custom.lisp:165 scm/skk-custom.lisp:215
-#: scm/skk-custom.lisp:216
+#: scm/canna-custom.lisp:170 scm/canna-custom.lisp:171 scm/skk-custom.lisp:214
+#: scm/skk-custom.lisp:215
 msgid "Kana input method"
 msgstr "¤«¤ÊÆþÎÏÊý¼°"
 
-#: scm/anthy-custom.lisp:172 scm/canna-custom.lisp:166 scm/skk-custom.lisp:217
+#: scm/anthy-custom.lisp:172 scm/canna-custom.lisp:172 scm/skk-custom.lisp:216
 msgid "Enabled toolbar buttons"
 msgstr "¥Ä¡¼¥ë¥Ð¡¼¾å¤Ëɽ¼¨¤¹¤ë¥Ü¥¿¥ó"
 
-#: scm/anthy-custom.lisp:191 scm/canna-custom.lisp:185
-#: scm/prime-custom.lisp:144 scm/skk-custom.lisp:236
+#: scm/anthy-custom.lisp:191 scm/canna-custom.lisp:191 scm/skk-custom.lisp:235
 msgid "Default input mode"
 msgstr "¥Ç¥Õ¥©¥ë¥È¤ÎÆþÎϥ⡼¥É"
 
-#: scm/anthy-custom.lisp:200 scm/canna-custom.lisp:194
-#: scm/prime-custom.lisp:153 scm/skk-custom.lisp:245
+#: scm/anthy-custom.lisp:200 scm/canna-custom.lisp:200 scm/skk-custom.lisp:244
 msgid "Input mode menu items"
 msgstr "ÆþÎϥ⡼¥É¥á¥Ë¥å¡¼¹àÌÜ"
 
-#: scm/anthy-custom.lisp:242 scm/canna-custom.lisp:236 scm/skk-custom.lisp:276
+#: scm/anthy-custom.lisp:242 scm/canna-custom.lisp:242 scm/skk-custom.lisp:275
 msgid "Default kana input method"
 msgstr "¥Ç¥Õ¥©¥ë¥È¤Î¤«¤ÊÆþÎÏÊý¼°"
 
-#: scm/anthy-custom.lisp:251 scm/canna-custom.lisp:245 scm/skk-custom.lisp:285
+#: scm/anthy-custom.lisp:251 scm/canna-custom.lisp:251 scm/skk-custom.lisp:284
 msgid "Kana input method menu items"
 msgstr "¤«¤ÊÆþÎÏÊý¼°¥á¥Ë¥å¡¼¹àÌÜ"
 
+#: scm/anthy-custom.lisp:289 scm/canna-custom.lisp:363
+#: scm/prime-custom.lisp:134 scm/skk-custom.lisp:426
+msgid "Friendly for vi user"
+msgstr "vi¤ËŬ±þ¤·¤¿ÆþÎÏÀ©¸æ¤ò»ÈÍѤ¹¤ë"
+
 #: scm/anthy-key-custom.lisp:36
 msgid "Anthy key bindings 1"
 msgstr "Anthy¥­¡¼ÀßÄê 1"
@@ -830,26 +853,31 @@
 #: scm/anthy-key-custom.lisp:76 scm/anthy-key-custom.lisp:82
 #: scm/anthy-key-custom.lisp:88 scm/anthy-key-custom.lisp:94
 #: scm/anthy-key-custom.lisp:100 scm/anthy-key-custom.lisp:106
-#: scm/anthy-key-custom.lisp:113 scm/anthy-key-custom.lisp:119
-#: scm/anthy-key-custom.lisp:130 scm/anthy-key-custom.lisp:136
+#: scm/anthy-key-custom.lisp:112 scm/anthy-key-custom.lisp:119
+#: scm/anthy-key-custom.lisp:125 scm/anthy-key-custom.lisp:136
 #: scm/anthy-key-custom.lisp:142 scm/anthy-key-custom.lisp:148
 #: scm/anthy-key-custom.lisp:154 scm/anthy-key-custom.lisp:160
 #: scm/anthy-key-custom.lisp:166 scm/anthy-key-custom.lisp:172
-#: scm/anthy-key-custom.lisp:178 scm/anthy-key-custom.lisp:188
+#: scm/anthy-key-custom.lisp:178 scm/anthy-key-custom.lisp:184
 #: scm/anthy-key-custom.lisp:194 scm/anthy-key-custom.lisp:200
 #: scm/anthy-key-custom.lisp:206 scm/anthy-key-custom.lisp:212
 #: scm/anthy-key-custom.lisp:218 scm/anthy-key-custom.lisp:224
-#: scm/anthy-key-custom.lisp:230 scm/canna-key-custom.lisp:52
+#: scm/anthy-key-custom.lisp:230 scm/anthy-key-custom.lisp:236
+#: scm/anthy-key-custom.lisp:242 scm/canna-key-custom.lisp:52
 #: scm/canna-key-custom.lisp:58 scm/canna-key-custom.lisp:64
 #: scm/canna-key-custom.lisp:70 scm/canna-key-custom.lisp:76
 #: scm/canna-key-custom.lisp:82 scm/canna-key-custom.lisp:88
-#: scm/canna-key-custom.lisp:94 scm/canna-key-custom.lisp:103
-#: scm/canna-key-custom.lisp:110 scm/canna-key-custom.lisp:116
-#: scm/canna-key-custom.lisp:122 scm/canna-key-custom.lisp:128
+#: scm/canna-key-custom.lisp:94 scm/canna-key-custom.lisp:100
+#: scm/canna-key-custom.lisp:106 scm/canna-key-custom.lisp:112
+#: scm/canna-key-custom.lisp:121 scm/canna-key-custom.lisp:128
 #: scm/canna-key-custom.lisp:134 scm/canna-key-custom.lisp:140
-#: scm/canna-key-custom.lisp:161 scm/canna-key-custom.lisp:167
+#: scm/canna-key-custom.lisp:146 scm/canna-key-custom.lisp:152
+#: scm/canna-key-custom.lisp:158 scm/canna-key-custom.lisp:164
+#: scm/canna-key-custom.lisp:170 scm/canna-key-custom.lisp:179
 #: scm/canna-key-custom.lisp:185 scm/canna-key-custom.lisp:191
 #: scm/canna-key-custom.lisp:197 scm/canna-key-custom.lisp:203
+#: scm/canna-key-custom.lisp:209 scm/canna-key-custom.lisp:215
+#: scm/canna-key-custom.lisp:221 scm/canna-key-custom.lisp:227
 #: scm/generic-key-custom.lisp:48 scm/generic-key-custom.lisp:54
 #: scm/generic-key-custom.lisp:60 scm/generic-key-custom.lisp:66
 #: scm/generic-key-custom.lisp:72 scm/generic-key-custom.lisp:78
@@ -879,12 +907,13 @@
 #: scm/skk-key-custom.lisp:161 scm/skk-key-custom.lisp:167
 #: scm/skk-key-custom.lisp:173 scm/skk-key-custom.lisp:179
 #: scm/skk-key-custom.lisp:185 scm/skk-key-custom.lisp:191
-#: scm/skk-key-custom.lisp:209 scm/skk-key-custom.lisp:215
+#: scm/skk-key-custom.lisp:197 scm/skk-key-custom.lisp:215
 #: scm/skk-key-custom.lisp:221 scm/skk-key-custom.lisp:227
 #: scm/skk-key-custom.lisp:233 scm/skk-key-custom.lisp:239
-#: scm/skk-key-custom.lisp:245 scm/spellcheck-custom.lisp:72
-#: scm/tutcode-key-custom.lisp:76 scm/tutcode-key-custom.lisp:82
-#: scm/tutcode-key-custom.lisp:88 scm/tutcode-key-custom.lisp:95
+#: scm/skk-key-custom.lisp:245 scm/skk-key-custom.lisp:251
+#: scm/spellcheck-custom.lisp:72 scm/tutcode-key-custom.lisp:76
+#: scm/tutcode-key-custom.lisp:82 scm/tutcode-key-custom.lisp:88
+#: scm/tutcode-key-custom.lisp:95
 msgid "long description will be here"
 msgstr "¾ÜºÙµ­½ÒͽÄê"
 
@@ -910,97 +939,105 @@
 msgstr "[Anthy] Á´³Ñ±Ñ¿ô¤ËÊÑ´¹"
 
 #: scm/anthy-key-custom.lisp:87
+msgid "[Anthy] convert to hiragana"
+msgstr "[Anthy] ¤Ò¤é¤¬¤Ê¤ËÊÑ´¹"
+
+#: scm/anthy-key-custom.lisp:93
 msgid "[Anthy] convert to katakana"
 msgstr "[Anthy] ¥«¥¿¥«¥Ê¤ËÊÑ´¹"
 
-#: scm/anthy-key-custom.lisp:93
+#: scm/anthy-key-custom.lisp:99
 msgid "[Anthy] convert to halfwidth katakana"
 msgstr "[Anthy] Ⱦ³Ñ¥«¥¿¥«¥Ê¤ËÊÑ´¹"
 
-#: scm/anthy-key-custom.lisp:99
+#: scm/anthy-key-custom.lisp:105
 msgid "[Anthy] commit as transposed kana"
 msgstr "[Anthy] ¤«¤Ê/¥«¥Êȿž³ÎÄê"
 
-#: scm/anthy-key-custom.lisp:105
+#: scm/anthy-key-custom.lisp:111
 msgid "[Anthy] fullwidth alphanumeric mode"
 msgstr "[Anthy] Á´³Ñ±Ñ¿ôÆþÎϥ⡼¥É"
 
-#: scm/anthy-key-custom.lisp:112
+#: scm/anthy-key-custom.lisp:118
 msgid "[Anthy] halfwidth katakana mode"
 msgstr "[Anthy] Ⱦ³Ñ¥«¥¿¥«¥ÊÆþÎϥ⡼¥É"
 
-#: scm/anthy-key-custom.lisp:118
+#: scm/anthy-key-custom.lisp:124
 msgid "[Anthy] toggle hiragana/katakana mode"
 msgstr "[Anthy] ¤Ò¤é¤¬¤Ê/¥«¥¿¥«¥ÊÆþÎϥ⡼¥É¤òȿž"
 
-#: scm/anthy-key-custom.lisp:129
+#: scm/anthy-key-custom.lisp:135
 msgid "[Anthy] on"
 msgstr "[Anthy] ¥ª¥ó"
 
-#: scm/anthy-key-custom.lisp:135
+#: scm/anthy-key-custom.lisp:141
 msgid "[Anthy] off"
 msgstr "[Anthy] ¥ª¥Õ"
 
-#: scm/anthy-key-custom.lisp:141
+#: scm/anthy-key-custom.lisp:147
 msgid "[Anthy] begin conversion"
 msgstr "[Anthy] ÊÑ´¹³«»Ï"
 
-#: scm/anthy-key-custom.lisp:147
+#: scm/anthy-key-custom.lisp:153
 msgid "[Anthy] commit"
 msgstr "[Anthy] ³ÎÄê"
 
-#: scm/anthy-key-custom.lisp:153
+#: scm/anthy-key-custom.lisp:159
 msgid "[Anthy] cancel"
 msgstr "[Anthy] ¥­¥ã¥ó¥»¥ë"
 
-#: scm/anthy-key-custom.lisp:159
+#: scm/anthy-key-custom.lisp:165
 msgid "[Anthy] next candidate"
 msgstr "[Anthy] ¼¡¸õÊä"
 
-#: scm/anthy-key-custom.lisp:165
+#: scm/anthy-key-custom.lisp:171
 msgid "[Anthy] previous candidate"
 msgstr "[Anthy] Á°¸õÊä"
 
-#: scm/anthy-key-custom.lisp:171
+#: scm/anthy-key-custom.lisp:177
 msgid "[Anthy] next page of candidate window"
 msgstr "[Anthy] ¸õÊ䥦¥£¥ó¥É¥¦¤Î¼¡¥Ú¡¼¥¸"
 
-#: scm/anthy-key-custom.lisp:177
+#: scm/anthy-key-custom.lisp:183
 msgid "[Anthy] previous page of candidate window"
 msgstr "[Anthy] ¸õÊ䥦¥£¥ó¥É¥¦¤ÎÁ°¥Ú¡¼¥¸"
 
-#: scm/anthy-key-custom.lisp:187
+#: scm/anthy-key-custom.lisp:193
 msgid "[Anthy] beginning of preedit"
 msgstr "[Anthy] ÊÔ½¸Îΰè¤ÎÀèƬ"
 
-#: scm/anthy-key-custom.lisp:193
+#: scm/anthy-key-custom.lisp:199
 msgid "[Anthy] end of preedit"
 msgstr "[Anthy] ÊÔ½¸Îΰè¤ÎËöÈø"
 
-#: scm/anthy-key-custom.lisp:199
+#: scm/anthy-key-custom.lisp:205
 msgid "[Anthy] erase after cursor"
 msgstr "[Anthy] ¥«¡¼¥½¥ë°Ê¹ß¤ò¾Ãµî"
 
-#: scm/anthy-key-custom.lisp:205
+#: scm/anthy-key-custom.lisp:211
 msgid "[Anthy] erase before cursor"
 msgstr "[Anthy] ¥«¡¼¥½¥ë°ÊÁ°¤ò¾Ãµî"
 
-#: scm/anthy-key-custom.lisp:211
+#: scm/anthy-key-custom.lisp:217
 msgid "[Anthy] backspace"
 msgstr "[Anthy] ¥Ð¥Ã¥¯¥¹¥Ú¡¼¥¹"
 
-#: scm/anthy-key-custom.lisp:217
+#: scm/anthy-key-custom.lisp:223
 msgid "[Anthy] delete"
 msgstr "[Anthy] ¥Ç¥ê¡¼¥È"
 
-#: scm/anthy-key-custom.lisp:223
+#: scm/anthy-key-custom.lisp:229
 msgid "[Anthy] go left"
 msgstr "[Anthy] º¸¤Ë°ÜÆ°"
 
-#: scm/anthy-key-custom.lisp:229
+#: scm/anthy-key-custom.lisp:235
 msgid "[Anthy] go right"
 msgstr "[Anthy] ±¦¤Ë°ÜÆ°"
 
+#: scm/anthy-key-custom.lisp:241
+msgid "[Anthy] anthy-vi-escape-key?"
+msgstr ""
+
 #: scm/canna-custom.lisp:35
 msgid "Canna"
 msgstr "Canna"
@@ -1009,11 +1046,11 @@
 msgid "Canna server"
 msgstr "Canna¥µ¡¼¥Ð"
 
-#: scm/canna-custom.lisp:294
+#: scm/canna-custom.lisp:300
 msgid "Use Canna server"
 msgstr "Canna¥µ¡¼¥Ð¤ò»ÈÍѤ¹¤ë"
 
-#: scm/canna-custom.lisp:300
+#: scm/canna-custom.lisp:306
 msgid "Canna server name"
 msgstr "Canna¥µ¡¼¥Ð̾"
 
@@ -1046,73 +1083,105 @@
 msgstr "[Canna] ʸÀá¤òû½Ì"
 
 #: scm/canna-key-custom.lisp:75
+msgid "[Canna] convert to hiragana"
+msgstr "[Canna] ¤Ò¤é¤¬¤Ê¤ËÊÑ´¹"
+
+#: scm/canna-key-custom.lisp:81
+msgid "[Canna] convert to katakana"
+msgstr "[Canna] ¥«¥¿¥«¥Ê¤ËÊÑ´¹"
+
+#: scm/canna-key-custom.lisp:87
+msgid "[Canna] convert to halfwidth katakana"
+msgstr "[Canna] Ⱦ³Ñ¥«¥¿¥«¥Ê¤ËÊÑ´¹"
+
+#: scm/canna-key-custom.lisp:93
 msgid "[Canna] commit as transposed kana"
 msgstr "[Canna] ¤«¤Ê/¥«¥Êȿž³ÎÄê"
 
-#: scm/canna-key-custom.lisp:81
+#: scm/canna-key-custom.lisp:99
 msgid "[Canna] fullwidth alphanumeric mode"
 msgstr "[Canna] Á´³Ñ±Ñ¿ôÆþÎϥ⡼¥É"
 
-#: scm/canna-key-custom.lisp:87
+#: scm/canna-key-custom.lisp:105
 msgid "[Canna] halfwidth katakana mode"
 msgstr "[Canna] Ⱦ³Ñ¥«¥¿¥«¥ÊÆþÎϥ⡼¥É"
 
-#: scm/canna-key-custom.lisp:93
+#: scm/canna-key-custom.lisp:111
 msgid "[Canna] toggle hiragana/katakana mode"
 msgstr "[Canna] ¤Ò¤é¤¬¤Ê/¥«¥¿¥«¥ÊÆþÎϥ⡼¥É¤òȿž"
 
-#: scm/canna-key-custom.lisp:102
+#: scm/canna-key-custom.lisp:120
 msgid "[Canna] on"
 msgstr "[Canna] ¥ª¥ó"
 
-#: scm/canna-key-custom.lisp:109
+#: scm/canna-key-custom.lisp:127
 msgid "[Canna] off"
 msgstr "[Canna] ¥ª¥Õ"
 
-#: scm/canna-key-custom.lisp:115
+#: scm/canna-key-custom.lisp:133
 msgid "[Canna] begin conversion"
 msgstr "[Canna] ÊÑ´¹³«»Ï"
 
-#: scm/canna-key-custom.lisp:121
+#: scm/canna-key-custom.lisp:139
 msgid "[Canna] commit"
 msgstr "[Canna] ³ÎÄê"
 
-#: scm/canna-key-custom.lisp:127
+#: scm/canna-key-custom.lisp:145
 msgid "[Canna] cancel"
 msgstr "[Canna] ¥­¥ã¥ó¥»¥ë"
 
-#: scm/canna-key-custom.lisp:133
+#: scm/canna-key-custom.lisp:151
 msgid "[Canna] next candidate"
 msgstr "[Canna] ¼¡¸õÊä"
 
-#: scm/canna-key-custom.lisp:139
+#: scm/canna-key-custom.lisp:157
 msgid "[Canna] previous candidate"
 msgstr "[Canna] Á°¸õÊä"
 
-#: scm/canna-key-custom.lisp:160
+#: scm/canna-key-custom.lisp:163
+msgid "[Canna] next page of candidate window"
+msgstr "[Canna] ¸õÊ䥦¥£¥ó¥É¥¦¤Î¼¡¥Ú¡¼¥¸"
+
+#: scm/canna-key-custom.lisp:169
+msgid "[Canna] previous page of candidate window"
+msgstr "[Canna] ¸õÊ䥦¥£¥ó¥É¥¦¤ÎÁ°¥Ú¡¼¥¸"
+
+#: scm/canna-key-custom.lisp:178
 msgid "[Canna] beginning of preedit"
 msgstr "[Canna] ÊÔ½¸Îΰè¤ÎÀèƬ"
 
-#: scm/canna-key-custom.lisp:166
+#: scm/canna-key-custom.lisp:184
 msgid "[Canna] end of preedit"
 msgstr "[Canna] ÊÔ½¸Îΰè¤ÎËöÈø"
 
-#: scm/canna-key-custom.lisp:184
+#: scm/canna-key-custom.lisp:190
+msgid "[Canna] erase after cursor"
+msgstr "[Canna] ¥«¡¼¥½¥ë°Ê¹ß¤ò¾Ãµî"
+
+#: scm/canna-key-custom.lisp:196
+msgid "[Canna] erase before cursor"
+msgstr "[Canna] ¥«¡¼¥½¥ë°ÊÁ°¤ò¾Ãµî"
+
+#: scm/canna-key-custom.lisp:202
 msgid "[Canna] backspace"
 msgstr "[Canna] ¥Ð¥Ã¥¯¥¹¥Ú¡¼¥¹"
 
-#: scm/canna-key-custom.lisp:190
+#: scm/canna-key-custom.lisp:208
 msgid "[Canna] delete"
 msgstr "[Canna] ¥Ç¥ê¡¼¥È"
 
-#: scm/canna-key-custom.lisp:196
+#: scm/canna-key-custom.lisp:214
 msgid "[Canna] go left"
 msgstr "[Canna] º¸¤Ë°ÜÆ°"
 
-#: scm/canna-key-custom.lisp:202
+#: scm/canna-key-custom.lisp:220
 msgid "[Canna] go right"
 msgstr "[Canna] ±¦¤Ë°ÜÆ°"
 
+#: scm/canna-key-custom.lisp:226
+msgid "[Canna] canna-vi-escape-key?"
+msgstr ""
+
 #: scm/direct.lisp:53
 msgid "direct"
 msgstr "ľÀÜÆþÎÏ"
@@ -1225,175 +1294,187 @@
 msgid " Mode"
 msgstr " ¥â¡¼¥É"
 
-#: scm/hangul.lisp:93
+#: scm/hangul.lisp:107
 msgid "Hangul (2-bul)"
 msgstr "2¥Ü¥ë¼°¥Ï¥ó¥°¥ë"
 
-#: scm/hangul.lisp:94
+#: scm/hangul.lisp:108
 msgid "2-bul style hangul input method"
 msgstr "2¥Ü¥ë¼°¥Ï¥ó¥°¥ëÆþÎÏÊý¼°"
 
-#: scm/hangul.lisp:102
+#: scm/hangul.lisp:116
 msgid "Hangul (3-bul)"
 msgstr "3¥Ü¥ë¼°¥Ï¥ó¥°¥ë"
 
-#: scm/hangul.lisp:103
+#: scm/hangul.lisp:117
 msgid "3-bul style hangul input method"
 msgstr "3¥Ü¥ë¼°¥Ï¥ó¥°¥ëÆþÎÏÊý¼°"
 
-#: scm/hangul.lisp:110
+#: scm/hangul.lisp:124
 msgid "Hangul (Romaja)"
 msgstr "¥í¡¼¥Þ»úÆþÎϼ°¥Ï¥ó¥°¥ë"
 
-#: scm/hangul.lisp:111
+#: scm/hangul.lisp:125
 msgid "Romaja input style hangul input method"
 msgstr "¥í¡¼¥Þ»úÆþÎϼ°¥Ï¥ó¥°¥ëÆþÎÏÊý¼°"
 
-#: scm/im-custom.lisp:45
+#: scm/im-custom.lisp:46
 msgid "Global settings"
 msgstr "Á´ÂÎÀßÄê"
 
-#: scm/im-custom.lisp:49
+#: scm/im-custom.lisp:50
 msgid "Toolbar"
 msgstr "¥Ä¡¼¥ë¥Ð¡¼"
 
-#: scm/im-custom.lisp:54
+#: scm/im-custom.lisp:55
 msgid "Advanced settings"
 msgstr "¾åµéÀßÄê"
 
-#: scm/im-custom.lisp:59
+#: scm/im-custom.lisp:60
 msgid "Buttons"
 msgstr "¥Ü¥¿¥ó"
 
-#: scm/im-custom.lisp:64
+#: scm/im-custom.lisp:65
 msgid "Candidate window"
 msgstr "¸õÊ䥦¥£¥ó¥É¥¦"
 
-#: scm/im-custom.lisp:69
+#: scm/im-custom.lisp:70
 msgid "Annotation"
 msgstr "Ãð¼á"
 
-#: scm/im-custom.lisp:74
+#: scm/im-custom.lisp:75
 msgid "Dictionary"
 msgstr "¼­½ñ"
 
-#: scm/im-custom.lisp:84
+#: scm/im-custom.lisp:85
 msgid "Mode transition"
 msgstr "¥â¡¼¥ÉÁ«°Ü"
 
-#: scm/im-custom.lisp:89
+#: scm/im-custom.lisp:90
 msgid "Special operation"
 msgstr "ÆüìÁàºî"
 
-#: scm/im-custom.lisp:94 scm/im-custom.lisp:125
+#: scm/im-custom.lisp:95 scm/im-custom.lisp:126
 msgid "Default input method"
 msgstr "¥Ç¥Õ¥©¥ë¥È¤ÎÆþÎÏÊý¼°"
 
-#: scm/im-custom.lisp:99
+#: scm/im-custom.lisp:100
 msgid "Input method deployment"
 msgstr "ÆþÎÏÊý¼°¤ÎÍøÍѽàÈ÷"
 
-#: scm/im-custom.lisp:104
+#: scm/im-custom.lisp:105
 msgid "Visual preference"
 msgstr "»ë³ÐÀßÄê"
 
-#: scm/im-custom.lisp:115
+#: scm/im-custom.lisp:116
 msgid "Specify default IM"
 msgstr "¥Ç¥Õ¥©¥ë¥È¤ÎÆþÎÏÊý¼°¤ò»ØÄꤹ¤ë"
 
-#: scm/im-custom.lisp:218
+#: scm/im-custom.lisp:228
 msgid "Enabled input methods"
 msgstr "»ÈÍѲÄǽ¤Ë¤¹¤ëÆþÎÏÊý¼°"
 
-#: scm/im-custom.lisp:276 scm/skk-custom.lisp:70 scm/skk-custom.lisp:371
+#: scm/im-custom.lisp:286 scm/skk-custom.lisp:70 scm/skk-custom.lisp:370
 msgid "uim"
 msgstr "uim"
 
-#: scm/im-custom.lisp:276 scm/skk-custom.lisp:70 scm/skk-custom.lisp:371
+#: scm/im-custom.lisp:286 scm/skk-custom.lisp:70 scm/skk-custom.lisp:370
 msgid "uim native"
 msgstr "uim¥Í¥¤¥Æ¥£¥Ö"
 
-#: scm/im-custom.lisp:277
+#: scm/im-custom.lisp:287
 msgid "ATOK like"
 msgstr "ATOKÉ÷"
 
-#: scm/im-custom.lisp:277
+#: scm/im-custom.lisp:287
 msgid "Similar to ATOK"
 msgstr "ATOKÉ÷"
 
-#: scm/im-custom.lisp:278
+#: scm/im-custom.lisp:288
 msgid "Preedit color"
 msgstr "ÊÔ½¸Îΰ迧"
 
-#: scm/im-custom.lisp:286 scm/im-custom.lisp:287
+#: scm/im-custom.lisp:296 scm/im-custom.lisp:297
 msgid "Adjacent to cursor"
 msgstr "¥«¡¼¥½¥ë¤ËÎÙÀÜ"
 
-#: scm/im-custom.lisp:289 scm/im-custom.lisp:290
+#: scm/im-custom.lisp:299 scm/im-custom.lisp:300
 msgid "Left end of preedit area"
 msgstr "ÊÔ½¸Îΰè¤Îº¸Ã¼"
 
-#: scm/im-custom.lisp:292 scm/im-custom.lisp:293
+#: scm/im-custom.lisp:302 scm/im-custom.lisp:303
 msgid "Right end of preedit area"
 msgstr "ÊÔ½¸Îΰè¤Î±¦Ã¼"
 
-#: scm/im-custom.lisp:294
+#: scm/im-custom.lisp:304
 msgid "Candidate window position"
 msgstr "¸õÊ䥦¥£¥ó¥É¥¦É½¼¨°ÌÃÖ"
 
-#: scm/im-custom.lisp:300
+#: scm/im-custom.lisp:310
 msgid "Enable lazy input method loading for fast startup"
 msgstr "¹â®µ¯Æ°¤Î¤¿¤á¤ÎÃÙ±ä¥í¡¼¥Ç¥£¥ó¥°¤òÍ­¸ú¤Ë¤¹¤ë"
 
-#: scm/im-custom.lisp:307
+#: scm/im-custom.lisp:317
 msgid "Show input method switcher button on toolbar"
 msgstr "ÆþÎÏÊý¼°¤ÎÀÚ¤êÂؤ¨¥Ü¥¿¥ó¤ò¥Ä¡¼¥ë¥Ð¡¼¤Ëɽ¼¨¤¹¤ë"
 
-#: scm/im-custom.lisp:313
+#: scm/im-custom.lisp:323
 msgid "Show uim preference tool button on toolbar"
 msgstr "ÀßÄê¥Ä¡¼¥ë¤Îµ¯Æ°¥Ü¥¿¥ó¤ò¥Ä¡¼¥ë¥Ð¡¼¤Ëɽ¼¨¤¹¤ë"
 
-#: scm/im-custom.lisp:319
+#: scm/im-custom.lisp:329
 msgid "Show uim Japanese dictionary tool button on toolbar"
 msgstr "ÆüËܸ켭½ñ¥Ä¡¼¥ë¤Îµ¯Æ°¥Ü¥¿¥ó¤ò¥Ä¡¼¥ë¥Ð¡¼¤Ëɽ¼¨¤¹¤ë"
 
-#: scm/im-custom.lisp:325
+#: scm/im-custom.lisp:335
 msgid "Show uim input pad button on toolbar"
 msgstr "ÆþÎϥѥåɤε¯Æ°¥Ü¥¿¥ó¤ò¥Ä¡¼¥ë¥Ð¡¼¤Ëɽ¼¨¤¹¤ë"
 
-#: scm/im-custom.lisp:331
+#: scm/im-custom.lisp:341
 msgid "Show uim handwriting-input pad button on toolbar"
 msgstr "¼ê½ñ¤­ÆþÎϥѥåɤε¯Æ°¥Ü¥¿¥ó¤ò¥Ä¡¼¥ë¥Ð¡¼¤Ëɽ¼¨¤¹¤ë"
 
-#: scm/im-custom.lisp:337
+#: scm/im-custom.lisp:347
 msgid "Show uim help button on toolbar"
 msgstr "¥Ø¥ë¥×¥Ü¥¿¥ó¤ò¥Ä¡¼¥ë¥Ð¡¼¤Ëɽ¼¨¤¹¤ë"
 
-#: scm/im-custom.lisp:343
+#: scm/im-custom.lisp:353
 msgid "Show input mode nearby cursor"
 msgstr "ÆþÎϥ⡼¥É¤ò¥«¡¼¥½¥ë¤Î¶á¤¯¤Ëɽ¼¨¤¹¤ë"
 
-#: scm/im-custom.lisp:350
+#: scm/im-custom.lisp:359
+msgid "Time length for showing input mode nearby the cursor"
+msgstr "ÆþÎϥ⡼¥Éɽ¼¨¤Î¥¿¥¤¥à¥¢¥¦¥È¤Þ¤Ç¤Î»þ´Ö"
+
+#: scm/im-custom.lisp:360
+msgid "Set 0 to show indicator always."
+msgstr ""
+
+#: scm/im-custom.lisp:366
 msgid "EB library settings"
 msgstr "EB¥é¥¤¥Ö¥é¥êÀßÄê"
 
-#: scm/im-custom.lisp:356
+#: scm/im-custom.lisp:372
 msgid "Use EB library to search annotations"
 msgstr "Ãí¼á¤Î¸¡º÷¤ËEB¥é¥¤¥Ö¥é¥ê¤ò»ÈÍѤ¹¤ë"
 
-#: scm/im-custom.lisp:363
+#: scm/im-custom.lisp:379
 msgid "The directory which contains EB dictionary file"
 msgstr "EB¼­½ñ¥Õ¥¡¥¤¥ë¤ò³ÊǼ¤·¤Æ¤¤¤ë¥Ç¥£¥ì¥¯¥È¥ê"
 
-#: scm/im-custom.lisp:369
+#: scm/im-custom.lisp:385
 msgid "XIM settings"
 msgstr "XIMÀßÄê"
 
-#: scm/im-custom.lisp:375
+#: scm/im-custom.lisp:389
+msgid "Preedit settings of XIM"
+msgstr ""
+
+#: scm/im-custom.lisp:395
 msgid "Use anti-aliased fonts for Over-the-Spot/Root-Window preedit"
 msgstr "XIMÆȼ«¤ÎÊÔ½¸Îΰè¤Ë¥¢¥ó¥Á¥¨¥¤¥ê¥¢¥¹¥Õ¥©¥ó¥È¤ò»ÈÍÑ"
 
-#: scm/im-custom.lisp:381
+#: scm/im-custom.lisp:401
 msgid "Font name for preedit area (anti-aliased)"
 msgstr "ÊÔ½¸Îΰè¤Ë»ÈÍѤ¹¤ë¥¢¥ó¥Á¥¨¥¤¥ê¥¢¥¹¥Õ¥©¥ó¥È"
 
@@ -1401,65 +1482,96 @@
 msgid "International Phonetic Alphabet (X-SAMPA)"
 msgstr "IPA (¹ñºÝȯÀ¼µ­¹æ X-SAMPAÈÇ)"
 
-#. I think that the name "euro" is not appropriate since it
-#. represents nation or geographic region.  -- YamaKen 2005-01-29
-#: scm/latin.lisp:582
+#: scm/latin.lisp:720
 msgid "Latin characters"
 msgstr "¥é¥Æ¥óʸ»ú"
 
-#: scm/latin.lisp:583
+#: scm/latin.lisp:721
 msgid "Latin characters mainly used for Latin and German languages"
 msgstr "¼ç¤Ë¥é¥Æ¥ó¡¦¥²¥ë¥Þ¥ó½ô¸ì¤Ç»È¤ï¤ì¤ë¥é¥Æ¥óʸ»úÆþÎÏÊý¼°"
 
-#: scm/m17nlib.lisp:336
+#: scm/m17nlib.lisp:338
 msgid "An input method provided by the m17n library"
 msgstr "m17n¥é¥¤¥Ö¥é¥ê¤Ë¤è¤Ã¤ÆÄ󶡤µ¤ì¤ëÆþÎÏÊý¼°"
 
-#: scm/prime-custom.lisp:35
+#: scm/prime-custom.lisp:34
 msgid "PRIME"
 msgstr "PRIME"
 
-#: scm/prime-custom.lisp:36
-msgid "Japanese predictable input method"
+#: scm/prime-custom.lisp:35
+msgid "Japanese predictive input method"
 msgstr "ÆüËܸìͽ¬ÆþÎÏÊý¼°"
 
-#: scm/prime-custom.lisp:63 scm/spellcheck-custom.lisp:65
-msgid "Always showing candidate window"
-msgstr "¸õÊ䥦¥£¥ó¥É¥¦¤ò¾ï¤Ëɽ¼¨¤¹¤ë"
+#: scm/prime-custom.lisp:42
+msgid "PRIME (advanced)"
+msgstr "PRIME (¹âÅÙ)"
 
-#: scm/prime-custom.lisp:69
+#: scm/prime-custom.lisp:43
+msgid "Advanced settings for PRIME"
+msgstr "PRIME¸þ¤±¤Î¾åµéÀßÄê"
+
+#: scm/prime-custom.lisp:46 scm/prime-custom.lisp:52 scm/prime-custom.lisp:165
+#: uim/iso-639-1.def:105
+msgid "Japanese"
+msgstr "ÆüËܸì"
+
+#: scm/prime-custom.lisp:47
+msgid "Japanese specific settings"
+msgstr ""
+
+#: scm/prime-custom.lisp:53 uim/iso-639-1.def:74
+msgid "English"
+msgstr "±Ñ¸ì"
+
+#: scm/prime-custom.lisp:54
+msgid "Default language"
+msgstr "¥Ç¥Õ¥©¥ë¥È¤Î¸À¸ì"
+
+#: scm/prime-custom.lisp:60
 msgid "Enable auto register mode"
 msgstr "¼«Æ°ÅÐÏ¿¥â¡¼¥É¤òÍ­¸ú¤Ë¤¹¤ë"
 
-#: scm/prime-custom.lisp:75
-msgid "Enable pseudo mode cursor"
-msgstr "µ¼»÷Ū¤Ê¥â¡¼¥É¥«¡¼¥½¥ë¤òÍ­¸ú¤Ë¤¹¤ë"
+#: scm/prime-custom.lisp:66
+msgid "Wide width (Zenkaku)"
+msgstr "Á´³Ñ"
 
-#: scm/prime-custom.lisp:81
-msgid "Show candidate annotations"
-msgstr "¸õÊ䥦¥£¥ó¥É¥¦Æâ¤ËÃð¼á¤òɽ¼¨¤¹¤ë"
+#: scm/prime-custom.lisp:67
+msgid "Half width (Hankaku)"
+msgstr "Ⱦ³Ñ"
 
-#: scm/prime-custom.lisp:89
-msgid "Show usage examples of candidate words"
-msgstr "¸õÊ䥦¥£¥ó¥É¥¦Æâ¤ËÍÑÎã¤òɽ¼¨¤¹¤ë"
+#: scm/prime-custom.lisp:68
+msgid "Space character"
+msgstr "¶õÇòʸ»ú"
 
-#: scm/prime-custom.lisp:95
+#: scm/prime-custom.lisp:74
 msgid "Use Unix Domain Socket to communicate with PRIME"
 msgstr "PRIME¤È¤ÎÄÌ¿®¤ËUnix¥É¥á¥¤¥ó¥½¥±¥Ã¥È¤ò»ÈÍѤ¹¤ë"
 
-#: scm/prime-custom.lisp:101
-msgid "Mask preedit strings (For T-Code users)"
-msgstr "ÆþÎÏÃæ¤Îʸ»ú¤ò¥Þ¥¹¥¯¤¹¤ë (T-Code¥æ¡¼¥¶¸þ¤±)"
+#: scm/prime-custom.lisp:98 scm/spellcheck-custom.lisp:65
+msgid "Always showing candidate window"
+msgstr "¸õÊ䥦¥£¥ó¥É¥¦¤ò¾ï¤Ëɽ¼¨¤¹¤ë"
 
-#: scm/prime-custom.lisp:123
+#: scm/prime-custom.lisp:105
+msgid "Show usage examples of candidate words"
+msgstr "¸õÊ䥦¥£¥ó¥É¥¦Æâ¤ËÍÑÎã¤òɽ¼¨¤¹¤ë"
+
+#: scm/prime-custom.lisp:112
+msgid "Show candidate annotations"
+msgstr "¸õÊ䥦¥£¥ó¥É¥¦Æâ¤ËÃð¼á¤òɽ¼¨¤¹¤ë"
+
+#: scm/prime-custom.lisp:120
+msgid "Show candidate forms"
+msgstr ""
+
+#: scm/prime-custom.lisp:140
+msgid "Enable pseudo mode cursor"
+msgstr "µ¼»÷Ū¤Ê¥â¡¼¥É¥«¡¼¥½¥ë¤òÍ­¸ú¤Ë¤¹¤ë"
+
+#: scm/prime-custom.lisp:161
 msgid "PRIME off"
 msgstr "PRIME ¥ª¥Õ"
 
-#: scm/prime-custom.lisp:127 uim/iso-639-1.def:103
-msgid "Japanese"
-msgstr "ÆüËܸì"
-
-#: scm/prime-custom.lisp:128
+#: scm/prime-custom.lisp:166
 msgid "PRIME on"
 msgstr "PRIME ¥ª¥ó"
 
@@ -1476,28 +1588,28 @@
 msgstr "PRIME¥­¡¼ÀßÄê 3"
 
 #: scm/prime-key-custom.lisp:75
-msgid "[PRIME] regist a word"
+msgid "[PRIME] prime-register-key"
 msgstr "[PRIME] ñ¸ìÅÐÏ¿"
 
 #: scm/prime-key-custom.lisp:81
-msgid "[PRIME] hiragana typing mode"
-msgstr "[PRIME] ¤Ò¤é¤¬¤ÊÊÑ´¹"
+msgid "[PRIME] prime-typing-mode-hiragana-key"
+msgstr "[PRIME] ¤Ò¤é¤¬¤Ê¥â¡¼¥É"
 
 #: scm/prime-key-custom.lisp:87
-msgid "[PRIME] katakana typing mode"
-msgstr "[PRIME] ¥«¥¿¥«¥ÊÊÑ´¹"
+msgid "[PRIME] prime-typing-mode-katakana-key"
+msgstr "[PRIME] ¥«¥¿¥«¥Ê¥â¡¼¥É"
 
 #: scm/prime-key-custom.lisp:93
-msgid "[PRIME] halfwidth katakana typing mode"
-msgstr "[PRIME] Ⱦ³Ñ¥«¥¿¥«¥ÊÊÑ´¹"
+msgid "[PRIME] prime-typing-mode-hankana-key"
+msgstr "[PRIME] Ⱦ³Ñ¥«¥¿¥«¥Ê¥â¡¼¥É"
 
 #: scm/prime-key-custom.lisp:99
-msgid "[PRIME] wide ascii typing mode"
-msgstr "[PRIME] Á´³Ñ±Ñ¿ôÊÑ´¹"
+msgid "[PRIME] prime-typing-mode-wideascii-key"
+msgstr "[PRIME] Á´³Ñ±Ñ¿ô¥â¡¼¥É"
 
 #: scm/prime-key-custom.lisp:105
-msgid "[PRIME] ascii typing mode"
-msgstr "[PRIME] Ⱦ³Ñ±Ñ¿ôÊÑ´¹"
+msgid "[PRIME] prime-typing-mode-ascii-key"
+msgstr "[PRIME] ascii¥â¡¼¥É"
 
 #: scm/prime-key-custom.lisp:114
 msgid "[PRIME] on"
@@ -1564,7 +1676,7 @@
 msgstr "[PRIME] ±¦¤Ë°ÜÆ°"
 
 #: scm/pyload.lisp:42
-msgid "Pinyin (Simplified)"
+msgid "New Pinyin (Simplified)"
 msgstr "¥Ô¥ó¥¤¥ó (´ÊÂλú)"
 
 #: scm/pyload.lisp:43
@@ -1619,7 +1731,7 @@
 msgid "ddskk-like"
 msgstr "ddskk-like"
 
-#: scm/skk-custom.lisp:71 scm/skk-custom.lisp:370
+#: scm/skk-custom.lisp:71 scm/skk-custom.lisp:369
 msgid "Similar to ddskk"
 msgstr "ddskkÉ÷"
 
@@ -1631,63 +1743,59 @@
 msgid "Set candidate window behavior manually"
 msgstr "¸õÊ䥦¥£¥ó¥É¥¦¤ÎµóÆ°¤ò¼êÆ°¤ÇÀßÄꤹ¤ë"
 
-#: scm/skk-custom.lisp:328
+#: scm/skk-custom.lisp:327
 msgid "Use skkserv instead of SKK-JISYO"
 msgstr "¼­½ñ¥Õ¥¡¥¤¥ë¤ÎÂå¤ï¤ê¤ËSKK¥µ¡¼¥Ð¤ò»ÈÍÑ"
 
-#: scm/skk-custom.lisp:334
+#: scm/skk-custom.lisp:333
 msgid "Port number of skkserv"
 msgstr "SKK¥µ¡¼¥Ð¤Î¥Ý¡¼¥ÈÈÖ¹æ"
 
-#: scm/skk-custom.lisp:346
+#: scm/skk-custom.lisp:345
 msgid "Dictionary file"
 msgstr "¼­½ñ¥Õ¥¡¥¤¥ë"
 
-#: scm/skk-custom.lisp:353
+#: scm/skk-custom.lisp:352
 msgid "Personal dictionary file"
 msgstr "¸Ä¿Í¼­½ñ¥Õ¥¡¥¤¥ë"
 
-#: scm/skk-custom.lisp:360
+#: scm/skk-custom.lisp:359
 msgid "Personal dictionary file (dedicated to uim)"
 msgstr "¸Ä¿Í¼­½ñ¥Õ¥¡¥¤¥ë (uimÀìÍÑ)"
 
-#: scm/skk-custom.lisp:370
+#: scm/skk-custom.lisp:369
 msgid "ddskk"
 msgstr "ddskk"
 
-#: scm/skk-custom.lisp:372
+#: scm/skk-custom.lisp:371
 msgid "Visual style"
 msgstr "¥Ó¥¸¥å¥¢¥ë¥¹¥¿¥¤¥ë"
 
-#: scm/skk-custom.lisp:378
+#: scm/skk-custom.lisp:377
 msgid "Use recursive learning"
 msgstr "ºÆµ¢³Ø½¬¤ò»ÈÍѤ¹¤ë"
 
-#: scm/skk-custom.lisp:384
+#: scm/skk-custom.lisp:383
 msgid "Use numeric conversion"
 msgstr "¿ôÃÍÊÑ´¹¤ò»ÈÍѤ¹¤ë"
 
-#: scm/skk-custom.lisp:390
+#: scm/skk-custom.lisp:389
 msgid "Enable auto conversion with punctuation marks"
 msgstr "¶çÆÉÅÀ¤Ë¤è¤ë¼«Æ°ÊÑ´¹¤òÍ­¸ú¤Ë¤¹¤ë"
 
-#: scm/skk-custom.lisp:400
+#: scm/skk-custom.lisp:399
 msgid "Show annotation of candidate word"
 msgstr "¸õÊä¤ËÃð¼á¤òɽ¼¨¤¹¤ë"
 
-#: scm/skk-custom.lisp:406
+#: scm/skk-custom.lisp:405
 msgid "Show annotation also in preedit area"
 msgstr "ÊÔ½¸ÎΰèÆâ¤Ë¤âÃð¼á¤òɽ¼¨¤¹¤ë"
 
-#: scm/skk-custom.lisp:427
-msgid "Friendly for vi user"
-msgstr "vi¤ËŬ±þ¤·¤¿ÆþÎÏÀ©¸æ¤ò»ÈÍѤ¹¤ë"
-
-#: scm/skk-custom.lisp:433
+#: scm/skk-custom.lisp:432
 msgid "Use Enter key as just committing (egg-like operation)"
 msgstr "Enter¥­¡¼¤òñ¤Ë³ÎÄê¤Î¤¿¤á¤Ë»È¤¦ (eggÉ÷¤ÎÁàºî)"
 
-#: scm/skk-custom.lisp:440
+#: scm/skk-custom.lisp:439
 msgid "Commit newline as ASCII string instead of native key-event"
 msgstr "¿·µ¬¹Ô¤ò¥Í¥¤¥Æ¥£¥Ö¥­¡¼¥¤¥Ù¥ó¥È¤ÎÂå¤ï¤ê¤ËASCIIʸ»úÎó¤È¤·¤Æ³ÎÄꤹ¤ë"
 
@@ -1779,31 +1887,35 @@
 msgid "[SKK] skk-state-direct-no-preedit-nop-key?"
 msgstr ""
 
-#: scm/skk-key-custom.lisp:208
+#: scm/skk-key-custom.lisp:196
+msgid "[SKK] skk-purge-candidate-key?"
+msgstr "[SKK] ¸Ä¿Í¼­½ñÃæ¤Îñ¸ì¤òºï½ü"
+
+#: scm/skk-key-custom.lisp:214
 msgid "[SKK] next candidate"
 msgstr "[SKK] ¼¡¸õÊä"
 
-#: scm/skk-key-custom.lisp:214
+#: scm/skk-key-custom.lisp:220
 msgid "[SKK] previous candidate"
 msgstr "[SKK] Á°¸õÊä"
 
-#: scm/skk-key-custom.lisp:220
+#: scm/skk-key-custom.lisp:226
 msgid "[SKK] next page of candidate window"
 msgstr "[SKK] ¸õÊ䥦¥£¥ó¥É¥¦¤Î¼¡¥Ú¡¼¥¸"
 
-#: scm/skk-key-custom.lisp:226
+#: scm/skk-key-custom.lisp:232
 msgid "[SKK] previous page of candidate window"
 msgstr "[SKK] ¸õÊ䥦¥£¥ó¥É¥¦¤ÎÁ°¥Ú¡¼¥¸"
 
-#: scm/skk-key-custom.lisp:232
+#: scm/skk-key-custom.lisp:238
 msgid "[SKK] backspace"
 msgstr "[SKK] ¥Ð¥Ã¥¯¥¹¥Ú¡¼¥¹"
 
-#: scm/skk-key-custom.lisp:238
+#: scm/skk-key-custom.lisp:244
 msgid "[SKK] go left"
 msgstr "[SKK] º¸¤Ë°ÜÆ°"
 
-#: scm/skk-key-custom.lisp:244
+#: scm/skk-key-custom.lisp:250
 msgid "[SKK] go right"
 msgstr "[SKK] ±¦¤Ë°ÜÆ°"
 
@@ -1953,524 +2065,547 @@
 msgstr "¥Ù¥ó¥¬¥ë¸ì"
 
 #: uim/iso-639-1.def:52
+msgid "Bengali"
+msgstr "¥Ù¥ó¥¬¥ë¸ì"
+
+#: uim/iso-639-1.def:53
 msgid "Bhutani"
 msgstr "¥Ö¡¼¥¿¥ó¸ì"
 
-#: uim/iso-639-1.def:53
+#: uim/iso-639-1.def:54
 msgid "Bihari"
 msgstr "¥Ó¥Ï¥ê¸ì"
 
-#: uim/iso-639-1.def:54
+#: uim/iso-639-1.def:55
 msgid "Bislama"
 msgstr "¥Ó¥¹¥é¥Þ¸ì"
 
-#: uim/iso-639-1.def:55
+#: uim/iso-639-1.def:56
 msgid "Breton"
 msgstr "¥Ö¥ë¥È¥ó¸ì"
 
-#: uim/iso-639-1.def:56
+#: uim/iso-639-1.def:57
 msgid "Bulgarian"
 msgstr "¥Ö¥ë¥¬¥ê¥¢¸ì"
 
-#: uim/iso-639-1.def:57
+#: uim/iso-639-1.def:58
 msgid "Burmese"
 msgstr "¥Ó¥ë¥Þ¸ì"
 
-#: uim/iso-639-1.def:58
+#: uim/iso-639-1.def:59
 msgid "Byelorussian (Belarusian)"
 msgstr "¥Ù¥é¥ë¡¼¥·¸ì"
 
-#: uim/iso-639-1.def:59
+#: uim/iso-639-1.def:60
+msgid "Byelorussian"
+msgstr "¥Ù¥é¥ë¡¼¥·¸ì"
+
+#: uim/iso-639-1.def:61
 msgid "Cambodian"
 msgstr "¥«¥ó¥Ü¥¸¥¢¸ì"
 
-#: uim/iso-639-1.def:60
+#: uim/iso-639-1.def:62
 msgid "Catalan"
 msgstr "¥«¥¿¥í¥Ë¥¢¸ì"
 
-#: uim/iso-639-1.def:61
+#: uim/iso-639-1.def:63
 msgid "Chewa"
 msgstr "¥Á¥§¥ï¸ì"
 
-#: uim/iso-639-1.def:62
+#: uim/iso-639-1.def:64
 msgid "Chinese (Simplified)"
 msgstr "´ÊÂλúÃæ¹ñ¸ì"
 
-#: uim/iso-639-1.def:63 uim/iso-639-1.def:64
+#: uim/iso-639-1.def:65 uim/iso-639-1.def:66
 msgid "Chinese (Traditional)"
 msgstr "ÈËÂλúÃæ¹ñ¸ì"
 
-#: uim/iso-639-1.def:65
+#: uim/iso-639-1.def:67
 msgid "Chinese"
 msgstr "Ãæ¹ñ¸ì"
 
-#: uim/iso-639-1.def:66
+#: uim/iso-639-1.def:68
 msgid "Corsican"
 msgstr "¥³¥ë¥·¥«¸ì"
 
-#: uim/iso-639-1.def:67
+#: uim/iso-639-1.def:69
 msgid "Croatian"
 msgstr "¥¯¥í¥¢¥Á¥¢¸ì"
 
-#: uim/iso-639-1.def:68
+#: uim/iso-639-1.def:70
 msgid "Czech"
 msgstr "¥Á¥§¥³¸ì"
 
-#: uim/iso-639-1.def:69
+#: uim/iso-639-1.def:71
 msgid "Danish"
 msgstr "¥Ç¥ó¥Þ¡¼¥¯¸ì"
 
-#: uim/iso-639-1.def:70
-msgid "Divehi"
+#: uim/iso-639-1.def:72
+msgid "Dhivehi"
 msgstr "¥Ç¥£¥ô¥§¥Ò¸ì"
 
-#: uim/iso-639-1.def:71
+#: uim/iso-639-1.def:73
 msgid "Dutch"
 msgstr "¥ª¥é¥ó¥À¸ì"
 
-#: uim/iso-639-1.def:72
-msgid "English"
-msgstr "±Ñ¸ì"
-
-#: uim/iso-639-1.def:73
+#: uim/iso-639-1.def:75
 msgid "Esperanto"
 msgstr "¥¨¥¹¥Ú¥é¥ó¥È"
 
-#: uim/iso-639-1.def:74
+#: uim/iso-639-1.def:76
 msgid "Estonian"
 msgstr "¥¨¥¹¥È¥Ë¥¢¸ì"
 
-#: uim/iso-639-1.def:75
+#: uim/iso-639-1.def:77
 msgid "Faeroese"
 msgstr "¥Õ¥§¥í¡¼¸ì"
 
-#: uim/iso-639-1.def:76
+#: uim/iso-639-1.def:78
 msgid "Farsi"
 msgstr "¶áÂå¥Ú¥ë¥·¥ã¸ì"
 
-#: uim/iso-639-1.def:77
+#: uim/iso-639-1.def:79
 msgid "Fiji"
 msgstr "¥Õ¥£¥¸¡¼¸ì"
 
-#: uim/iso-639-1.def:78
+#: uim/iso-639-1.def:80
 msgid "Finnish"
 msgstr "¥Õ¥£¥ó¥é¥ó¥É¸ì"
 
-#: uim/iso-639-1.def:79
+#: uim/iso-639-1.def:81
 msgid "Flemish"
 msgstr "¥Õ¥é¥Þ¥ó¸ì"
 
 #. defined as "nl" in the source
-#: uim/iso-639-1.def:80
+#: uim/iso-639-1.def:82
 msgid "French"
 msgstr "¥Õ¥é¥ó¥¹¸ì"
 
-#: uim/iso-639-1.def:81
+#: uim/iso-639-1.def:83
 msgid "Frisian"
 msgstr "¥Õ¥ê¡¼¥¹¥é¥ó¥È¸ì"
 
-#: uim/iso-639-1.def:82
+#: uim/iso-639-1.def:84
 msgid "Galician"
 msgstr "¥¬¥ê¥Á¥¢¸ì"
 
-#: uim/iso-639-1.def:83
+#: uim/iso-639-1.def:85
 msgid "Gaelic (Scottish)"
 msgstr "¥²¡¼¥ë¸ì (¥¹¥³¥Ã¥È¥é¥ó¥É¸ì)"
 
-#: uim/iso-639-1.def:84
+#: uim/iso-639-1.def:86
 msgid "Gaelic (Manx)"
 msgstr "¥²¡¼¥ë¸ì (¥Þ¥óÅç¸ì)"
 
-#: uim/iso-639-1.def:85
+#: uim/iso-639-1.def:87
 msgid "Georgian"
 msgstr "¥°¥ë¥¸¥¢¸ì"
 
-#: uim/iso-639-1.def:86
+#: uim/iso-639-1.def:88
 msgid "German"
 msgstr "¥É¥¤¥Ä¸ì"
 
-#: uim/iso-639-1.def:87
+#: uim/iso-639-1.def:89
 msgid "Greek"
 msgstr "¥®¥ê¥·¥ã¸ì"
 
-#: uim/iso-639-1.def:88
+#: uim/iso-639-1.def:90
 msgid "Greenlandic"
 msgstr "¥°¥ê¡¼¥ó¥é¥ó¥É¸ì"
 
-#: uim/iso-639-1.def:89
+#: uim/iso-639-1.def:91
 msgid "Guarani"
 msgstr "¥°¥¢¥é¥Ë¡¼¸ì"
 
-#: uim/iso-639-1.def:90
+#: uim/iso-639-1.def:92
 msgid "Gujarati"
 msgstr "¥°¥¸¥ã¥é¡¼¥È¸ì"
 
-#: uim/iso-639-1.def:91
+#: uim/iso-639-1.def:93
 msgid "Hausa"
 msgstr "¥Ï¥¦¥µ¸ì"
 
-#: uim/iso-639-1.def:92
+#: uim/iso-639-1.def:94
 msgid "Hebrew"
 msgstr "¥Ø¥Ö¥é¥¤¸ì"
 
-#: uim/iso-639-1.def:93
+#: uim/iso-639-1.def:95
 msgid "Hindi"
 msgstr "¥Ò¥ó¥Ç¥£¡¼¸ì"
 
-#: uim/iso-639-1.def:94
+#: uim/iso-639-1.def:96
 msgid "Hungarian"
 msgstr "¥Ï¥ó¥¬¥ê¡¼¸ì"
 
-#: uim/iso-639-1.def:95
+#: uim/iso-639-1.def:97
 msgid "Icelandic"
 msgstr "¥¢¥¤¥¹¥é¥ó¥É¸ì"
 
-#: uim/iso-639-1.def:96
+#: uim/iso-639-1.def:98
 msgid "Indonesian"
 msgstr "¥¤¥ó¥É¥Í¥·¥¢¸ì"
 
-#: uim/iso-639-1.def:97
+#: uim/iso-639-1.def:99
 msgid "Interlingua"
 msgstr "¥¤¥ó¥¿¡¼¥ê¥ó¥°¥¢¸ì"
 
-#: uim/iso-639-1.def:98
+#: uim/iso-639-1.def:100
 msgid "Interlingue"
 msgstr "¥¤¥ó¥Æ¥ë¥ê¥ó¥°¸ì"
 
-#: uim/iso-639-1.def:99
+#: uim/iso-639-1.def:101
 msgid "Inuktitut"
 msgstr "¥¤¥Ì¥¯¥Æ¥£¥È¥Ã¥È¸ì"
 
-#: uim/iso-639-1.def:100
+#: uim/iso-639-1.def:102
 msgid "Inupiak"
 msgstr "¥¤¥Ì¥Ô¥¢¥Ã¥¯¸ì"
 
-#: uim/iso-639-1.def:101
+#: uim/iso-639-1.def:103
 msgid "Irish"
 msgstr "¥¢¥¤¥ë¥é¥ó¥É¸ì"
 
-#: uim/iso-639-1.def:102
+#: uim/iso-639-1.def:104
 msgid "Italian"
 msgstr "¥¤¥¿¥ê¥¢¸ì"
 
-#: uim/iso-639-1.def:104
+#: uim/iso-639-1.def:106
 msgid "Javanese"
 msgstr "¥¸¥ã¥ï¸ì"
 
-#: uim/iso-639-1.def:105
+#: uim/iso-639-1.def:107
 msgid "Kannada"
 msgstr "¥«¥ó¥Ê¥À¸ì"
 
-#: uim/iso-639-1.def:106
+#: uim/iso-639-1.def:108
 msgid "Kashmiri"
 msgstr "¥«¥·¥ß¡¼¥ë¸ì"
 
-#: uim/iso-639-1.def:107
+#: uim/iso-639-1.def:109
 msgid "Kazakh"
 msgstr "¥«¥¶¥Õ¸ì"
 
-#: uim/iso-639-1.def:108
+#: uim/iso-639-1.def:110
 msgid "Kinyarwanda (Ruanda)"
 msgstr "¥­¥ó¥ä¥ë¥ï¥ó¥À¸ì"
 
-#: uim/iso-639-1.def:109
+#: uim/iso-639-1.def:111
 msgid "Kirghiz"
 msgstr "¥­¥ë¥®¥¹¸ì"
 
-#: uim/iso-639-1.def:110
+#: uim/iso-639-1.def:112
 msgid "Kirundi (Rundi)"
 msgstr "¥­¥ë¥ó¥Ç¥£¸ì"
 
-#: uim/iso-639-1.def:111
+#: uim/iso-639-1.def:113
 msgid "Konkani"
 msgstr "¥³¥ó¥«¥Ë¸ì"
 
 #. defined as "kok" in ISO 639-2
-#: uim/iso-639-1.def:112
+#: uim/iso-639-1.def:114
 msgid "Korean"
 msgstr "¥Ï¥ó¥°¥ë"
 
-#: uim/iso-639-1.def:113
+#: uim/iso-639-1.def:115
 msgid "Kurdish"
 msgstr "¥¯¥ë¥É¸ì"
 
-#: uim/iso-639-1.def:114
+#: uim/iso-639-1.def:116
 msgid "Laothian"
 msgstr "¥é¥ª¥¹¸ì"
 
-#: uim/iso-639-1.def:115
+#: uim/iso-639-1.def:117
 msgid "Latin"
 msgstr "¥é¥Æ¥ó¸ì"
 
-#: uim/iso-639-1.def:116
+#: uim/iso-639-1.def:118
 msgid "Latvian (Lettish)"
 msgstr "¥é¥È¥Ó¥¢¸ì"
 
-#: uim/iso-639-1.def:117
+#: uim/iso-639-1.def:119
 msgid "Lingala"
 msgstr "¥ê¥ó¥¬¥é¸ì"
 
-#: uim/iso-639-1.def:118
+#: uim/iso-639-1.def:120
 msgid "Lithuanian"
 msgstr "¥ê¥È¥¢¥Ë¥¢¸ì"
 
-#: uim/iso-639-1.def:119
+#: uim/iso-639-1.def:121
 msgid "Macedonian"
 msgstr "¥Þ¥±¥É¥Ë¥¢¸ì"
 
-#: uim/iso-639-1.def:120
+#: uim/iso-639-1.def:122
 msgid "Malagasy"
 msgstr "¥Þ¥À¥¬¥¹¥«¥ë¸ì"
 
-#: uim/iso-639-1.def:121
+#: uim/iso-639-1.def:123
 msgid "Malay"
 msgstr "¥Þ¥ì¡¼¸ì"
 
-#: uim/iso-639-1.def:122
+#: uim/iso-639-1.def:124
 msgid "Malayalam"
 msgstr "¥Þ¥é¥ä¡¼¥é¥à¸ì"
 
-#: uim/iso-639-1.def:123
+#: uim/iso-639-1.def:125
 msgid "Maltese"
 msgstr "¥Þ¥ë¥¿¸ì"
 
-#: uim/iso-639-1.def:124
+#: uim/iso-639-1.def:126
 msgid "Maori"
 msgstr "¥Þ¥ª¥ê¸ì"
 
-#: uim/iso-639-1.def:125
+#: uim/iso-639-1.def:127
 msgid "Marathi"
 msgstr "¥Þ¥é¡¼¥Æ¥£¡¼¸ì"
 
-#: uim/iso-639-1.def:126
+#: uim/iso-639-1.def:128
 msgid "Moldavian"
 msgstr "¥â¥ë¥À¥ô¥£¥¢¸ì"
 
-#: uim/iso-639-1.def:127
+#: uim/iso-639-1.def:129
 msgid "Mongolian"
 msgstr "¥â¥ó¥´¥ë¸ì"
 
-#: uim/iso-639-1.def:128
+#: uim/iso-639-1.def:130
+msgid "Myanmar"
+msgstr "¥ß¥ã¥ó¥Þ¡¼¸ì"
+
+#: uim/iso-639-1.def:131
 msgid "Nauru"
 msgstr "¥Ê¥¦¥ë¸ì"
 
-#: uim/iso-639-1.def:129
+#: uim/iso-639-1.def:132
 msgid "Nepali"
 msgstr "¥Í¥Ñ¡¼¥ë¸ì"
 
-#: uim/iso-639-1.def:130
+#: uim/iso-639-1.def:133
 msgid "Norwegian"
 msgstr "¥Î¥ë¥¦¥§¡¼¸ì"
 
-#: uim/iso-639-1.def:131
+#: uim/iso-639-1.def:134
 msgid "Occitan"
 msgstr "¥ª¥¯¥·¥¿¥ó¸ì"
 
-#: uim/iso-639-1.def:132
+#: uim/iso-639-1.def:135
 msgid "Oriya"
 msgstr "¥ª¥ê¥ä¡¼¸ì"
 
-#: uim/iso-639-1.def:133
+#: uim/iso-639-1.def:136
 msgid "Oromo (Afan, Galla)"
 msgstr "¥ª¥í¥â¸ì"
 
-#: uim/iso-639-1.def:134
+#: uim/iso-639-1.def:137
 msgid "Pashto (Pushto)"
 msgstr "¥Ñ¥·¥å¥È¡¼¸ì"
 
-#: uim/iso-639-1.def:135
+#: uim/iso-639-1.def:138
 msgid "Polish"
 msgstr "¥Ý¡¼¥é¥ó¥É¸ì"
 
-#: uim/iso-639-1.def:136
+#: uim/iso-639-1.def:139
 msgid "Portuguese"
 msgstr "¥Ý¥ë¥È¥¬¥ë¸ì"
 
-#: uim/iso-639-1.def:137
+#: uim/iso-639-1.def:140
 msgid "Punjabi"
 msgstr "¥Ñ¥ó¥¸¥ã¥Ö¸ì"
 
-#: uim/iso-639-1.def:138
+#: uim/iso-639-1.def:141
 msgid "Quechua"
 msgstr "¥±¥Á¥å¥¢¸ì"
 
-#: uim/iso-639-1.def:139
+#: uim/iso-639-1.def:142
 msgid "Romanian"
 msgstr "¥ë¡¼¥Þ¥Ë¥¢¸ì"
 
-#: uim/iso-639-1.def:140
+#: uim/iso-639-1.def:143
 msgid "Russian"
 msgstr "¥í¥·¥¢¸ì"
 
-#: uim/iso-639-1.def:141
+#: uim/iso-639-1.def:144
 msgid "Samoan"
 msgstr "¥µ¥â¥¢¸ì"
 
-#: uim/iso-639-1.def:142
+#: uim/iso-639-1.def:145
 msgid "Sangro"
 msgstr "¥µ¥ó¥°¥í¸ì"
 
-#: uim/iso-639-1.def:143
+#: uim/iso-639-1.def:146
 msgid "Sanskrit"
 msgstr "¥µ¥ó¥¹¥¯¥ê¥Ã¥È"
 
-#: uim/iso-639-1.def:144
+#: uim/iso-639-1.def:147
 msgid "Serbian"
 msgstr "¥»¥ë¥Ó¥¢¸ì"
 
-#: uim/iso-639-1.def:145
+#: uim/iso-639-1.def:148
 msgid "Sesotho"
 msgstr "¥½¥È¸ì"
 
-#: uim/iso-639-1.def:146
+#: uim/iso-639-1.def:149
 msgid "Setswana"
 msgstr "¥Ä¥ï¥Ê¸ì"
 
-#: uim/iso-639-1.def:147
+#: uim/iso-639-1.def:150
 msgid "Shona"
 msgstr "¥·¥ç¥Ê¸ì"
 
-#: uim/iso-639-1.def:148
+#: uim/iso-639-1.def:151
 msgid "Sindhi"
 msgstr "¥·¥ó¥Ç¥£¸ì"
 
-#: uim/iso-639-1.def:149
+#: uim/iso-639-1.def:152
 msgid "Sinhalese"
 msgstr "¥·¥ó¥Ï¥é¸ì"
 
-#: uim/iso-639-1.def:150
+#: uim/iso-639-1.def:153
 msgid "Siswati"
 msgstr "¥·¥¹¥ï¥Æ¥£¸ì"
 
-#: uim/iso-639-1.def:151
+#: uim/iso-639-1.def:154
 msgid "Slovak"
 msgstr "¥¹¥í¥Ð¥­¥¢¸ì"
 
-#: uim/iso-639-1.def:152
+#: uim/iso-639-1.def:155
 msgid "Slovenian"
 msgstr "¥¹¥í¥Ù¥Ë¥¢¸ì"
 
-#: uim/iso-639-1.def:153
+#: uim/iso-639-1.def:156
 msgid "Somali"
 msgstr "¥½¥Þ¥ê¸ì"
 
-#: uim/iso-639-1.def:154
+#: uim/iso-639-1.def:157
 msgid "Spanish"
 msgstr "¥¹¥Ú¥¤¥ó¸ì"
 
-#: uim/iso-639-1.def:155
+#: uim/iso-639-1.def:158
 msgid "Sundanese"
 msgstr "¥¹¥ó¥À¸ì"
 
-#: uim/iso-639-1.def:156
+#: uim/iso-639-1.def:159
 msgid "Swahili (Kiswahili)"
 msgstr "¥¹¥ï¥Ò¥ê¸ì"
 
-#: uim/iso-639-1.def:157
+#: uim/iso-639-1.def:160
 msgid "Swedish"
 msgstr "¥¹¥¦¥§¡¼¥Ç¥ó¸ì"
 
-#: uim/iso-639-1.def:158
+#: uim/iso-639-1.def:161
 msgid "Syriac"
 msgstr "¸ÅÂ奷¥ê¥¢¸ì"
 
 #. defined as "syr" in ISO 639-2
-#: uim/iso-639-1.def:159
+#: uim/iso-639-1.def:162
 msgid "Tagalog"
 msgstr "¥¿¥¬¥í¥°¸ì"
 
-#: uim/iso-639-1.def:160
+#: uim/iso-639-1.def:163
 msgid "Tajik"
 msgstr "¥¿¥¸¥­¥¹¥¿¥ó¸ì"
 
-#: uim/iso-639-1.def:161
+#: uim/iso-639-1.def:164
 msgid "Tamil"
 msgstr "¥¿¥ß¥ë¸ì"
 
-#: uim/iso-639-1.def:162
+#: uim/iso-639-1.def:165
 msgid "Tatar"
 msgstr "¥¿¥¿¡¼¥ë¸ì"
 
-#: uim/iso-639-1.def:163
+#: uim/iso-639-1.def:166
 msgid "Telugu"
 msgstr "¥Æ¥ë¥°¸ì"
 
-#: uim/iso-639-1.def:164
+#: uim/iso-639-1.def:167
 msgid "Thai"
 msgstr "¥¿¥¤¸ì"
 
-#: uim/iso-639-1.def:165
+#: uim/iso-639-1.def:168
 msgid "Tibetan"
 msgstr "¥Á¥Ù¥Ã¥È¸ì"
 
-#: uim/iso-639-1.def:166
+#: uim/iso-639-1.def:169
 msgid "Tigrinya"
 msgstr "¥Á¥°¥ê¥ä¥Ê¸ì"
 
-#: uim/iso-639-1.def:167
+#: uim/iso-639-1.def:170
 msgid "Tonga"
 msgstr "¥È¥ó¥¬¸ì"
 
-#: uim/iso-639-1.def:168
+#: uim/iso-639-1.def:171
 msgid "Tsonga"
 msgstr "¥Ä¥©¥ó¥¬¸ì"
 
-#: uim/iso-639-1.def:169
+#: uim/iso-639-1.def:172
 msgid "Turkish"
 msgstr "¥È¥ë¥³¸ì"
 
-#: uim/iso-639-1.def:170
+#: uim/iso-639-1.def:173
 msgid "Turkmen"
 msgstr "¥È¥ë¥¯¥á¥Ë¥¹¥¿¥ó¸ì"
 
-#: uim/iso-639-1.def:171
+#: uim/iso-639-1.def:174
 msgid "Twi"
 msgstr "¥Á¥å¥¤¸ì"
 
-#: uim/iso-639-1.def:172
+#: uim/iso-639-1.def:175
 msgid "Uighur"
 msgstr "¥¦¥¤¥°¥ë¸ì"
 
-#: uim/iso-639-1.def:173
+#: uim/iso-639-1.def:176
 msgid "Ukrainian"
 msgstr "¥¦¥¯¥é¥¤¥Ê¸ì"
 
-#: uim/iso-639-1.def:174
+#: uim/iso-639-1.def:177
 msgid "Urdu"
 msgstr "¥¦¥ë¥É¥¥¡¼¸ì"
 
-#: uim/iso-639-1.def:175
+#: uim/iso-639-1.def:178
 msgid "Uzbek"
 msgstr "¥¦¥º¥Ù¥¯¸ì"
 
-#: uim/iso-639-1.def:176
+#: uim/iso-639-1.def:179
 msgid "Vietnamese"
 msgstr "¥Ù¥È¥Ê¥à¸ì"
 
-#: uim/iso-639-1.def:177
+#: uim/iso-639-1.def:180
 msgid "Welsh"
 msgstr "¥¦¥§¡¼¥ë¥º¸ì"
 
-#: uim/iso-639-1.def:178
+#: uim/iso-639-1.def:181
 msgid "Wolof"
 msgstr "¥¦¥©¥ë¥Õ¸ì"
 
-#: uim/iso-639-1.def:179
+#: uim/iso-639-1.def:182
 msgid "Xhosa"
 msgstr "¥³¡¼¥µ¸ì"
 
-#: uim/iso-639-1.def:180
+#: uim/iso-639-1.def:183
 msgid "Yiddish"
 msgstr "¥¤¥Ç¥£¥Ã¥·¥å¸ì"
 
-#: uim/iso-639-1.def:181
+#: uim/iso-639-1.def:184
 msgid "Yoruba"
 msgstr "¥è¥ë¥Ð¸ì"
 
-#: uim/iso-639-1.def:182
+#: uim/iso-639-1.def:185
 msgid "Zulu"
 msgstr "¥º¡¼¥ë¡¼¸ì"
 
+#~ msgid "Mask preedit strings (For T-Code users)"
+#~ msgstr "ÆþÎÏÃæ¤Îʸ»ú¤ò¥Þ¥¹¥¯¤¹¤ë (T-Code¥æ¡¼¥¶¸þ¤±)"
+
+#~ msgid "[PRIME] hiragana typing mode"
+#~ msgstr "[PRIME] ¤Ò¤é¤¬¤ÊÊÑ´¹"
+
+#~ msgid "[PRIME] katakana typing mode"
+#~ msgstr "[PRIME] ¥«¥¿¥«¥ÊÊÑ´¹"
+
+#~ msgid "[PRIME] halfwidth katakana typing mode"
+#~ msgstr "[PRIME] Ⱦ³Ñ¥«¥¿¥«¥ÊÊÑ´¹"
+
+#~ msgid "[PRIME] wide ascii typing mode"
+#~ msgstr "[PRIME] Á´³Ñ±Ñ¿ôÊÑ´¹"
+
 #~ msgid "[Anthy] commit as hiragana"
 #~ msgstr "[Anthy] ¤Ò¤é¤¬¤Ê¤È¤·¤Æ³ÎÄê"
 

Modified: branches/r5rs/po/uim.pot
===================================================================
--- branches/r5rs/po/uim.pot	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/po/uim.pot	2005-09-14 22:20:37 UTC (rev 1497)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-06-07 18:18+0900\n"
+"POT-Creation-Date: 2005-09-09 14:09+0900\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -48,24 +48,24 @@
 msgid "Description"
 msgstr ""
 
-#: helper/im-switcher-gtk.c:322 qt/switcher-qt.cpp:67
+#: helper/im-switcher-gtk.c:323 qt/switcher-qt.cpp:67
 msgid "uim input method switcher"
 msgstr ""
 
-#: helper/im-switcher-gtk.c:348 qt/switcher-qt.cpp:105
+#: helper/im-switcher-gtk.c:352 qt/switcher-qt.cpp:105
 msgid "Changing way"
 msgstr ""
 
-#: helper/im-switcher-gtk.c:356 qt/switcher-qt.cpp:106
+#: helper/im-switcher-gtk.c:360 qt/switcher-qt.cpp:106
 msgid "Change whole desktop"
 msgstr ""
 
 #. default is "Change whole desktop"
-#: helper/im-switcher-gtk.c:357 qt/switcher-qt.cpp:109
+#: helper/im-switcher-gtk.c:361 qt/switcher-qt.cpp:109
 msgid "Change this application only"
 msgstr ""
 
-#: helper/im-switcher-gtk.c:358 qt/switcher-qt.cpp:111
+#: helper/im-switcher-gtk.c:362 qt/switcher-qt.cpp:111
 msgid "Change this text area only"
 msgstr ""
 
@@ -333,28 +333,44 @@
 msgid "Example"
 msgstr ""
 
-#: helper/pref-gtk.c:118
+#: helper/pref-gtk.c:144
 msgid ""
 "Some value(s) have been changed.\n"
 "Save?"
 msgstr ""
 
-#: helper/pref-gtk.c:190
+#: helper/pref-gtk.c:216
 msgid ""
 "Some value(s) have been changed.\n"
 "Do you realy quit this program?"
 msgstr ""
 
-#: helper/pref-gtk.c:229 qt/pref-qt.cpp:138
+#: helper/pref-gtk.c:255 qt/pref-qt.cpp:138
 msgid "Group"
 msgstr ""
 
 #. Defaults button
-#: helper/pref-gtk.c:319
+#: helper/pref-gtk.c:347
 msgid "_Defaults"
 msgstr ""
 
-#: helper/pref-gtk.c:481
+#: helper/pref-gtk.c:352
+msgid "Revert all changes to default"
+msgstr ""
+
+#: helper/pref-gtk.c:362
+msgid "Apply all changes"
+msgstr ""
+
+#: helper/pref-gtk.c:370
+msgid "Quit this application without applying changes"
+msgstr ""
+
+#: helper/pref-gtk.c:381
+msgid "Quit this application with applying changes"
+msgstr ""
+
+#: helper/pref-gtk.c:530
 msgid ""
 "The user customize file \"~/.uim\" is found.\n"
 "This file will override all conflicted settings set by\n"
@@ -362,56 +378,56 @@
 "Please check the file if you find your settings aren't applied."
 msgstr ""
 
-#: helper/pref-gtk-custom-widgets.c:382
+#: helper/pref-gtk-custom-widgets.c:384
 msgid "Specify file"
 msgstr ""
 
-#: helper/pref-gtk-custom-widgets.c:419
+#: helper/pref-gtk-custom-widgets.c:421
 msgid "File..."
 msgstr ""
 
-#: helper/pref-gtk-custom-widgets.c:1108
+#: helper/pref-gtk-custom-widgets.c:1110
 msgid "Enabled"
 msgstr ""
 
-#: helper/pref-gtk-custom-widgets.c:1134
+#: helper/pref-gtk-custom-widgets.c:1136
 msgid "Enabled items"
 msgstr ""
 
-#: helper/pref-gtk-custom-widgets.c:1212
+#: helper/pref-gtk-custom-widgets.c:1214
 msgid "Disabled"
 msgstr ""
 
-#: helper/pref-gtk-custom-widgets.c:1238
+#: helper/pref-gtk-custom-widgets.c:1240
 msgid "Disabled items"
 msgstr ""
 
-#: helper/pref-gtk-custom-widgets.c:1276 helper/pref-gtk-custom-widgets.c:1865
+#: helper/pref-gtk-custom-widgets.c:1278 helper/pref-gtk-custom-widgets.c:1867
 msgid "Edit..."
 msgstr ""
 
-#: helper/pref-gtk-custom-widgets.c:1484 qt/pref-customwidgets.cpp:839
+#: helper/pref-gtk-custom-widgets.c:1486 qt/pref-customwidgets.cpp:839
 msgid "Press keys to grab (e.g. <Control>a)"
 msgstr ""
 
-#: helper/pref-gtk-custom-widgets.c:1485
+#: helper/pref-gtk-custom-widgets.c:1487
 msgid "Grabbing keys"
 msgstr ""
 
-#: helper/pref-gtk-custom-widgets.c:1706
+#: helper/pref-gtk-custom-widgets.c:1708
 #, c-format
 msgid "%s - key configuration"
 msgstr ""
 
-#: helper/pref-gtk-custom-widgets.c:1743
+#: helper/pref-gtk-custom-widgets.c:1745
 msgid "Key preference"
 msgstr ""
 
-#: helper/pref-gtk-custom-widgets.c:1789
+#: helper/pref-gtk-custom-widgets.c:1791
 msgid "Key:"
 msgstr ""
 
-#: helper/pref-gtk-custom-widgets.c:1810
+#: helper/pref-gtk-custom-widgets.c:1812
 msgid "Grab..."
 msgstr ""
 
@@ -619,43 +635,46 @@
 #: scm/anthy-custom.lisp:78 scm/anthy-custom.lisp:84 scm/anthy-custom.lisp:90
 #: scm/anthy-custom.lisp:173 scm/anthy-custom.lisp:192
 #: scm/anthy-custom.lisp:201 scm/anthy-custom.lisp:243
-#: scm/anthy-custom.lisp:252 scm/anthy-key-custom.lisp:37
-#: scm/anthy-key-custom.lisp:41 scm/anthy-key-custom.lisp:45
-#: scm/canna-custom.lisp:44 scm/canna-custom.lisp:55 scm/canna-custom.lisp:61
-#: scm/canna-custom.lisp:76 scm/canna-custom.lisp:82 scm/canna-custom.lisp:88
-#: scm/canna-custom.lisp:167 scm/canna-custom.lisp:186
-#: scm/canna-custom.lisp:195 scm/canna-custom.lisp:237
-#: scm/canna-custom.lisp:246 scm/canna-custom.lisp:295
-#: scm/canna-custom.lisp:301 scm/canna-key-custom.lisp:37
-#: scm/canna-key-custom.lisp:41 scm/canna-key-custom.lisp:45
-#: scm/generic-custom.lisp:37 scm/generic-custom.lisp:43
-#: scm/generic-custom.lisp:49 scm/generic-custom.lisp:55
-#: scm/generic-custom.lisp:61 scm/generic-key-custom.lisp:37
-#: scm/generic-key-custom.lisp:41 scm/im-custom.lisp:46 scm/im-custom.lisp:50
-#: scm/im-custom.lisp:55 scm/im-custom.lisp:60 scm/im-custom.lisp:65
-#: scm/im-custom.lisp:70 scm/im-custom.lisp:75 scm/im-custom.lisp:80
-#: scm/im-custom.lisp:85 scm/im-custom.lisp:90 scm/im-custom.lisp:95
-#: scm/im-custom.lisp:100 scm/im-custom.lisp:105 scm/im-custom.lisp:116
-#: scm/im-custom.lisp:126 scm/im-custom.lisp:219 scm/im-custom.lisp:279
-#: scm/im-custom.lisp:295 scm/im-custom.lisp:301 scm/im-custom.lisp:308
-#: scm/im-custom.lisp:314 scm/im-custom.lisp:320 scm/im-custom.lisp:326
-#: scm/im-custom.lisp:332 scm/im-custom.lisp:338 scm/im-custom.lisp:344
-#: scm/im-custom.lisp:351 scm/im-custom.lisp:357 scm/im-custom.lisp:364
-#: scm/im-custom.lisp:370 scm/im-custom.lisp:376 scm/im-custom.lisp:382
-#: scm/prime-custom.lisp:58 scm/prime-custom.lisp:64 scm/prime-custom.lisp:70
-#: scm/prime-custom.lisp:76 scm/prime-custom.lisp:82 scm/prime-custom.lisp:90
-#: scm/prime-custom.lisp:96 scm/prime-custom.lisp:102
-#: scm/prime-custom.lisp:145 scm/prime-custom.lisp:154
+#: scm/anthy-custom.lisp:252 scm/anthy-custom.lisp:290
+#: scm/anthy-key-custom.lisp:37 scm/anthy-key-custom.lisp:41
+#: scm/anthy-key-custom.lisp:45 scm/canna-custom.lisp:44
+#: scm/canna-custom.lisp:55 scm/canna-custom.lisp:61 scm/canna-custom.lisp:76
+#: scm/canna-custom.lisp:82 scm/canna-custom.lisp:88 scm/canna-custom.lisp:94
+#: scm/canna-custom.lisp:173 scm/canna-custom.lisp:192
+#: scm/canna-custom.lisp:201 scm/canna-custom.lisp:243
+#: scm/canna-custom.lisp:252 scm/canna-custom.lisp:301
+#: scm/canna-custom.lisp:307 scm/canna-custom.lisp:364
+#: scm/canna-key-custom.lisp:37 scm/canna-key-custom.lisp:41
+#: scm/canna-key-custom.lisp:45 scm/generic-custom.lisp:37
+#: scm/generic-custom.lisp:43 scm/generic-custom.lisp:49
+#: scm/generic-custom.lisp:55 scm/generic-custom.lisp:61
+#: scm/generic-key-custom.lisp:37 scm/generic-key-custom.lisp:41
+#: scm/im-custom.lisp:47 scm/im-custom.lisp:51 scm/im-custom.lisp:56
+#: scm/im-custom.lisp:61 scm/im-custom.lisp:66 scm/im-custom.lisp:71
+#: scm/im-custom.lisp:76 scm/im-custom.lisp:81 scm/im-custom.lisp:86
+#: scm/im-custom.lisp:91 scm/im-custom.lisp:96 scm/im-custom.lisp:101
+#: scm/im-custom.lisp:106 scm/im-custom.lisp:117 scm/im-custom.lisp:127
+#: scm/im-custom.lisp:229 scm/im-custom.lisp:289 scm/im-custom.lisp:305
+#: scm/im-custom.lisp:311 scm/im-custom.lisp:318 scm/im-custom.lisp:324
+#: scm/im-custom.lisp:330 scm/im-custom.lisp:336 scm/im-custom.lisp:342
+#: scm/im-custom.lisp:348 scm/im-custom.lisp:354 scm/im-custom.lisp:367
+#: scm/im-custom.lisp:373 scm/im-custom.lisp:380 scm/im-custom.lisp:386
+#: scm/im-custom.lisp:390 scm/im-custom.lisp:396 scm/im-custom.lisp:402
+#: scm/prime-custom.lisp:55 scm/prime-custom.lisp:61 scm/prime-custom.lisp:69
+#: scm/prime-custom.lisp:75 scm/prime-custom.lisp:93 scm/prime-custom.lisp:99
+#: scm/prime-custom.lisp:106 scm/prime-custom.lisp:113
+#: scm/prime-custom.lisp:121 scm/prime-custom.lisp:129
+#: scm/prime-custom.lisp:135 scm/prime-custom.lisp:141
 #: scm/prime-key-custom.lisp:61 scm/prime-key-custom.lisp:65
 #: scm/prime-key-custom.lisp:69 scm/skk-custom.lisp:59 scm/skk-custom.lisp:65
 #: scm/skk-custom.lisp:73 scm/skk-custom.lisp:79 scm/skk-custom.lisp:85
-#: scm/skk-custom.lisp:91 scm/skk-custom.lisp:218 scm/skk-custom.lisp:237
-#: scm/skk-custom.lisp:246 scm/skk-custom.lisp:277 scm/skk-custom.lisp:286
-#: scm/skk-custom.lisp:329 scm/skk-custom.lisp:335 scm/skk-custom.lisp:347
-#: scm/skk-custom.lisp:354 scm/skk-custom.lisp:361 scm/skk-custom.lisp:373
-#: scm/skk-custom.lisp:379 scm/skk-custom.lisp:385 scm/skk-custom.lisp:391
-#: scm/skk-custom.lisp:401 scm/skk-custom.lisp:407 scm/skk-custom.lisp:428
-#: scm/skk-custom.lisp:434 scm/skk-custom.lisp:441 scm/skk-key-custom.lisp:65
+#: scm/skk-custom.lisp:91 scm/skk-custom.lisp:217 scm/skk-custom.lisp:236
+#: scm/skk-custom.lisp:245 scm/skk-custom.lisp:276 scm/skk-custom.lisp:285
+#: scm/skk-custom.lisp:328 scm/skk-custom.lisp:334 scm/skk-custom.lisp:346
+#: scm/skk-custom.lisp:353 scm/skk-custom.lisp:360 scm/skk-custom.lisp:372
+#: scm/skk-custom.lisp:378 scm/skk-custom.lisp:384 scm/skk-custom.lisp:390
+#: scm/skk-custom.lisp:400 scm/skk-custom.lisp:406 scm/skk-custom.lisp:427
+#: scm/skk-custom.lisp:433 scm/skk-custom.lisp:440 scm/skk-key-custom.lisp:65
 #: scm/skk-key-custom.lisp:69 scm/skk-key-custom.lisp:73
 #: scm/skk-key-custom.lisp:78 scm/spellcheck-custom.lisp:48
 #: scm/spellcheck-custom.lisp:54 scm/spellcheck-custom.lisp:60
@@ -664,7 +683,7 @@
 msgid "long description will be here."
 msgstr ""
 
-#: scm/anthy-custom.lisp:56 scm/canna-custom.lisp:60 scm/im-custom.lisp:79
+#: scm/anthy-custom.lisp:56 scm/canna-custom.lisp:60 scm/im-custom.lisp:80
 msgid "Segment separator"
 msgstr ""
 
@@ -681,115 +700,119 @@
 msgstr ""
 
 #: scm/anthy-custom.lisp:83 scm/canna-custom.lisp:87
-#: scm/generic-custom.lisp:54 scm/prime-custom.lisp:57 scm/skk-custom.lisp:90
+#: scm/generic-custom.lisp:54 scm/prime-custom.lisp:92 scm/skk-custom.lisp:90
 msgid "Number of candidates in candidate window at a time"
 msgstr ""
 
-#: scm/anthy-custom.lisp:89 scm/generic-custom.lisp:60
+#: scm/anthy-custom.lisp:89 scm/canna-custom.lisp:93
+#: scm/generic-custom.lisp:60 scm/prime-custom.lisp:128
 msgid "Select candidate by numeral keys"
 msgstr ""
 
-#: scm/anthy-custom.lisp:119 scm/canna-custom.lisp:113
-#: scm/prime-custom.lisp:122 scm/skk-custom.lisp:169
+#: scm/anthy-custom.lisp:119 scm/canna-custom.lisp:119
+#: scm/prime-custom.lisp:160 scm/skk-custom.lisp:168
 msgid "Direct input"
 msgstr ""
 
-#: scm/anthy-custom.lisp:120 scm/canna-custom.lisp:114 scm/skk-custom.lisp:170
+#: scm/anthy-custom.lisp:120 scm/canna-custom.lisp:120 scm/skk-custom.lisp:169
 msgid "Direct input mode"
 msgstr ""
 
-#: scm/anthy-custom.lisp:124 scm/canna-custom.lisp:118 scm/skk-custom.lisp:174
+#: scm/anthy-custom.lisp:124 scm/canna-custom.lisp:124 scm/skk-custom.lisp:173
 msgid "Hiragana"
 msgstr ""
 
-#: scm/anthy-custom.lisp:125 scm/canna-custom.lisp:119 scm/skk-custom.lisp:175
+#: scm/anthy-custom.lisp:125 scm/canna-custom.lisp:125 scm/skk-custom.lisp:174
 msgid "Hiragana input mode"
 msgstr ""
 
-#: scm/anthy-custom.lisp:129 scm/canna-custom.lisp:123 scm/skk-custom.lisp:179
+#: scm/anthy-custom.lisp:129 scm/canna-custom.lisp:129 scm/skk-custom.lisp:178
 msgid "Katakana"
 msgstr ""
 
-#: scm/anthy-custom.lisp:130 scm/canna-custom.lisp:124 scm/skk-custom.lisp:180
+#: scm/anthy-custom.lisp:130 scm/canna-custom.lisp:130 scm/skk-custom.lisp:179
 msgid "Katakana input mode"
 msgstr ""
 
-#: scm/anthy-custom.lisp:134 scm/canna-custom.lisp:128 scm/skk-custom.lisp:184
+#: scm/anthy-custom.lisp:134 scm/canna-custom.lisp:134 scm/skk-custom.lisp:183
 msgid "Halfwidth Katakana"
 msgstr ""
 
-#: scm/anthy-custom.lisp:135 scm/canna-custom.lisp:129 scm/skk-custom.lisp:185
+#: scm/anthy-custom.lisp:135 scm/canna-custom.lisp:135 scm/skk-custom.lisp:184
 msgid "Halfwidth Katakana input mode"
 msgstr ""
 
-#: scm/anthy-custom.lisp:139 scm/canna-custom.lisp:133
-#: scm/prime-custom.lisp:132 scm/skk-custom.lisp:189
+#: scm/anthy-custom.lisp:139 scm/canna-custom.lisp:139
+#: scm/prime-custom.lisp:170 scm/skk-custom.lisp:188
 msgid "Fullwidth Alphanumeric"
 msgstr ""
 
-#: scm/anthy-custom.lisp:140 scm/canna-custom.lisp:134
-#: scm/prime-custom.lisp:133 scm/skk-custom.lisp:190
+#: scm/anthy-custom.lisp:140 scm/canna-custom.lisp:140
+#: scm/prime-custom.lisp:171 scm/skk-custom.lisp:189
 msgid "Fullwidth Alphanumeric input mode"
 msgstr ""
 
-#: scm/anthy-custom.lisp:147 scm/canna-custom.lisp:141 scm/skk-custom.lisp:197
+#: scm/anthy-custom.lisp:147 scm/canna-custom.lisp:147 scm/skk-custom.lisp:196
 msgid "Romaji"
 msgstr ""
 
-#: scm/anthy-custom.lisp:148 scm/canna-custom.lisp:142 scm/skk-custom.lisp:198
+#: scm/anthy-custom.lisp:148 scm/canna-custom.lisp:148 scm/skk-custom.lisp:197
 msgid "Romaji input mode"
 msgstr ""
 
-#: scm/anthy-custom.lisp:152 scm/canna-custom.lisp:146
+#: scm/anthy-custom.lisp:152 scm/canna-custom.lisp:152
 msgid "Kana"
 msgstr ""
 
-#: scm/anthy-custom.lisp:153 scm/canna-custom.lisp:147
+#: scm/anthy-custom.lisp:153 scm/canna-custom.lisp:153
 msgid "Kana input mode"
 msgstr ""
 
-#: scm/anthy-custom.lisp:157 scm/canna-custom.lisp:151 scm/skk-custom.lisp:202
+#: scm/anthy-custom.lisp:157 scm/canna-custom.lisp:157 scm/skk-custom.lisp:201
 msgid "AZIK"
 msgstr ""
 
-#: scm/anthy-custom.lisp:158 scm/canna-custom.lisp:152 scm/skk-custom.lisp:203
+#: scm/anthy-custom.lisp:158 scm/canna-custom.lisp:158 scm/skk-custom.lisp:202
 msgid "AZIK extended romaji input mode"
 msgstr ""
 
 #: scm/anthy-custom.lisp:167 scm/anthy-custom.lisp:168
-#: scm/canna-custom.lisp:161 scm/canna-custom.lisp:162 scm/skk-custom.lisp:212
-#: scm/skk-custom.lisp:213
+#: scm/canna-custom.lisp:167 scm/canna-custom.lisp:168 scm/skk-custom.lisp:211
+#: scm/skk-custom.lisp:212
 msgid "Input mode"
 msgstr ""
 
 #: scm/anthy-custom.lisp:170 scm/anthy-custom.lisp:171
-#: scm/canna-custom.lisp:164 scm/canna-custom.lisp:165 scm/skk-custom.lisp:215
-#: scm/skk-custom.lisp:216
+#: scm/canna-custom.lisp:170 scm/canna-custom.lisp:171 scm/skk-custom.lisp:214
+#: scm/skk-custom.lisp:215
 msgid "Kana input method"
 msgstr ""
 
-#: scm/anthy-custom.lisp:172 scm/canna-custom.lisp:166 scm/skk-custom.lisp:217
+#: scm/anthy-custom.lisp:172 scm/canna-custom.lisp:172 scm/skk-custom.lisp:216
 msgid "Enabled toolbar buttons"
 msgstr ""
 
-#: scm/anthy-custom.lisp:191 scm/canna-custom.lisp:185
-#: scm/prime-custom.lisp:144 scm/skk-custom.lisp:236
+#: scm/anthy-custom.lisp:191 scm/canna-custom.lisp:191 scm/skk-custom.lisp:235
 msgid "Default input mode"
 msgstr ""
 
-#: scm/anthy-custom.lisp:200 scm/canna-custom.lisp:194
-#: scm/prime-custom.lisp:153 scm/skk-custom.lisp:245
+#: scm/anthy-custom.lisp:200 scm/canna-custom.lisp:200 scm/skk-custom.lisp:244
 msgid "Input mode menu items"
 msgstr ""
 
-#: scm/anthy-custom.lisp:242 scm/canna-custom.lisp:236 scm/skk-custom.lisp:276
+#: scm/anthy-custom.lisp:242 scm/canna-custom.lisp:242 scm/skk-custom.lisp:275
 msgid "Default kana input method"
 msgstr ""
 
-#: scm/anthy-custom.lisp:251 scm/canna-custom.lisp:245 scm/skk-custom.lisp:285
+#: scm/anthy-custom.lisp:251 scm/canna-custom.lisp:251 scm/skk-custom.lisp:284
 msgid "Kana input method menu items"
 msgstr ""
 
+#: scm/anthy-custom.lisp:289 scm/canna-custom.lisp:363
+#: scm/prime-custom.lisp:134 scm/skk-custom.lisp:426
+msgid "Friendly for vi user"
+msgstr ""
+
 #: scm/anthy-key-custom.lisp:36
 msgid "Anthy key bindings 1"
 msgstr ""
@@ -811,26 +834,31 @@
 #: scm/anthy-key-custom.lisp:76 scm/anthy-key-custom.lisp:82
 #: scm/anthy-key-custom.lisp:88 scm/anthy-key-custom.lisp:94
 #: scm/anthy-key-custom.lisp:100 scm/anthy-key-custom.lisp:106
-#: scm/anthy-key-custom.lisp:113 scm/anthy-key-custom.lisp:119
-#: scm/anthy-key-custom.lisp:130 scm/anthy-key-custom.lisp:136
+#: scm/anthy-key-custom.lisp:112 scm/anthy-key-custom.lisp:119
+#: scm/anthy-key-custom.lisp:125 scm/anthy-key-custom.lisp:136
 #: scm/anthy-key-custom.lisp:142 scm/anthy-key-custom.lisp:148
 #: scm/anthy-key-custom.lisp:154 scm/anthy-key-custom.lisp:160
 #: scm/anthy-key-custom.lisp:166 scm/anthy-key-custom.lisp:172
-#: scm/anthy-key-custom.lisp:178 scm/anthy-key-custom.lisp:188
+#: scm/anthy-key-custom.lisp:178 scm/anthy-key-custom.lisp:184
 #: scm/anthy-key-custom.lisp:194 scm/anthy-key-custom.lisp:200
 #: scm/anthy-key-custom.lisp:206 scm/anthy-key-custom.lisp:212
 #: scm/anthy-key-custom.lisp:218 scm/anthy-key-custom.lisp:224
-#: scm/anthy-key-custom.lisp:230 scm/canna-key-custom.lisp:52
+#: scm/anthy-key-custom.lisp:230 scm/anthy-key-custom.lisp:236
+#: scm/anthy-key-custom.lisp:242 scm/canna-key-custom.lisp:52
 #: scm/canna-key-custom.lisp:58 scm/canna-key-custom.lisp:64
 #: scm/canna-key-custom.lisp:70 scm/canna-key-custom.lisp:76
 #: scm/canna-key-custom.lisp:82 scm/canna-key-custom.lisp:88
-#: scm/canna-key-custom.lisp:94 scm/canna-key-custom.lisp:103
-#: scm/canna-key-custom.lisp:110 scm/canna-key-custom.lisp:116
-#: scm/canna-key-custom.lisp:122 scm/canna-key-custom.lisp:128
+#: scm/canna-key-custom.lisp:94 scm/canna-key-custom.lisp:100
+#: scm/canna-key-custom.lisp:106 scm/canna-key-custom.lisp:112
+#: scm/canna-key-custom.lisp:121 scm/canna-key-custom.lisp:128
 #: scm/canna-key-custom.lisp:134 scm/canna-key-custom.lisp:140
-#: scm/canna-key-custom.lisp:161 scm/canna-key-custom.lisp:167
+#: scm/canna-key-custom.lisp:146 scm/canna-key-custom.lisp:152
+#: scm/canna-key-custom.lisp:158 scm/canna-key-custom.lisp:164
+#: scm/canna-key-custom.lisp:170 scm/canna-key-custom.lisp:179
 #: scm/canna-key-custom.lisp:185 scm/canna-key-custom.lisp:191
 #: scm/canna-key-custom.lisp:197 scm/canna-key-custom.lisp:203
+#: scm/canna-key-custom.lisp:209 scm/canna-key-custom.lisp:215
+#: scm/canna-key-custom.lisp:221 scm/canna-key-custom.lisp:227
 #: scm/generic-key-custom.lisp:48 scm/generic-key-custom.lisp:54
 #: scm/generic-key-custom.lisp:60 scm/generic-key-custom.lisp:66
 #: scm/generic-key-custom.lisp:72 scm/generic-key-custom.lisp:78
@@ -860,12 +888,13 @@
 #: scm/skk-key-custom.lisp:161 scm/skk-key-custom.lisp:167
 #: scm/skk-key-custom.lisp:173 scm/skk-key-custom.lisp:179
 #: scm/skk-key-custom.lisp:185 scm/skk-key-custom.lisp:191
-#: scm/skk-key-custom.lisp:209 scm/skk-key-custom.lisp:215
+#: scm/skk-key-custom.lisp:197 scm/skk-key-custom.lisp:215
 #: scm/skk-key-custom.lisp:221 scm/skk-key-custom.lisp:227
 #: scm/skk-key-custom.lisp:233 scm/skk-key-custom.lisp:239
-#: scm/skk-key-custom.lisp:245 scm/spellcheck-custom.lisp:72
-#: scm/tutcode-key-custom.lisp:76 scm/tutcode-key-custom.lisp:82
-#: scm/tutcode-key-custom.lisp:88 scm/tutcode-key-custom.lisp:95
+#: scm/skk-key-custom.lisp:245 scm/skk-key-custom.lisp:251
+#: scm/spellcheck-custom.lisp:72 scm/tutcode-key-custom.lisp:76
+#: scm/tutcode-key-custom.lisp:82 scm/tutcode-key-custom.lisp:88
+#: scm/tutcode-key-custom.lisp:95
 msgid "long description will be here"
 msgstr ""
 
@@ -890,97 +919,105 @@
 msgstr ""
 
 #: scm/anthy-key-custom.lisp:87
+msgid "[Anthy] convert to hiragana"
+msgstr ""
+
+#: scm/anthy-key-custom.lisp:93
 msgid "[Anthy] convert to katakana"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:93
+#: scm/anthy-key-custom.lisp:99
 msgid "[Anthy] convert to halfwidth katakana"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:99
+#: scm/anthy-key-custom.lisp:105
 msgid "[Anthy] commit as transposed kana"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:105
+#: scm/anthy-key-custom.lisp:111
 msgid "[Anthy] fullwidth alphanumeric mode"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:112
+#: scm/anthy-key-custom.lisp:118
 msgid "[Anthy] halfwidth katakana mode"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:118
+#: scm/anthy-key-custom.lisp:124
 msgid "[Anthy] toggle hiragana/katakana mode"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:129
+#: scm/anthy-key-custom.lisp:135
 msgid "[Anthy] on"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:135
+#: scm/anthy-key-custom.lisp:141
 msgid "[Anthy] off"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:141
+#: scm/anthy-key-custom.lisp:147
 msgid "[Anthy] begin conversion"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:147
+#: scm/anthy-key-custom.lisp:153
 msgid "[Anthy] commit"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:153
+#: scm/anthy-key-custom.lisp:159
 msgid "[Anthy] cancel"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:159
+#: scm/anthy-key-custom.lisp:165
 msgid "[Anthy] next candidate"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:165
+#: scm/anthy-key-custom.lisp:171
 msgid "[Anthy] previous candidate"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:171
+#: scm/anthy-key-custom.lisp:177
 msgid "[Anthy] next page of candidate window"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:177
+#: scm/anthy-key-custom.lisp:183
 msgid "[Anthy] previous page of candidate window"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:187
+#: scm/anthy-key-custom.lisp:193
 msgid "[Anthy] beginning of preedit"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:193
+#: scm/anthy-key-custom.lisp:199
 msgid "[Anthy] end of preedit"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:199
+#: scm/anthy-key-custom.lisp:205
 msgid "[Anthy] erase after cursor"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:205
+#: scm/anthy-key-custom.lisp:211
 msgid "[Anthy] erase before cursor"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:211
+#: scm/anthy-key-custom.lisp:217
 msgid "[Anthy] backspace"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:217
+#: scm/anthy-key-custom.lisp:223
 msgid "[Anthy] delete"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:223
+#: scm/anthy-key-custom.lisp:229
 msgid "[Anthy] go left"
 msgstr ""
 
-#: scm/anthy-key-custom.lisp:229
+#: scm/anthy-key-custom.lisp:235
 msgid "[Anthy] go right"
 msgstr ""
 
+#: scm/anthy-key-custom.lisp:241
+msgid "[Anthy] anthy-vi-escape-key?"
+msgstr ""
+
 #: scm/canna-custom.lisp:35
 msgid "Canna"
 msgstr ""
@@ -989,11 +1026,11 @@
 msgid "Canna server"
 msgstr ""
 
-#: scm/canna-custom.lisp:294
+#: scm/canna-custom.lisp:300
 msgid "Use Canna server"
 msgstr ""
 
-#: scm/canna-custom.lisp:300
+#: scm/canna-custom.lisp:306
 msgid "Canna server name"
 msgstr ""
 
@@ -1026,73 +1063,105 @@
 msgstr ""
 
 #: scm/canna-key-custom.lisp:75
+msgid "[Canna] convert to hiragana"
+msgstr ""
+
+#: scm/canna-key-custom.lisp:81
+msgid "[Canna] convert to katakana"
+msgstr ""
+
+#: scm/canna-key-custom.lisp:87
+msgid "[Canna] convert to halfwidth katakana"
+msgstr ""
+
+#: scm/canna-key-custom.lisp:93
 msgid "[Canna] commit as transposed kana"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:81
+#: scm/canna-key-custom.lisp:99
 msgid "[Canna] fullwidth alphanumeric mode"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:87
+#: scm/canna-key-custom.lisp:105
 msgid "[Canna] halfwidth katakana mode"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:93
+#: scm/canna-key-custom.lisp:111
 msgid "[Canna] toggle hiragana/katakana mode"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:102
+#: scm/canna-key-custom.lisp:120
 msgid "[Canna] on"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:109
+#: scm/canna-key-custom.lisp:127
 msgid "[Canna] off"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:115
+#: scm/canna-key-custom.lisp:133
 msgid "[Canna] begin conversion"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:121
+#: scm/canna-key-custom.lisp:139
 msgid "[Canna] commit"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:127
+#: scm/canna-key-custom.lisp:145
 msgid "[Canna] cancel"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:133
+#: scm/canna-key-custom.lisp:151
 msgid "[Canna] next candidate"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:139
+#: scm/canna-key-custom.lisp:157
 msgid "[Canna] previous candidate"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:160
+#: scm/canna-key-custom.lisp:163
+msgid "[Canna] next page of candidate window"
+msgstr ""
+
+#: scm/canna-key-custom.lisp:169
+msgid "[Canna] previous page of candidate window"
+msgstr ""
+
+#: scm/canna-key-custom.lisp:178
 msgid "[Canna] beginning of preedit"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:166
+#: scm/canna-key-custom.lisp:184
 msgid "[Canna] end of preedit"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:184
+#: scm/canna-key-custom.lisp:190
+msgid "[Canna] erase after cursor"
+msgstr ""
+
+#: scm/canna-key-custom.lisp:196
+msgid "[Canna] erase before cursor"
+msgstr ""
+
+#: scm/canna-key-custom.lisp:202
 msgid "[Canna] backspace"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:190
+#: scm/canna-key-custom.lisp:208
 msgid "[Canna] delete"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:196
+#: scm/canna-key-custom.lisp:214
 msgid "[Canna] go left"
 msgstr ""
 
-#: scm/canna-key-custom.lisp:202
+#: scm/canna-key-custom.lisp:220
 msgid "[Canna] go right"
 msgstr ""
 
+#: scm/canna-key-custom.lisp:226
+msgid "[Canna] canna-vi-escape-key?"
+msgstr ""
+
 #: scm/direct.lisp:53
 msgid "direct"
 msgstr ""
@@ -1205,175 +1274,187 @@
 msgid " Mode"
 msgstr ""
 
-#: scm/hangul.lisp:93
+#: scm/hangul.lisp:107
 msgid "Hangul (2-bul)"
 msgstr ""
 
-#: scm/hangul.lisp:94
+#: scm/hangul.lisp:108
 msgid "2-bul style hangul input method"
 msgstr ""
 
-#: scm/hangul.lisp:102
+#: scm/hangul.lisp:116
 msgid "Hangul (3-bul)"
 msgstr ""
 
-#: scm/hangul.lisp:103
+#: scm/hangul.lisp:117
 msgid "3-bul style hangul input method"
 msgstr ""
 
-#: scm/hangul.lisp:110
+#: scm/hangul.lisp:124
 msgid "Hangul (Romaja)"
 msgstr ""
 
-#: scm/hangul.lisp:111
+#: scm/hangul.lisp:125
 msgid "Romaja input style hangul input method"
 msgstr ""
 
-#: scm/im-custom.lisp:45
+#: scm/im-custom.lisp:46
 msgid "Global settings"
 msgstr ""
 
-#: scm/im-custom.lisp:49
+#: scm/im-custom.lisp:50
 msgid "Toolbar"
 msgstr ""
 
-#: scm/im-custom.lisp:54
+#: scm/im-custom.lisp:55
 msgid "Advanced settings"
 msgstr ""
 
-#: scm/im-custom.lisp:59
+#: scm/im-custom.lisp:60
 msgid "Buttons"
 msgstr ""
 
-#: scm/im-custom.lisp:64
+#: scm/im-custom.lisp:65
 msgid "Candidate window"
 msgstr ""
 
-#: scm/im-custom.lisp:69
+#: scm/im-custom.lisp:70
 msgid "Annotation"
 msgstr ""
 
-#: scm/im-custom.lisp:74
+#: scm/im-custom.lisp:75
 msgid "Dictionary"
 msgstr ""
 
-#: scm/im-custom.lisp:84
+#: scm/im-custom.lisp:85
 msgid "Mode transition"
 msgstr ""
 
-#: scm/im-custom.lisp:89
+#: scm/im-custom.lisp:90
 msgid "Special operation"
 msgstr ""
 
-#: scm/im-custom.lisp:94 scm/im-custom.lisp:125
+#: scm/im-custom.lisp:95 scm/im-custom.lisp:126
 msgid "Default input method"
 msgstr ""
 
-#: scm/im-custom.lisp:99
+#: scm/im-custom.lisp:100
 msgid "Input method deployment"
 msgstr ""
 
-#: scm/im-custom.lisp:104
+#: scm/im-custom.lisp:105
 msgid "Visual preference"
 msgstr ""
 
-#: scm/im-custom.lisp:115
+#: scm/im-custom.lisp:116
 msgid "Specify default IM"
 msgstr ""
 
-#: scm/im-custom.lisp:218
+#: scm/im-custom.lisp:228
 msgid "Enabled input methods"
 msgstr ""
 
-#: scm/im-custom.lisp:276 scm/skk-custom.lisp:70 scm/skk-custom.lisp:371
+#: scm/im-custom.lisp:286 scm/skk-custom.lisp:70 scm/skk-custom.lisp:370
 msgid "uim"
 msgstr ""
 
-#: scm/im-custom.lisp:276 scm/skk-custom.lisp:70 scm/skk-custom.lisp:371
+#: scm/im-custom.lisp:286 scm/skk-custom.lisp:70 scm/skk-custom.lisp:370
 msgid "uim native"
 msgstr ""
 
-#: scm/im-custom.lisp:277
+#: scm/im-custom.lisp:287
 msgid "ATOK like"
 msgstr ""
 
-#: scm/im-custom.lisp:277
+#: scm/im-custom.lisp:287
 msgid "Similar to ATOK"
 msgstr ""
 
-#: scm/im-custom.lisp:278
+#: scm/im-custom.lisp:288
 msgid "Preedit color"
 msgstr ""
 
-#: scm/im-custom.lisp:286 scm/im-custom.lisp:287
+#: scm/im-custom.lisp:296 scm/im-custom.lisp:297
 msgid "Adjacent to cursor"
 msgstr ""
 
-#: scm/im-custom.lisp:289 scm/im-custom.lisp:290
+#: scm/im-custom.lisp:299 scm/im-custom.lisp:300
 msgid "Left end of preedit area"
 msgstr ""
 
-#: scm/im-custom.lisp:292 scm/im-custom.lisp:293
+#: scm/im-custom.lisp:302 scm/im-custom.lisp:303
 msgid "Right end of preedit area"
 msgstr ""
 
-#: scm/im-custom.lisp:294
+#: scm/im-custom.lisp:304
 msgid "Candidate window position"
 msgstr ""
 
-#: scm/im-custom.lisp:300
+#: scm/im-custom.lisp:310
 msgid "Enable lazy input method loading for fast startup"
 msgstr ""
 
-#: scm/im-custom.lisp:307
+#: scm/im-custom.lisp:317
 msgid "Show input method switcher button on toolbar"
 msgstr ""
 
-#: scm/im-custom.lisp:313
+#: scm/im-custom.lisp:323
 msgid "Show uim preference tool button on toolbar"
 msgstr ""
 
-#: scm/im-custom.lisp:319
+#: scm/im-custom.lisp:329
 msgid "Show uim Japanese dictionary tool button on toolbar"
 msgstr ""
 
-#: scm/im-custom.lisp:325
+#: scm/im-custom.lisp:335
 msgid "Show uim input pad button on toolbar"
 msgstr ""
 
-#: scm/im-custom.lisp:331
+#: scm/im-custom.lisp:341
 msgid "Show uim handwriting-input pad button on toolbar"
 msgstr ""
 
-#: scm/im-custom.lisp:337
+#: scm/im-custom.lisp:347
 msgid "Show uim help button on toolbar"
 msgstr ""
 
-#: scm/im-custom.lisp:343
+#: scm/im-custom.lisp:353
 msgid "Show input mode nearby cursor"
 msgstr ""
 
-#: scm/im-custom.lisp:350
+#: scm/im-custom.lisp:359
+msgid "Time length for showing input mode nearby the cursor"
+msgstr ""
+
+#: scm/im-custom.lisp:360
+msgid "Set 0 to show indicator always."
+msgstr ""
+
+#: scm/im-custom.lisp:366
 msgid "EB library settings"
 msgstr ""
 
-#: scm/im-custom.lisp:356
+#: scm/im-custom.lisp:372
 msgid "Use EB library to search annotations"
 msgstr ""
 
-#: scm/im-custom.lisp:363
+#: scm/im-custom.lisp:379
 msgid "The directory which contains EB dictionary file"
 msgstr ""
 
-#: scm/im-custom.lisp:369
+#: scm/im-custom.lisp:385
 msgid "XIM settings"
 msgstr ""
 
-#: scm/im-custom.lisp:375
+#: scm/im-custom.lisp:389
+msgid "Preedit settings of XIM"
+msgstr ""
+
+#: scm/im-custom.lisp:395
 msgid "Use anti-aliased fonts for Over-the-Spot/Root-Window preedit"
 msgstr ""
 
-#: scm/im-custom.lisp:381
+#: scm/im-custom.lisp:401
 msgid "Font name for preedit area (anti-aliased)"
 msgstr ""
 
@@ -1381,65 +1462,96 @@
 msgid "International Phonetic Alphabet (X-SAMPA)"
 msgstr ""
 
-#. I think that the name "euro" is not appropriate since it
-#. represents nation or geographic region.  -- YamaKen 2005-01-29
-#: scm/latin.lisp:582
+#: scm/latin.lisp:720
 msgid "Latin characters"
 msgstr ""
 
-#: scm/latin.lisp:583
+#: scm/latin.lisp:721
 msgid "Latin characters mainly used for Latin and German languages"
 msgstr ""
 
-#: scm/m17nlib.lisp:336
+#: scm/m17nlib.lisp:338
 msgid "An input method provided by the m17n library"
 msgstr ""
 
-#: scm/prime-custom.lisp:35
+#: scm/prime-custom.lisp:34
 msgid "PRIME"
 msgstr ""
 
-#: scm/prime-custom.lisp:36
-msgid "Japanese predictable input method"
+#: scm/prime-custom.lisp:35
+msgid "Japanese predictive input method"
 msgstr ""
 
-#: scm/prime-custom.lisp:63 scm/spellcheck-custom.lisp:65
-msgid "Always showing candidate window"
+#: scm/prime-custom.lisp:42
+msgid "PRIME (advanced)"
 msgstr ""
 
-#: scm/prime-custom.lisp:69
+#: scm/prime-custom.lisp:43
+msgid "Advanced settings for PRIME"
+msgstr ""
+
+#: scm/prime-custom.lisp:46 scm/prime-custom.lisp:52 scm/prime-custom.lisp:165
+#: uim/iso-639-1.def:105
+msgid "Japanese"
+msgstr ""
+
+#: scm/prime-custom.lisp:47
+msgid "Japanese specific settings"
+msgstr ""
+
+#: scm/prime-custom.lisp:53 uim/iso-639-1.def:74
+msgid "English"
+msgstr ""
+
+#: scm/prime-custom.lisp:54
+msgid "Default language"
+msgstr ""
+
+#: scm/prime-custom.lisp:60
 msgid "Enable auto register mode"
 msgstr ""
 
-#: scm/prime-custom.lisp:75
-msgid "Enable pseudo mode cursor"
+#: scm/prime-custom.lisp:66
+msgid "Wide width (Zenkaku)"
 msgstr ""
 
-#: scm/prime-custom.lisp:81
-msgid "Show candidate annotations"
+#: scm/prime-custom.lisp:67
+msgid "Half width (Hankaku)"
 msgstr ""
 
-#: scm/prime-custom.lisp:89
-msgid "Show usage examples of candidate words"
+#: scm/prime-custom.lisp:68
+msgid "Space character"
 msgstr ""
 
-#: scm/prime-custom.lisp:95
+#: scm/prime-custom.lisp:74
 msgid "Use Unix Domain Socket to communicate with PRIME"
 msgstr ""
 
-#: scm/prime-custom.lisp:101
-msgid "Mask preedit strings (For T-Code users)"
+#: scm/prime-custom.lisp:98 scm/spellcheck-custom.lisp:65
+msgid "Always showing candidate window"
 msgstr ""
 
-#: scm/prime-custom.lisp:123
-msgid "PRIME off"
+#: scm/prime-custom.lisp:105
+msgid "Show usage examples of candidate words"
 msgstr ""
 
-#: scm/prime-custom.lisp:127 uim/iso-639-1.def:103
-msgid "Japanese"
+#: scm/prime-custom.lisp:112
+msgid "Show candidate annotations"
 msgstr ""
 
-#: scm/prime-custom.lisp:128
+#: scm/prime-custom.lisp:120
+msgid "Show candidate forms"
+msgstr ""
+
+#: scm/prime-custom.lisp:140
+msgid "Enable pseudo mode cursor"
+msgstr ""
+
+#: scm/prime-custom.lisp:161
+msgid "PRIME off"
+msgstr ""
+
+#: scm/prime-custom.lisp:166
 msgid "PRIME on"
 msgstr ""
 
@@ -1456,27 +1568,27 @@
 msgstr ""
 
 #: scm/prime-key-custom.lisp:75
-msgid "[PRIME] regist a word"
+msgid "[PRIME] prime-register-key"
 msgstr ""
 
 #: scm/prime-key-custom.lisp:81
-msgid "[PRIME] hiragana typing mode"
+msgid "[PRIME] prime-typing-mode-hiragana-key"
 msgstr ""
 
 #: scm/prime-key-custom.lisp:87
-msgid "[PRIME] katakana typing mode"
+msgid "[PRIME] prime-typing-mode-katakana-key"
 msgstr ""
 
 #: scm/prime-key-custom.lisp:93
-msgid "[PRIME] halfwidth katakana typing mode"
+msgid "[PRIME] prime-typing-mode-hankana-key"
 msgstr ""
 
 #: scm/prime-key-custom.lisp:99
-msgid "[PRIME] wide ascii typing mode"
+msgid "[PRIME] prime-typing-mode-wideascii-key"
 msgstr ""
 
 #: scm/prime-key-custom.lisp:105
-msgid "[PRIME] ascii typing mode"
+msgid "[PRIME] prime-typing-mode-ascii-key"
 msgstr ""
 
 #: scm/prime-key-custom.lisp:114
@@ -1544,7 +1656,7 @@
 msgstr ""
 
 #: scm/pyload.lisp:42
-msgid "Pinyin (Simplified)"
+msgid "New Pinyin (Simplified)"
 msgstr ""
 
 #: scm/pyload.lisp:43
@@ -1599,7 +1711,7 @@
 msgid "ddskk-like"
 msgstr ""
 
-#: scm/skk-custom.lisp:71 scm/skk-custom.lisp:370
+#: scm/skk-custom.lisp:71 scm/skk-custom.lisp:369
 msgid "Similar to ddskk"
 msgstr ""
 
@@ -1611,63 +1723,59 @@
 msgid "Set candidate window behavior manually"
 msgstr ""
 
-#: scm/skk-custom.lisp:328
+#: scm/skk-custom.lisp:327
 msgid "Use skkserv instead of SKK-JISYO"
 msgstr ""
 
-#: scm/skk-custom.lisp:334
+#: scm/skk-custom.lisp:333
 msgid "Port number of skkserv"
 msgstr ""
 
-#: scm/skk-custom.lisp:346
+#: scm/skk-custom.lisp:345
 msgid "Dictionary file"
 msgstr ""
 
-#: scm/skk-custom.lisp:353
+#: scm/skk-custom.lisp:352
 msgid "Personal dictionary file"
 msgstr ""
 
-#: scm/skk-custom.lisp:360
+#: scm/skk-custom.lisp:359
 msgid "Personal dictionary file (dedicated to uim)"
 msgstr ""
 
-#: scm/skk-custom.lisp:370
+#: scm/skk-custom.lisp:369
 msgid "ddskk"
 msgstr ""
 
-#: scm/skk-custom.lisp:372
+#: scm/skk-custom.lisp:371
 msgid "Visual style"
 msgstr ""
 
-#: scm/skk-custom.lisp:378
+#: scm/skk-custom.lisp:377
 msgid "Use recursive learning"
 msgstr ""
 
-#: scm/skk-custom.lisp:384
+#: scm/skk-custom.lisp:383
 msgid "Use numeric conversion"
 msgstr ""
 
-#: scm/skk-custom.lisp:390
+#: scm/skk-custom.lisp:389
 msgid "Enable auto conversion with punctuation marks"
 msgstr ""
 
-#: scm/skk-custom.lisp:400
+#: scm/skk-custom.lisp:399
 msgid "Show annotation of candidate word"
 msgstr ""
 
-#: scm/skk-custom.lisp:406
+#: scm/skk-custom.lisp:405
 msgid "Show annotation also in preedit area"
 msgstr ""
 
-#: scm/skk-custom.lisp:427
-msgid "Friendly for vi user"
-msgstr ""
-
-#: scm/skk-custom.lisp:433
+#: scm/skk-custom.lisp:432
 msgid "Use Enter key as just committing (egg-like operation)"
 msgstr ""
 
-#: scm/skk-custom.lisp:440
+#: scm/skk-custom.lisp:439
 msgid "Commit newline as ASCII string instead of native key-event"
 msgstr ""
 
@@ -1759,31 +1867,35 @@
 msgid "[SKK] skk-state-direct-no-preedit-nop-key?"
 msgstr ""
 
-#: scm/skk-key-custom.lisp:208
+#: scm/skk-key-custom.lisp:196
+msgid "[SKK] skk-purge-candidate-key?"
+msgstr ""
+
+#: scm/skk-key-custom.lisp:214
 msgid "[SKK] next candidate"
 msgstr ""
 
-#: scm/skk-key-custom.lisp:214
+#: scm/skk-key-custom.lisp:220
 msgid "[SKK] previous candidate"
 msgstr ""
 
-#: scm/skk-key-custom.lisp:220
+#: scm/skk-key-custom.lisp:226
 msgid "[SKK] next page of candidate window"
 msgstr ""
 
-#: scm/skk-key-custom.lisp:226
+#: scm/skk-key-custom.lisp:232
 msgid "[SKK] previous page of candidate window"
 msgstr ""
 
-#: scm/skk-key-custom.lisp:232
+#: scm/skk-key-custom.lisp:238
 msgid "[SKK] backspace"
 msgstr ""
 
-#: scm/skk-key-custom.lisp:238
+#: scm/skk-key-custom.lisp:244
 msgid "[SKK] go left"
 msgstr ""
 
-#: scm/skk-key-custom.lisp:244
+#: scm/skk-key-custom.lisp:250
 msgid "[SKK] go right"
 msgstr ""
 
@@ -1933,520 +2045,528 @@
 msgstr ""
 
 #: uim/iso-639-1.def:52
-msgid "Bhutani"
+msgid "Bengali"
 msgstr ""
 
 #: uim/iso-639-1.def:53
-msgid "Bihari"
+msgid "Bhutani"
 msgstr ""
 
 #: uim/iso-639-1.def:54
-msgid "Bislama"
+msgid "Bihari"
 msgstr ""
 
 #: uim/iso-639-1.def:55
-msgid "Breton"
+msgid "Bislama"
 msgstr ""
 
 #: uim/iso-639-1.def:56
-msgid "Bulgarian"
+msgid "Breton"
 msgstr ""
 
 #: uim/iso-639-1.def:57
-msgid "Burmese"
+msgid "Bulgarian"
 msgstr ""
 
 #: uim/iso-639-1.def:58
-msgid "Byelorussian (Belarusian)"
+msgid "Burmese"
 msgstr ""
 
 #: uim/iso-639-1.def:59
-msgid "Cambodian"
+msgid "Byelorussian (Belarusian)"
 msgstr ""
 
 #: uim/iso-639-1.def:60
-msgid "Catalan"
+msgid "Byelorussian"
 msgstr ""
 
 #: uim/iso-639-1.def:61
-msgid "Chewa"
+msgid "Cambodian"
 msgstr ""
 
 #: uim/iso-639-1.def:62
-msgid "Chinese (Simplified)"
+msgid "Catalan"
 msgstr ""
 
-#: uim/iso-639-1.def:63 uim/iso-639-1.def:64
-msgid "Chinese (Traditional)"
+#: uim/iso-639-1.def:63
+msgid "Chewa"
 msgstr ""
 
-#: uim/iso-639-1.def:65
-msgid "Chinese"
+#: uim/iso-639-1.def:64
+msgid "Chinese (Simplified)"
 msgstr ""
 
-#: uim/iso-639-1.def:66
-msgid "Corsican"
+#: uim/iso-639-1.def:65 uim/iso-639-1.def:66
+msgid "Chinese (Traditional)"
 msgstr ""
 
 #: uim/iso-639-1.def:67
-msgid "Croatian"
+msgid "Chinese"
 msgstr ""
 
 #: uim/iso-639-1.def:68
-msgid "Czech"
+msgid "Corsican"
 msgstr ""
 
 #: uim/iso-639-1.def:69
-msgid "Danish"
+msgid "Croatian"
 msgstr ""
 
 #: uim/iso-639-1.def:70
-msgid "Divehi"
+msgid "Czech"
 msgstr ""
 
 #: uim/iso-639-1.def:71
-msgid "Dutch"
+msgid "Danish"
 msgstr ""
 
 #: uim/iso-639-1.def:72
-msgid "English"
+msgid "Dhivehi"
 msgstr ""
 
 #: uim/iso-639-1.def:73
+msgid "Dutch"
+msgstr ""
+
+#: uim/iso-639-1.def:75
 msgid "Esperanto"
 msgstr ""
 
-#: uim/iso-639-1.def:74
+#: uim/iso-639-1.def:76
 msgid "Estonian"
 msgstr ""
 
-#: uim/iso-639-1.def:75
+#: uim/iso-639-1.def:77
 msgid "Faeroese"
 msgstr ""
 
-#: uim/iso-639-1.def:76
+#: uim/iso-639-1.def:78
 msgid "Farsi"
 msgstr ""
 
-#: uim/iso-639-1.def:77
+#: uim/iso-639-1.def:79
 msgid "Fiji"
 msgstr ""
 
-#: uim/iso-639-1.def:78
+#: uim/iso-639-1.def:80
 msgid "Finnish"
 msgstr ""
 
-#: uim/iso-639-1.def:79
+#: uim/iso-639-1.def:81
 msgid "Flemish"
 msgstr ""
 
 #. defined as "nl" in the source
-#: uim/iso-639-1.def:80
+#: uim/iso-639-1.def:82
 msgid "French"
 msgstr ""
 
-#: uim/iso-639-1.def:81
+#: uim/iso-639-1.def:83
 msgid "Frisian"
 msgstr ""
 
-#: uim/iso-639-1.def:82
+#: uim/iso-639-1.def:84
 msgid "Galician"
 msgstr ""
 
-#: uim/iso-639-1.def:83
+#: uim/iso-639-1.def:85
 msgid "Gaelic (Scottish)"
 msgstr ""
 
-#: uim/iso-639-1.def:84
+#: uim/iso-639-1.def:86
 msgid "Gaelic (Manx)"
 msgstr ""
 
-#: uim/iso-639-1.def:85
+#: uim/iso-639-1.def:87
 msgid "Georgian"
 msgstr ""
 
-#: uim/iso-639-1.def:86
+#: uim/iso-639-1.def:88
 msgid "German"
 msgstr ""
 
-#: uim/iso-639-1.def:87
+#: uim/iso-639-1.def:89
 msgid "Greek"
 msgstr ""
 
-#: uim/iso-639-1.def:88
+#: uim/iso-639-1.def:90
 msgid "Greenlandic"
 msgstr ""
 
-#: uim/iso-639-1.def:89
+#: uim/iso-639-1.def:91
 msgid "Guarani"
 msgstr ""
 
-#: uim/iso-639-1.def:90
+#: uim/iso-639-1.def:92
 msgid "Gujarati"
 msgstr ""
 
-#: uim/iso-639-1.def:91
+#: uim/iso-639-1.def:93
 msgid "Hausa"
 msgstr ""
 
-#: uim/iso-639-1.def:92
+#: uim/iso-639-1.def:94
 msgid "Hebrew"
 msgstr ""
 
-#: uim/iso-639-1.def:93
+#: uim/iso-639-1.def:95
 msgid "Hindi"
 msgstr ""
 
-#: uim/iso-639-1.def:94
+#: uim/iso-639-1.def:96
 msgid "Hungarian"
 msgstr ""
 
-#: uim/iso-639-1.def:95
+#: uim/iso-639-1.def:97
 msgid "Icelandic"
 msgstr ""
 
-#: uim/iso-639-1.def:96
+#: uim/iso-639-1.def:98
 msgid "Indonesian"
 msgstr ""
 
-#: uim/iso-639-1.def:97
+#: uim/iso-639-1.def:99
 msgid "Interlingua"
 msgstr ""
 
-#: uim/iso-639-1.def:98
+#: uim/iso-639-1.def:100
 msgid "Interlingue"
 msgstr ""
 
-#: uim/iso-639-1.def:99
+#: uim/iso-639-1.def:101
 msgid "Inuktitut"
 msgstr ""
 
-#: uim/iso-639-1.def:100
+#: uim/iso-639-1.def:102
 msgid "Inupiak"
 msgstr ""
 
-#: uim/iso-639-1.def:101
+#: uim/iso-639-1.def:103
 msgid "Irish"
 msgstr ""
 
-#: uim/iso-639-1.def:102
+#: uim/iso-639-1.def:104
 msgid "Italian"
 msgstr ""
 
-#: uim/iso-639-1.def:104
+#: uim/iso-639-1.def:106
 msgid "Javanese"
 msgstr ""
 
-#: uim/iso-639-1.def:105
+#: uim/iso-639-1.def:107
 msgid "Kannada"
 msgstr ""
 
-#: uim/iso-639-1.def:106
+#: uim/iso-639-1.def:108
 msgid "Kashmiri"
 msgstr ""
 
-#: uim/iso-639-1.def:107
+#: uim/iso-639-1.def:109
 msgid "Kazakh"
 msgstr ""
 
-#: uim/iso-639-1.def:108
+#: uim/iso-639-1.def:110
 msgid "Kinyarwanda (Ruanda)"
 msgstr ""
 
-#: uim/iso-639-1.def:109
+#: uim/iso-639-1.def:111
 msgid "Kirghiz"
 msgstr ""
 
-#: uim/iso-639-1.def:110
+#: uim/iso-639-1.def:112
 msgid "Kirundi (Rundi)"
 msgstr ""
 
-#: uim/iso-639-1.def:111
+#: uim/iso-639-1.def:113
 msgid "Konkani"
 msgstr ""
 
 #. defined as "kok" in ISO 639-2
-#: uim/iso-639-1.def:112
+#: uim/iso-639-1.def:114
 msgid "Korean"
 msgstr ""
 
-#: uim/iso-639-1.def:113
+#: uim/iso-639-1.def:115
 msgid "Kurdish"
 msgstr ""
 
-#: uim/iso-639-1.def:114
+#: uim/iso-639-1.def:116
 msgid "Laothian"
 msgstr ""
 
-#: uim/iso-639-1.def:115
+#: uim/iso-639-1.def:117
 msgid "Latin"
 msgstr ""
 
-#: uim/iso-639-1.def:116
+#: uim/iso-639-1.def:118
 msgid "Latvian (Lettish)"
 msgstr ""
 
-#: uim/iso-639-1.def:117
+#: uim/iso-639-1.def:119
 msgid "Lingala"
 msgstr ""
 
-#: uim/iso-639-1.def:118
+#: uim/iso-639-1.def:120
 msgid "Lithuanian"
 msgstr ""
 
-#: uim/iso-639-1.def:119
+#: uim/iso-639-1.def:121
 msgid "Macedonian"
 msgstr ""
 
-#: uim/iso-639-1.def:120
+#: uim/iso-639-1.def:122
 msgid "Malagasy"
 msgstr ""
 
-#: uim/iso-639-1.def:121
+#: uim/iso-639-1.def:123
 msgid "Malay"
 msgstr ""
 
-#: uim/iso-639-1.def:122
+#: uim/iso-639-1.def:124
 msgid "Malayalam"
 msgstr ""
 
-#: uim/iso-639-1.def:123
+#: uim/iso-639-1.def:125
 msgid "Maltese"
 msgstr ""
 
-#: uim/iso-639-1.def:124
+#: uim/iso-639-1.def:126
 msgid "Maori"
 msgstr ""
 
-#: uim/iso-639-1.def:125
+#: uim/iso-639-1.def:127
 msgid "Marathi"
 msgstr ""
 
-#: uim/iso-639-1.def:126
+#: uim/iso-639-1.def:128
 msgid "Moldavian"
 msgstr ""
 
-#: uim/iso-639-1.def:127
+#: uim/iso-639-1.def:129
 msgid "Mongolian"
 msgstr ""
 
-#: uim/iso-639-1.def:128
+#: uim/iso-639-1.def:130
+msgid "Myanmar"
+msgstr ""
+
+#: uim/iso-639-1.def:131
 msgid "Nauru"
 msgstr ""
 
-#: uim/iso-639-1.def:129
+#: uim/iso-639-1.def:132
 msgid "Nepali"
 msgstr ""
 
-#: uim/iso-639-1.def:130
+#: uim/iso-639-1.def:133
 msgid "Norwegian"
 msgstr ""
 
-#: uim/iso-639-1.def:131
+#: uim/iso-639-1.def:134
 msgid "Occitan"
 msgstr ""
 
-#: uim/iso-639-1.def:132
+#: uim/iso-639-1.def:135
 msgid "Oriya"
 msgstr ""
 
-#: uim/iso-639-1.def:133
+#: uim/iso-639-1.def:136
 msgid "Oromo (Afan, Galla)"
 msgstr ""
 
-#: uim/iso-639-1.def:134
+#: uim/iso-639-1.def:137
 msgid "Pashto (Pushto)"
 msgstr ""
 
-#: uim/iso-639-1.def:135
+#: uim/iso-639-1.def:138
 msgid "Polish"
 msgstr ""
 
-#: uim/iso-639-1.def:136
+#: uim/iso-639-1.def:139
 msgid "Portuguese"
 msgstr ""
 
-#: uim/iso-639-1.def:137
+#: uim/iso-639-1.def:140
 msgid "Punjabi"
 msgstr ""
 
-#: uim/iso-639-1.def:138
+#: uim/iso-639-1.def:141
 msgid "Quechua"
 msgstr ""
 
-#: uim/iso-639-1.def:139
+#: uim/iso-639-1.def:142
 msgid "Romanian"
 msgstr ""
 
-#: uim/iso-639-1.def:140
+#: uim/iso-639-1.def:143
 msgid "Russian"
 msgstr ""
 
-#: uim/iso-639-1.def:141
+#: uim/iso-639-1.def:144
 msgid "Samoan"
 msgstr ""
 
-#: uim/iso-639-1.def:142
+#: uim/iso-639-1.def:145
 msgid "Sangro"
 msgstr ""
 
-#: uim/iso-639-1.def:143
+#: uim/iso-639-1.def:146
 msgid "Sanskrit"
 msgstr ""
 
-#: uim/iso-639-1.def:144
+#: uim/iso-639-1.def:147
 msgid "Serbian"
 msgstr ""
 
-#: uim/iso-639-1.def:145
+#: uim/iso-639-1.def:148
 msgid "Sesotho"
 msgstr ""
 
-#: uim/iso-639-1.def:146
+#: uim/iso-639-1.def:149
 msgid "Setswana"
 msgstr ""
 
-#: uim/iso-639-1.def:147
+#: uim/iso-639-1.def:150
 msgid "Shona"
 msgstr ""
 
-#: uim/iso-639-1.def:148
+#: uim/iso-639-1.def:151
 msgid "Sindhi"
 msgstr ""
 
-#: uim/iso-639-1.def:149
+#: uim/iso-639-1.def:152
 msgid "Sinhalese"
 msgstr ""
 
-#: uim/iso-639-1.def:150
+#: uim/iso-639-1.def:153
 msgid "Siswati"
 msgstr ""
 
-#: uim/iso-639-1.def:151
+#: uim/iso-639-1.def:154
 msgid "Slovak"
 msgstr ""
 
-#: uim/iso-639-1.def:152
+#: uim/iso-639-1.def:155
 msgid "Slovenian"
 msgstr ""
 
-#: uim/iso-639-1.def:153
+#: uim/iso-639-1.def:156
 msgid "Somali"
 msgstr ""
 
-#: uim/iso-639-1.def:154
+#: uim/iso-639-1.def:157
 msgid "Spanish"
 msgstr ""
 
-#: uim/iso-639-1.def:155
+#: uim/iso-639-1.def:158
 msgid "Sundanese"
 msgstr ""
 
-#: uim/iso-639-1.def:156
+#: uim/iso-639-1.def:159
 msgid "Swahili (Kiswahili)"
 msgstr ""
 
-#: uim/iso-639-1.def:157
+#: uim/iso-639-1.def:160
 msgid "Swedish"
 msgstr ""
 
-#: uim/iso-639-1.def:158
+#: uim/iso-639-1.def:161
 msgid "Syriac"
 msgstr ""
 
 #. defined as "syr" in ISO 639-2
-#: uim/iso-639-1.def:159
+#: uim/iso-639-1.def:162
 msgid "Tagalog"
 msgstr ""
 
-#: uim/iso-639-1.def:160
+#: uim/iso-639-1.def:163
 msgid "Tajik"
 msgstr ""
 
-#: uim/iso-639-1.def:161
+#: uim/iso-639-1.def:164
 msgid "Tamil"
 msgstr ""
 
-#: uim/iso-639-1.def:162
+#: uim/iso-639-1.def:165
 msgid "Tatar"
 msgstr ""
 
-#: uim/iso-639-1.def:163
+#: uim/iso-639-1.def:166
 msgid "Telugu"
 msgstr ""
 
-#: uim/iso-639-1.def:164
+#: uim/iso-639-1.def:167
 msgid "Thai"
 msgstr ""
 
-#: uim/iso-639-1.def:165
+#: uim/iso-639-1.def:168
 msgid "Tibetan"
 msgstr ""
 
-#: uim/iso-639-1.def:166
+#: uim/iso-639-1.def:169
 msgid "Tigrinya"
 msgstr ""
 
-#: uim/iso-639-1.def:167
+#: uim/iso-639-1.def:170
 msgid "Tonga"
 msgstr ""
 
-#: uim/iso-639-1.def:168
+#: uim/iso-639-1.def:171
 msgid "Tsonga"
 msgstr ""
 
-#: uim/iso-639-1.def:169
+#: uim/iso-639-1.def:172
 msgid "Turkish"
 msgstr ""
 
-#: uim/iso-639-1.def:170
+#: uim/iso-639-1.def:173
 msgid "Turkmen"
 msgstr ""
 
-#: uim/iso-639-1.def:171
+#: uim/iso-639-1.def:174
 msgid "Twi"
 msgstr ""
 
-#: uim/iso-639-1.def:172
+#: uim/iso-639-1.def:175
 msgid "Uighur"
 msgstr ""
 
-#: uim/iso-639-1.def:173
+#: uim/iso-639-1.def:176
 msgid "Ukrainian"
 msgstr ""
 
-#: uim/iso-639-1.def:174
+#: uim/iso-639-1.def:177
 msgid "Urdu"
 msgstr ""
 
-#: uim/iso-639-1.def:175
+#: uim/iso-639-1.def:178
 msgid "Uzbek"
 msgstr ""
 
-#: uim/iso-639-1.def:176
+#: uim/iso-639-1.def:179
 msgid "Vietnamese"
 msgstr ""
 
-#: uim/iso-639-1.def:177
+#: uim/iso-639-1.def:180
 msgid "Welsh"
 msgstr ""
 
-#: uim/iso-639-1.def:178
+#: uim/iso-639-1.def:181
 msgid "Wolof"
 msgstr ""
 
-#: uim/iso-639-1.def:179
+#: uim/iso-639-1.def:182
 msgid "Xhosa"
 msgstr ""
 
-#: uim/iso-639-1.def:180
+#: uim/iso-639-1.def:183
 msgid "Yiddish"
 msgstr ""
 
-#: uim/iso-639-1.def:181
+#: uim/iso-639-1.def:184
 msgid "Yoruba"
 msgstr ""
 
-#: uim/iso-639-1.def:182
+#: uim/iso-639-1.def:185
 msgid "Zulu"
 msgstr ""

Modified: branches/r5rs/qt/Makefile.am
===================================================================
--- branches/r5rs/qt/Makefile.am	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/qt/Makefile.am	2005-09-14 22:20:37 UTC (rev 1497)
@@ -51,11 +51,12 @@
 
 bin_PROGRAMS = \
 	uim-toolbar-qt \
-	uim-candwin-qt \
 	uim-im-switcher-qt \
 	uim-pref-qt \
 	uim-chardict-qt
 
+libexec_PROGRAMS = uim-candwin-qt
+
 # Immodule
 if QT_IMMODULE
 extra_LTLIBRARIES = libquiminputcontextplugin.la

Modified: branches/r5rs/scm/Makefile.am
===================================================================
--- branches/r5rs/scm/Makefile.am	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/scm/Makefile.am	2005-09-14 22:20:37 UTC (rev 1497)
@@ -35,52 +35,40 @@
 endif
 
 module_names = "pyload"
-
 if ANTHY
   module_names += "anthy"
 endif
-
 if CANNA
   module_names += "canna"
 endif
-
 if PRIME
   module_names += "prime"
 endif
-
 if SKK
   module_names += "skk"
 endif
-
 module_names += "tcode" "tutcode" "hangul" "viqr" "ipa-x-sampa" "latin"
-
 if M17NLIB
   module_names += "m17nlib"
 endif
-
 if SCIM
   module_names += "scim"
 endif
 
 
-
-# TODO: resolve dependency to $(top_builddir)/uim/uim-sh in proper way
+# TODO: resolve dependency to $(top_builddir)/uim/uim-module-manager
+# in a proper way
 installed-modules.scm: $(SCM_FILES)
-	$(MAKE) -C $(top_builddir)/uim uim-sh && \
-	$(ECHO) "(define installed-im-module-list '(" '$(module_names)' ")) \
-	         (require \"manage-modules.scm\") \
-	         (generate-installed-modules-scm)" \
-	| LIBUIM_VERBOSE=1 LIBUIM_VANILLA=1 LIBUIM_SCM_FILES=`(cd $(top_srcdir) && pwd)`/scm LIBUIM_PLUGIN_LIB_DIR=$(top_builddir)/uim/.libs \
-	  $(top_builddir)/uim/uim-sh -B >$@
+	$(MAKE) -C $(top_builddir)/uim uim-module-manager && \
+	LIBUIM_SCM_FILES=`(cd $(top_srcdir) && pwd)`/scm LIBUIM_PLUGIN_LIB_DIR=$(top_builddir)/uim/.libs \
+	  $(top_builddir)/uim/uim-module-manager \
+	    --path $(top_builddir)/scm --register $(module_names)
 
-# TODO: resolve dependency to $(top_builddir)/uim/uim-sh in proper way
-loader.scm: installed-modules.scm
-	$(MAKE) -C $(top_builddir)/uim uim-sh && \
-	$(ECHO) "(require \"manage-modules.scm\") \
-	         (require (string-append (getenv \"PWD\") \
-	                                 \"/installed-modules.scm\")) \
-	         (generate-loader-scm)" \
-	| LIBUIM_VERBOSE=1 LIBUIM_VANILLA=1 LIBUIM_SCM_FILES=`(cd $(top_srcdir) && pwd)`/scm LIBUIM_PLUGIN_LIB_DIR=$(top_builddir)/uim/.libs \
-	  $(top_builddir)/uim/uim-sh -B >$@
+# Maybe redundant...
+loader.scm: $(SCM_FILES)
+	$(MAKE) -C $(top_builddir)/uim uim-module-manager && \
+	LIBUIM_SCM_FILES=`(cd $(top_srcdir) && pwd)`/scm LIBUIM_PLUGIN_LIB_DIR=$(top_builddir)/uim/.libs \
+	  $(top_builddir)/uim/uim-module-manager \
+	    --path $(top_builddir)/scm --register $(module_names)
 
 # $(ECHO) $(ECHO_N) >$@

Modified: branches/r5rs/scm/custom.scm
===================================================================

Modified: branches/r5rs/scm/im-custom.scm
===================================================================
--- branches/r5rs/scm/im-custom.scm	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/scm/im-custom.scm	2005-09-14 22:20:37 UTC (rev 1497)
@@ -209,7 +209,16 @@
       (custom-im-list-as-choice-rec (reverse
 				     (alist-delete 'direct im-list eq?))))))
 
-(define-custom 'enabled-im-list '(direct)
+(define usable-im-list
+  (lambda ()
+    (let ((imlist (filter
+		    (lambda (name)
+	              (memq name system-available-im-list)) enabled-im-list)))
+	 (if (not (null? imlist))
+	     imlist
+	     '(direct)))))
+
+(define-custom 'enabled-im-list (usable-im-list)
   '(global im-deployment)
   (cons
    'ordered-list

Modified: branches/r5rs/scm/im.scm
===================================================================
--- branches/r5rs/scm/im.scm	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/scm/im.scm	2005-09-14 22:20:37 UTC (rev 1497)
@@ -62,6 +62,7 @@
 ;; initialized. This limitation may be removed after uim 0.4.6.
 ;;   -- YamaKen 2005-01-25
 (define enabled-im-list ())
+(define system-available-im-list ())
 
 (define-record 'im
   (list
@@ -194,8 +195,7 @@
 
 (define switch-im
   (lambda (id name)
-    (release-context id)
-    (create-context id #f (next-im name))))
+    (uim-switch-im id (next-im name))))
 
 ;;
 ;; context-management

Modified: branches/r5rs/scm/key.scm
===================================================================

Modified: branches/r5rs/scm/uim-module-manager.scm
===================================================================
--- branches/r5rs/scm/uim-module-manager.scm	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/scm/uim-module-manager.scm	2005-09-14 22:20:37 UTC (rev 1497)
@@ -32,72 +32,88 @@
 (require "im.scm")
 (require "lazy-load.scm")
 
-
-;; FIXME: This function works fine, but too hard to read.
-(define (get-new-registered-module-list modules old-module-list)
-  (filter
-   (lambda (x) ;; Test for valid module
-      (if (require-module (symbol->string x))
-	  #t
-	  (begin (puts (string-append "Error: Module " x " is not a correct module.\n"))
-		 #f)))
-   (remove (lambda (x) ;; Test 
-	     (if (memq x old-module-list)
-		 (begin (puts (string-append "Error : Module " x " already registered\n"))
-			#t)
-		 (begin ;(puts (string-append "Module " x " not registered\n"))
+(define add-modules-to-module-list
+  (lambda (modules current-module-list)
+    (append
+     (filter
+      (lambda (module)
+	;; Test if the module is valid
+	(if (require-module (symbol->string module))
+	    #t
+	    (begin (puts (string-append "Warning: Module "
+					(symbol->string module)
+					" is not a correct module.\n"))
 		   #f)))
-	   modules)))
+      (remove
+       (lambda (module)
+	 (if (memq module current-module-list)
+	     (begin (puts (string-append "Warning: Module "
+					 (symbol->string module)
+					 " is already registered\n"))
+		    #t)
+	     #f))
+       modules))
+     current-module-list)))
 
-(define (remove-unregistered-modules modules old-module-list)
-  (remove (lambda (x)
-	    (if (memq x modules)
-		(begin ;(puts (string-append "Error : Module " x " already registered\n"))
-		       #t)
-		(begin ;(puts (string-append "Module " x " not registered\n"))
-		       #f)))
-	    old-module-list))
+(define remove-modules-from-module-list
+  (lambda (removing-modules current-module-list)
+    (remove
+     (lambda (module)
+       (if (memq module removing-modules)
+	   #t
+	   #f))
+     current-module-list)))
 
-;; This function will call when $ uim-module-manager --register
-(define (register-modules)
-  (let* ((old-module-list (read-module-list))
-	 (new-module-list (get-new-registered-module-list (get-arguments) old-module-list)))
-    (update-modules-installed-modules.scm-loader.scm (append new-module-list old-module-list))))
+;; This function is called with 'uim-module-manager --register'
+(define register-modules
+  (lambda (module-names)
+    (let* ((modules (map string->symbol (string-split module-names " ")))
+	   (current-module-list (map string->symbol installed-im-module-list))
+	   (revised-module-list (add-modules-to-module-list modules
+				 current-module-list)))
+      (update-all-files revised-module-list))))
 
-;; This function will call when $ uim-module-manager --unregister
-(define (unregister-modules)
-  (let* ((old-module-list (read-module-list))
-	 (new-module-list (remove-unregistered-modules (get-arguments) old-module-list)))
-    (update-modules-installed-modules.scm-loader.scm new-module-list)))
+;; This function is called with 'uim-module-manager --unregister'
+(define unregister-modules
+  (lambda (module-names)
+    (let* ((modules (map string->symbol (string-split module-names " ")))
+	   (current-module-list (map string->symbol installed-im-module-list))
+	   (revised-module-list (remove-modules-from-module-list 
+				 modules
+				 current-module-list)))
+      (update-all-files revised-module-list))))
 
-(define (update-modules-installed-modules.scm-loader.scm module-list)
-  (update-modules module-list)
-  (update-installed-modules-scm module-list)
-  (update-loader-scm module-list))
+(define unregister-all-modules
+  (lambda (dummy)
+    (update-all-files '())))
 
-(define (update-modules module-list)
-  (write-module-list #f
-		     (map symbol->string
-			  (reverse module-list))))
+(define update-all-files
+  (lambda (module-list)
+    (update-installed-modules-scm module-list)
+    (update-loader-scm module-list)))
 
-;; FIXME: Current implementation is heavy.
-(define (update-loader-scm module-list)
-  (set! installed-im-module-list (map symbol->string module-list))
-  (write-loader.scm (string-join "\n" (stub-im-generate-all-stub-im-list))))
+(define update-loader-scm
+  (lambda (module-list)
+    (set! installed-im-module-list (map symbol->string module-list))
+    (write-loader.scm (string-join "\n" (stub-im-generate-all-stub-im-list)))))
 
-(define (update-installed-modules-scm module-list)
-  (set! installed-im-module-list (map symbol->string module-list))
-  (try-require "custom.scm")
-  (set! enabled-im-list
-	(map custom-choice-rec-sym (custom-installed-im-list)))
-  (write-installed-modules.scm
-   (string-append
-    "(define installed-im-module-list "
-    (custom-list-as-literal installed-im-module-list)
-    ")\n"
-    (custom-definition-as-literal 'enabled-im-list)
-    "\n")))
+(define update-installed-modules-scm
+  (lambda (module-list)
+    (set! installed-im-module-list (map symbol->string module-list))
+    (try-require "custom.scm")
+    (set! enabled-im-list
+	  (map custom-choice-rec-sym (custom-installed-im-list)))
+    (write-installed-modules.scm
+     (string-append
+      ";; The described order of input methods affects which IM is preferred\n"
+      ";; at the default IM selection process for each locale. i.e.  list\n"
+      ";; preferable IM first for each language\n"
+      "(define installed-im-module-list "
+      (custom-list-as-literal installed-im-module-list)
+      ")\n"
+      (custom-definition-as-literal 'enabled-im-list)
+      "\n"
+      "(define system-available-im-list enabled-im-list)\n"))))
 
-;(generate-installed-modules-scm))
 
 (prealloc-heaps-for-heavy-job)

Modified: branches/r5rs/scm/util.scm
===================================================================
--- branches/r5rs/scm/util.scm	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/scm/util.scm	2005-09-14 22:20:37 UTC (rev 1497)
@@ -214,6 +214,82 @@
 	  (set-cdr! (last-pair lst) obj)
 	  lst))))
 
+;; definition of 'else' has been moved into slib.c
+;(define else #t)
+
+;; for eval
+(define interaction-environment
+  (lambda ()
+    ()))
+
+(define boolean?
+  (lambda (x)
+    (or (eq? x #t)
+        (eq? x #f))))
+
+(define integer?
+  (lambda (x)
+    (number? x)))
+
+;; Siod doesn't support char
+(define char?
+  (lambda (x)
+    #f))
+
+(define list?
+  (lambda (x)
+    (or (null? x)
+	(and (pair? x)
+	     (list? (cdr x))))))
+
+(define zero?
+  (lambda (x)
+    (if (integer? x)
+	(= x 0)
+	(error "non-numeric value for zero?"))))
+
+(define positive?
+  (lambda (x)
+    (> x 0)))
+
+(define negative?
+  (lambda (x)
+    (< x 0)))
+
+(define number->string integer->string)
+(define string->number string->integer)
+(define string->symbol intern)
+
+(define map
+  (lambda args
+    (let ((f (car args))
+	  (lists (cdr args)))
+      (if (<= (length lists) 3)  ;; uim's siod accepts up to 3 lists
+	  (apply mapcar args)    ;; faster native processing
+	  (iterate-lists (lambda (state elms)
+			   (if (null? elms)
+			       (cons #t (reverse state))
+			       (let ((mapped (apply f elms)))
+				 (cons #f (cons mapped state)))))
+			 () lists)))))
+
+(define for-each map)
+
+(define quotient /)	;; / in siod is quotient actually
+
+;;(define list-tail
+;;  (lambda (lst n)
+;;    (if (= n 0)
+;;	lst
+;;	(list-tail (cdr lst) (- n 1)))))
+(define list-tail
+  (lambda (lst n)
+    (if (or (< (length lst)
+	       n)
+	    (< n 0))
+	(error "out of range in list-tail")
+	(nthcdr n lst))))
+
 ;;
 ;; R5RS-like character procedures
 ;;
@@ -528,6 +604,18 @@
 	    alist))))
 
 
+(define bitwise-and
+  (lambda xs
+    (fold bit-and (bitwise-not 0) xs)))
+
+(define bitwise-ior
+  (lambda xs
+    (fold bit-or 0 xs)))
+
+(define bitwise-xor
+  (lambda xs
+    (fold bit-xor 0 xs)))
+
 ;;
 ;; uim-specific utilities
 ;;

Modified: branches/r5rs/uim/Makefile.am
===================================================================
--- branches/r5rs/uim/Makefile.am	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/uim/Makefile.am	2005-09-14 22:20:37 UTC (rev 1497)
@@ -105,7 +105,8 @@
 libuim_custom_enabler_la_CPPFLAGS = -I$(top_srcdir)
 
 
-bin_PROGRAMS = uim-helper-server uim-sh uim-module-manager
+bin_PROGRAMS = uim-sh uim-module-manager
+libexec_PROGRAMS = uim-helper-server
 
 uim_helper_server_LIBS =  
 uim_helper_server_CPPFLAGS = $(uim_defs) -I$(top_srcdir)
@@ -119,7 +120,7 @@
 uim_sh_SOURCES = uim-sh.c
 if LIBEDIT
   uim_sh_CFLAGS += -DLIBEDIT
-  uim_sh_SOURCES += editline.c
+  uim_sh_SOURCES += editline.c editline.h
   uim_sh_LDADD += -ledit -lcurses
 endif
 

Modified: branches/r5rs/uim/context.h
===================================================================

Modified: branches/r5rs/uim/plugin.c
===================================================================
--- branches/r5rs/uim/plugin.c	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/uim/plugin.c	2005-09-14 22:20:37 UTC (rev 1497)
@@ -72,8 +72,8 @@
 {
   const char *plugin_name;
   char *plugin_lib_filename = NULL, *plugin_scm_filename = NULL;
-  uim_lisp lib_path = uim_scm_symbol_value("uim-plugin-lib-load-path");
-  uim_lisp scm_path = uim_scm_symbol_value("uim-plugin-scm-load-path");
+  uim_lisp lib_path = uim_scm_eval_c_string("uim-plugin-lib-load-path");
+  uim_lisp scm_path = uim_scm_eval_c_string("uim-plugin-scm-load-path");
   uim_lisp path_car, path_cdr;
   void *library;
   void (*plugin_instance_init)(void);

Modified: branches/r5rs/uim/uim-func.c
===================================================================
--- branches/r5rs/uim/uim-func.c	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/uim/uim-func.c	2005-09-14 22:20:37 UTC (rev 1497)
@@ -40,6 +40,7 @@
 #include "uim-scm.h"
 #include "uim-encoding.h"
 #include "uim-util.h"
+#include "uim-im-switcher.h"
 
 #define MAX_LENGTH_OF_INT_AS_STR (((sizeof(int) == 4) ? sizeof("-2147483648") : sizeof("-9223372036854775808")) - sizeof((char)'\0'))
 
@@ -721,6 +722,16 @@
   return uim_scm_t();
 }
 
+
+static uim_lisp
+switch_im(uim_lisp id_, uim_lisp name_)
+{
+  const char *name= uim_scm_refer_c_str(name_);
+  uim_context uc = uim_find_context(uim_scm_c_int(id_));
+  uim_switch_im(uc, name);
+  return uim_scm_t();
+}
+
 void
 uim_init_im_subrs(void)
 {
@@ -755,4 +766,6 @@
   /**/
   uim_scm_init_subr_1("im-request-surrounding", im_request_surrounding);
   uim_scm_init_subr_3("im-delete-surrounding", im_delete_surrounding);
+  /**/
+  uim_scm_init_subr_2("uim-switch-im", switch_im); /* FIXME: This function name would not be appropriate. */
 }

Modified: branches/r5rs/uim/uim-helper-client.c
===================================================================
--- branches/r5rs/uim/uim-helper-client.c	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/uim/uim-helper-client.c	2005-09-14 22:20:37 UTC (rev 1497)
@@ -61,7 +61,7 @@
 static char *
 get_server_command(void)
 {
-  return "uim-helper-server";
+  return UIM_LIBEXECDIR "/uim-helper-server";
 }
 
 int uim_helper_init_client_fd(void (*disconnect_cb)(void))

Modified: branches/r5rs/uim/uim-helper.c
===================================================================
--- branches/r5rs/uim/uim-helper.c	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/uim/uim-helper.c	2005-09-14 22:20:37 UTC (rev 1497)
@@ -48,6 +48,7 @@
 #include <errno.h>
 #include "context.h"
 #include "uim-helper.h"
+#include "uim-util.h"
 
 #ifndef HAVE_SIG_T
 typedef void (*sig_t)(int);

Modified: branches/r5rs/uim/uim-ipc.c
===================================================================
--- branches/r5rs/uim/uim-ipc.c	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/uim/uim-ipc.c	2005-09-14 22:20:37 UTC (rev 1497)
@@ -45,6 +45,7 @@
 
 #include "context.h"
 #include "uim-helper.h"
+#include "uim-util.h"
 
 #ifndef HAVE_STRSEP
 char *uim_strsep(char **stringp, const char *delim);
@@ -200,17 +201,26 @@
     if (is_setugid() != 0) {
       int cmd_len = strlen(command) + 30;
       char *fullpath_command = malloc(cmd_len);
-      
+      char *cmd_name = strrchr(command, '/');
+
+      if (cmd_name && cmd_name + 1 != '\0')
+	cmd_name++;
+      else
+	cmd_name = (char *)command;
       /*if (setuid(getuid())!=0) abort();*/ /* discarding privilege */
       
-      snprintf(fullpath_command, cmd_len, "/usr/local/bin/%s", command);
+      snprintf(fullpath_command, cmd_len, "/usr/local/bin/%s", cmd_name);
 
       result = execvp(fullpath_command, argv);
 
       if (result == -1) {
- 	snprintf(fullpath_command, cmd_len, "/usr/bin/%s", command);
+ 	snprintf(fullpath_command, cmd_len, "/usr/bin/%s", cmd_name);
 	result = execvp(fullpath_command, argv);
       }
+      if (result == -1) {
+ 	snprintf(fullpath_command, cmd_len, UIM_LIBEXECDIR "/%s", cmd_name);
+	result = execvp(fullpath_command, argv);
+      }
       free(fullpath_command);
     } else {
       result = execvp(command, argv);

Modified: branches/r5rs/uim/uim-module-manager.c
===================================================================
--- branches/r5rs/uim/uim-module-manager.c	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/uim/uim-module-manager.c	2005-09-14 22:20:37 UTC (rev 1497)
@@ -35,28 +35,42 @@
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
 
 #include "config.h"
 
 #include "uim.h"
 #include "uim-scm.h"
-#include "uim-compat-scm.h"
+#include "context.h"
 
-static char *path;
-
 #define MODULE_LIST_FILENAME UIM_DATADIR"/modules"
 #define LOADER_SCM_FILENAME  UIM_DATADIR"/loader.scm"
 #define INSTALLED_MODULES_SCM_FILENAME  UIM_DATADIR"/installed-modules.scm"
 
-static uim_lisp modulenames; /* FIXME: Provide a way to pass a list as an argument. */
+static char *path;
 
+enum Action {
+  Register,
+  UnRegister,
+  UnRegisterAll,
+  None
+};
+
+char *action_command[] = {
+  "register-modules",
+  "unregister-modules",
+  "unregister-all-modules",
+  NULL
+};
+
 /* Utility function */
 static char *
 concat(const char *a, const char *b)
 {
   int len;
   char *dest;
-  if(!a || !b)
+  if (!a || !b)
     return NULL;
   len = strlen(a) + strlen(b) + 1;
   dest = malloc(len);
@@ -65,108 +79,45 @@
   return dest;
 }
 
-/* Utility function */
- /* FIXME: Provide a way to pass a list as an argument. */
-static uim_lisp
-get_arguments(void)
+static char *
+append_module_names(char *modules, const char *new_module)
 {
-  return modulenames;
+  if (!modules)
+    return strdup(new_module);
+
+  modules = realloc(modules, strlen(modules) + strlen(new_module) + 2);
+  if (modules) {
+    strcat(modules, " ");
+    strcat(modules, new_module);
+  }
+  return modules;
 }
 
 static void
 print_usage(void)
 {
   printf("Usage:\n");
-  printf("  uim-module-manager [OPTION] modulenames...\n\n");
+  printf("  uim-module-manager [options]\n\n");
   printf("Options:\n");
-  printf("  --register\n");
-  printf("  --unregister\n");
-  printf("  --path path to modules/loader.scm/installed-modules.scm\n");
-  printf("    **  --path option may be removed in the future. **\n\n");
+  printf("  --register <modules>   Register the modules\n");
+  printf("  --unregister <modules> Unregister the modules\n");
+  printf("  --path <path>          Target path where installed-modules.scm\n");
+  printf("                         and loader.scm to be installed\n");
+  printf("  --unregister-all       Unregister all modules\n\n");
   printf("Example:\n");
   printf("  uim-module-manager --register anthy skk\n");
-  printf("  uim-module-manager --register prime --path /usr/local/share/uim\n\n");
+  printf("  uim-module-manager --register prime --path /usr/local/share/uim\n");
+  printf("  uim-module-manager --register personal-module --path ~/.uim.d/plugin\n\n");
+  printf("Note:\n");
+  printf("  Registeration and unregistration cannot be done simultaneously.\n\n");
 }
 
 static uim_lisp
-read_module_list(void)
-{
-  FILE *fp;
-  char buf[1024];
-  uim_lisp module_list = uim_scm_null_list();
-
-  if(path) {
-    char *p = concat(path, "/modules");
-    fp = fopen(p, "r");
-    free(p);
-  } else {
-    fp = fopen(MODULE_LIST_FILENAME, "r");
-  }
-
-  if(!fp) {
-    perror("Failed to read module list.");
-    return uim_scm_f();
-  }
-  while (fgets (buf, sizeof(buf), fp) != NULL) {
-    if(buf[0] == '#' || buf[0] == '\n') {
-      continue; /* comment line or blank line */
-    }
-    else if(buf[strlen(buf)-1] == '\n') {
-      buf[strlen(buf)-1] = '\0'; /* Clear \n. */
-    }
-    module_list = uim_scm_cons(uim_scm_intern_c_str(buf), module_list);
-  }
-  fclose(fp);
-  return module_list;
-}
-
-static uim_lisp
-write_module_list(uim_lisp new_module, uim_lisp module_list)
-{
-  FILE *fp;
-  if(path) {
-    char *p = concat(path, "/modules");
-    fp = fopen(p, "w");
-    free(p);
-  } else {
-    fp = fopen(MODULE_LIST_FILENAME, "w");
-  }
-
-  if(!fp) {
-    perror("Failed to write module list");
-    return uim_scm_f();
-  }
-
-  fputs("# This is an automatically generated file. DO NOT EDIT.\n\n", fp);
-
-  if(uim_scm_stringp(new_module) == UIM_TRUE) {
-    fputs(uim_scm_refer_c_str(new_module), fp);
-    fputs("\n",fp);
-  }
-
-  if(uim_scm_consp(module_list) == UIM_TRUE) {
-    
-    while(1) {
-      uim_lisp module_name = uim_scm_car(module_list);
-      fputs(uim_scm_refer_c_str(module_name), fp);
-      fputs("\n",fp);
-      module_list = uim_scm_cdr(module_list);
-      if(module_list == uim_scm_null_list()) {
-	break;
-      }
-    }
-
-  }
-  
-  fclose(fp);
-  return uim_scm_t();
-}
-
-static uim_lisp
 write_loader_scm(uim_lisp str)
 {
   FILE *fp;
-  if(path) {
+
+  if (path) {
     char *p = concat(path, "/loader.scm");
     fp = fopen(p, "w");
     free(p);
@@ -174,14 +125,14 @@
     fp = fopen(LOADER_SCM_FILENAME, "w");
   }
 
-  if(!fp) {
+  if (!fp) {
     perror("Failed to open loader.scm");
     return uim_scm_f();
   }
 
   fputs(";; This is an automatically generated file. DO NOT EDIT.\n\n", fp);
-
   fputs(uim_scm_refer_c_str(str), fp);
+
   fclose(fp);
   return uim_scm_t();
 }
@@ -190,7 +141,8 @@
 write_installed_modules_scm(uim_lisp str)
 {
   FILE *fp;
-  if(path) {
+
+  if (path) {
     char *p = concat(path, "/installed-modules.scm");
     fp = fopen(p, "w");
     free(p);
@@ -198,14 +150,14 @@
     fp = fopen(INSTALLED_MODULES_SCM_FILENAME, "w");
   }
 
-  if(!fp) {
+  if (!fp) {
     perror("Failed to open installed-modules.scm");
     return uim_scm_f();
   }
 
   fputs(";; This is an automatically generated file. DO NOT EDIT.\n\n", fp);
-
   fputs(uim_scm_refer_c_str(str), fp);
+
   fclose(fp);
   return uim_scm_t();
 }
@@ -213,76 +165,85 @@
 int
 main(int argc, char *argv[]) {
   int i;
-  int registerp = 0;
-  uim_lisp form;
+  int action = None;
+  char *module_names = NULL;
 
-  if(argc <= 2) {
+  if (argc <= 1) {
     print_usage();
     exit(EXIT_FAILURE);
   }
     
   /* FIXME: To generate loader.scm, we need this setenv for now.
-     But it's a dirty hack, not appropriate. I guess we need entirely new module system. */
+     But it's a dirty hack, not appropriate. I guess we need entirely
+     new module system. */
   setenv("LIBUIM_VANILLA", "1", 1);
   
   uim_init();
   uim_scm_set_verbose_level(1);
-  modulenames = uim_scm_null_list();
 
-  for(i=0; i<argc; i++) {
-    if(strcmp(argv[i], "--register") == 0) {
-      if(registerp == 2) {
-	printf("Regqistering and unregistering couldn't used at the same time.\n\n");
-	exit(EXIT_FAILURE);
+  for (i = 0; i < argc; i++) {
+    if (strcmp(argv[i], "--register") == 0) {
+      if (action != None) {
+	action = None;
+	break;
       }
-      registerp = 1; i++;
-      while(argv[i] && strncmp(argv[i], "--", 2)) {
-	modulenames = uim_scm_cons(uim_scm_intern_c_str(argv[i]), modulenames);
+      action = Register; i++;
+      while (argv[i] && strncmp(argv[i], "--", 2)) {
+	module_names = append_module_names(module_names, argv[i]);
 	i++;
       }
       i--;
-    } else if(strcmp(argv[i], "--unregister") == 0) {
-      if(registerp == 1) {
-	printf("Registering and unregistering couldn't used at the same time.\n\n");
-	exit(EXIT_FAILURE);
+    } else if (strcmp(argv[i], "--unregister") == 0) {
+      if (action != None) {
+	action = None;
+	break;
       }
-      registerp = 2; i++;
-      while(argv[i] && strncmp(argv[i], "--", 2)) {
-	modulenames = uim_scm_cons(uim_scm_intern_c_str(argv[i]), modulenames);
+      action = UnRegister; i++;
+      while (argv[i] && strncmp(argv[i], "--", 2)) {
+	module_names = append_module_names(module_names, argv[i]);
 	i++;
       }
       i--;
-    } else if(strcmp(argv[i], "--path") == 0) {
-      if(argv[i+1]) {
-	path = argv[i+1];
+    } else if (strcmp(argv[i], "--path") == 0) {
+      if (argv[i + 1]) {
+	path = argv[i + 1];
       }
+    } else if (strcmp(argv[i], "--unregister-all") == 0) {
+      if (action != None) {
+	action = None;
+	break;
+      }
+      action = UnRegisterAll;
     }
   }
   
-  if(!argv[2]) {
+  if (action == None || (action != UnRegisterAll && !module_names)) {
     print_usage();
     exit(EXIT_FAILURE);
   }
 
-  uim_scm_init_subr_0("read-module-list", read_module_list);
-  uim_scm_init_subr_2("write-module-list", write_module_list);
-
-  uim_scm_init_subr_0("get-arguments", get_arguments);
-
   uim_scm_init_subr_1("write-loader.scm", write_loader_scm);
   uim_scm_init_subr_1("write-installed-modules.scm", write_installed_modules_scm);
 
-  uim_scm_require_file("uim-module-manager.scm");
+  if (!uim_scm_require_file("uim-module-manager.scm"))
+    exit(1);
 
-  if(registerp == 1) {
-    form = uim_scm_list1(uim_scm_intern_c_str("register-modules"));
+  if (path) {
+    char *extra_file = concat(path, "/installed-modules.scm");
+    struct stat st;
+    if (stat(extra_file, &st) != -1)
+      uim_scm_require_file(extra_file);
+    free(extra_file);
   }
-  if(registerp == 2) {
-    form = uim_scm_list1(uim_scm_intern_c_str("unregister-modules"));
-  }
 
-  uim_scm_eval(form);
+  /* for unregister-all */
+  if (!module_names)
+    module_names = "";
 
+  UIM_EVAL_FSTRING2(NULL, "(%s \"%s\")",
+		    action_command[action],
+		    module_names);
+
   uim_quit();
 
   return 0;

Modified: branches/r5rs/uim/uim.c
===================================================================
--- branches/r5rs/uim/uim.c	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/uim/uim.c	2005-09-14 22:20:37 UTC (rev 1497)
@@ -44,6 +44,7 @@
 #include "uim-custom.h"
 #include "context.h"
 #include "gettext.h"
+#include "uim-util.h"
 
 extern char *uim_return_str;
 extern char *uim_return_str_list[10];

Modified: branches/r5rs/xim/canddisp.cpp
===================================================================
--- branches/r5rs/xim/canddisp.cpp	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/xim/canddisp.cpp	2005-09-14 22:20:37 UTC (rev 1497)
@@ -52,6 +52,11 @@
 #include "canddisp.h"
 #include "util.h"
 
+#if defined(USE_QT_CANDWIN)
+  #define DEFAULT_CANDWIN_PROG	(UIM_LIBEXECDIR "/uim-candwin-qt")
+#elif defined(USE_GTK_CANDWIN) && defined(USE_GTK2)
+  #define DEFAULT_CANDWIN_PROG	(UIM_LIBEXECDIR "/uim-candwin-gtk")
+#endif
 
 static FILE *candwin_r, *candwin_w;
 static int candwin_pid;
@@ -63,7 +68,8 @@
 
 static const char *candwin_command(void)
 {
-    char *candwin_prog = NULL;
+    char *candwin_prog;
+    const char *user_config;
 
     /*
       XXX: We should drop uim-compat-scm API. -- omote 07/12/2005
@@ -75,25 +81,18 @@
 	 3. default toolkit's candwin program determined by ./configure
      */
 
-    candwin_prog = getenv("UIM_CANDWIN_PROG");
-    if (!candwin_prog) {
+    user_config = getenv("UIM_CANDWIN_PROG");
 #ifdef UIM_COMPAT_SCM
-#if 0
-	// uim-candwin-prog is not bound in uim-custom setting.
-	// candwin_prog = uim_scm_symbol_value_str("uim-candwin-prog");
+    if (!user_config)
+	user_config = uim_scm_symbol_value_str("uim-candwin-prog");
 #endif
-	if (candwin_prog)
-	    return candwin_prog;
-#endif /* UIM_COMPAT_SCM */
-#if defined(USE_QT_CANDWIN)
-	return "uim-candwin-qt";
-#elif defined(USE_GTK_CANDWIN) && defined(USE_GTK2)
-	return "uim-candwin-gtk";
-#else
-	return NULL;
-#endif
-    } else
+
+    if (user_config) {
+	asprintf(&candwin_prog, UIM_LIBEXECDIR "/%s", user_config);
 	return candwin_prog;
+    }
+
+    return DEFAULT_CANDWIN_PROG;
 }
 
 Canddisp *canddisp_singleton()

Modified: branches/r5rs/xim/connection.cpp
===================================================================
--- branches/r5rs/xim/connection.cpp	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/xim/connection.cpp	2005-09-14 22:20:37 UTC (rev 1497)
@@ -52,6 +52,10 @@
 #define TRANSPORT_UNIT 20
 #define TRANSPORT_MAX 20	// Emacs's XIM won't work correctly when the value is 100
 
+#ifndef HAVE_SIG_T
+typedef void (*sig_t)(int);
+#endif
+
 extern char *xim_packet_name[];
 
 static std::map<Window, XConnection *> gXConnections;

Modified: branches/r5rs/xim/locale.cpp
===================================================================
--- branches/r5rs/xim/locale.cpp	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/xim/locale.cpp	2005-09-14 22:20:37 UTC (rev 1497)
@@ -73,89 +73,89 @@
     {"am", "am_ET", "UTF-8"},
     {"ar", "ar_AA:ar_BH:ar_DZ:ar_EG:ar_IQ:ar_JO:ar_KW:ar_LB:ar_LY:ar_MA:ar_OM:ar_QA:ar_SA:ar_SD:ar_SY:ar_TN:ar_YE", "ISO8859-6:UTF-8"},
     // {"as", "as", NULL},
-    {"az", "az_AZ", "ISO8859-9E"},
+    {"az", "az_AZ", "ISO8859-9E:UTF-8"},
     {"be", "be_BY", "CP1251:UTF-8"},
     {"bg", "bg_BG", "ISO8859-5:CP1251:KOI8-R:UTF-8"},
-    {"bn", "bn_BD", NULL},
+    {"bn", "bn_BD:bn_IN", "UTF-8"},
     // {"bo", "bo", NULL},
-    {"br", "br_FR", "ISO8859-1:ISO8859-14:ISO8859-15"},
-    {"ca", "ca_ES", "ISO8859-1:ISO8859-15:UTF-8"},
+    {"br", "br_FR:br_FR at euro", "ISO8859-1:ISO8859-14:ISO8859-15:UTF-8"},
+    {"ca", "ca_ES:ca_ES at euro", "ISO8859-1:ISO8859-15:UTF-8"},
     {"cs", "cs_CZ", "ISO8859-2:UTF-8"},
-    {"cy", "cy_GB", "ISO8859-1:ISO8859-14:ISO8859-15"},
+    {"cy", "cy_GB", "ISO8859-1:ISO8859-14:ISO8859-15:UTF-8"},
     {"cz", "cz_CZ", "ISO8859-2"},
     {"da", "da_DK", "ISO8859-1:ISO8859-15:UTF-8"},
-    {"de", "de_DE:de_AT:de_BE:de_CH:de_LI:de_LU", "ISO8859-1:ISO8859-15:UTF-8"},
-    {"el", "el_GR", "ISO8859-7:ISO8859-15:UTF-8"},
-    {"en", "en_US:en_AU:en_BE:en_BZ:en_BW:en_CA:en_GB:en_HK:en_IE:en_IN:en_JM:en_NZ:en_PH:en_SG:en_TT:en_UK:en_ZA", "ISO8859-1:ISO8859-15:UTF-8"},
+    {"de", "de_DE:de_DE at euro:de_AT:de_AT at euro:de_BE:de_BE at euro:de_CH:de_LI:de_LU:de_LU at euro", "ISO8859-1:ISO8859-15:UTF-8"},
+    {"el", "el_GR:el_GR at euro", "ISO8859-7:ISO8859-15:UTF-8"},
+    {"en", "en_US:en_AU:en_BE:en_BZ:en_BW:en_CA:en_GB:en_HK:en_IE:en_IE at euro:en_IN:en_JM:en_NZ:en_PH:en_SG:en_TT:en_UK:en_ZA", "ISO8859-1:ISO8859-15:UTF-8"},
     {"eo", "eo_XX:eo_EO", "ISO8859-3"},
-    {"es", "es_ES:es_AR:es_BO:es_CL:es_CO:es_CR:es_DO:es_EC:es_GT:es_HN:es_MX:es_NI:es_PA:es_PE:es_PR:es_PY:es_SV:es_US:es_UY:es_VE", "ISO8859-1:UTF-8"},
+    {"es", "es_ES:es_ES at euro:es_AR:es_BO:es_CL:es_CO:es_CR:es_DO:es_EC:es_GT:es_HN:es_MX:es_NI:es_PA:es_PE:es_PR:es_PY:es_SV:es_US:es_UY:es_VE", "ISO8859-1:ISO8859-15:UTF-8"},
     {"et", "et_EE", "ISO8859-15:ISO8859-1:ISO8859-4:UTF-8"},
-    {"eu", "eu_ES", "ISO8859-1:ISO8859-15"},
+    {"eu", "eu_ES:eu_ES at euro", "ISO8859-1:ISO8859-15:UTF-8"},
     {"fa", "fa_IR", "UTF-8:ISIRI-3342"},
-    {"fi", "fi_FI", "ISO8859-15:ISO8859-1:UTF-8"},
+    {"fi", "fi_FI:fi_FI at euro", "ISO8859-15:ISO8859-1:UTF-8"},
     {"fo", "fo_FO", "ISO8859-1:ISO8859-15:UTF-8"},
-    {"fr", "fr_FR:fr_BE:fr_CA:fr_CH:fr_LU", "ISO8859-1:ISO8859-15:UTF-8"},
-    {"ga", "ga_IE", "ISO8859-1:ISO8859-14:ISO8859-15"},
-    {"gd", "gd_GB", "ISO8859-1:ISO8859-14:ISO8859-15"},
-    {"gl", "gl_ES", "ISO8859-1:ISO8859-15:UTF-8"},
+    {"fr", "fr_FR:fr_FR at euro:fr_BE:fr_BE at euro:fr_CA:fr_CH:fr_LU:fr_LU at euro", "ISO8859-1:ISO8859-15:UTF-8"},
+    {"ga", "ga_IE:ga_IE at euro", "ISO8859-1:ISO8859-14:ISO8859-15:UTF-8"},
+    {"gd", "gd_GB", "ISO8859-1:ISO8859-14:ISO8859-15:UTF-8"},
+    {"gl", "gl_ES:gl_ES at euro", "ISO8859-1:ISO8859-15:UTF-8"},
     // {"gu", "gu", NULL},
-    {"gv", "gv_GB", "ISO8859-1:ISO8859-14:ISO8859-15"},
+    {"gv", "gv_GB", "ISO8859-1:ISO8859-14:ISO8859-15:UTF-8"},
     {"he", "he_IL", "ISO8859-8:CP1255:UTF-8"},
     {"hi", "hi_IN", "ISCII-DEV:UTF-8"},
     {"hr", "hr_HR", "ISO8859-2:UTF-8"},
     {"hy", "hy_AM", NULL},
     {"id", "id_ID", NULL},
     {"is", "is_IS", "ISO8859-1:ISO8859-15:UTF-8"},
-    {"it", "it_IT:it_CH", "ISO8859-1:ISO8859-15:UTF-8"},
+    {"it", "it_IT:it_IT at euro:it_CH", "ISO8859-1:ISO8859-15:UTF-8"},
     {"ja", "ja_JP", "eucJP:EUC:SJIS:UTF-8"},
-    {"ka", "ka_GE", "GEORGIAN-ACADEMY:GEORGIAN-PS"},
+    {"ka", "ka_GE", "GEORGIAN-ACADEMY:GEORGIAN-PS:UTF-8"},
     // {"kk", "kk", NULL},
     {"kl", "kl_GL", "ISO8859-1:ISO8859-15:UTF-8"},
     // {"kn", "kn", NULL},
     {"ko", "ko_KR", "eucKR:EUC:UTF-8"},
-    {"kw", "kw_GB", "ISO8859-1:ISO8859-14:ISO8859-15"},
-    {"lo", "lo_LA", "MULELAO-1:IBM-CP1133"},
+    {"kw", "kw_GB", "ISO8859-1:ISO8859-14:ISO8859-15:UTF-8"},
+    {"lo", "lo_LA", "MULELAO-1:IBM-CP1133:UTF-8"},
     {"lt", "lt_LT", "ISO8859-13:ISO8859-4:UTF-8"},
     {"lv", "lv_LV", "ISO8859-13:UTF-8"},
-    {"mi", "mi_NZ", "ISO8859-1:ISO8859-5"},
+    {"mi", "mi_NZ", "ISO8859-1:ISO8859-5:ISO8859-13:UTF-8"},
     {"mk", "mk_MK", "ISO8859-5:CP1251:UTF-8"},
     // {"ml", "ml", NULL},
-    {"ms", "ms_MY", "ISO8859-1"},
-    {"mt", "mt_MT", "ISO8859-3"},
-    {"nb", "nb_NO", "ISO8859-1:ISO8859-15"},
-    {"nl", "nl_NL:nl_BE", "ISO8859-1:ISO8859-15:UTF-8"},
-    {"nn", "nn_NO", "ISO8859-1:ISO8859-15"},
+    {"ms", "ms_MY", "ISO8859-1:UTF-8"},
+    {"mt", "mt_MT", "ISO8859-3:UTF-8"},
+    {"nb", "nb_NO", "ISO8859-1:ISO8859-15:UTF-8"},
+    {"nl", "nl_NL:nl_NL at euro:nl_BE:nl_BE at euro", "ISO8859-1:ISO8859-15:UTF-8"},
+    {"nn", "nn_NO", "ISO8859-1:ISO8859-15:UTF-8"},
     {"no", "no_NO", "ISO8859-1:ISO8859-15:UTF-8"},
     {"ny", "ny_NO", "ISO8859-1:ISO8859-15"},
-    {"oc", "oc_FR", "ISO8859-1:ISO8859-15"},
+    {"oc", "oc_FR", "ISO8859-1:ISO8859-15:UTF-8"},
     // {"or", "or", NULL},
     // {"pa", "pa", NULL},
     {"pd", "pd_DE", "ISO8859-1:ISO8859-15"},
     {"ph", "ph_PH", "ISO8859-1"},
     {"pl", "pl_PL", "ISO8859-2:UTF-8"},
     {"pp", "pp_AN", "ISO8859-1"},
-    {"pt", "pt_PT:pt_BR", "ISO8859-1:ISO8859-15:UTF-8"},
+    {"pt", "pt_PT:pt_PT at euro:pt_BR", "ISO8859-1:ISO8859-15:UTF-8"},
     {"ro", "ro_RO", "ISO8859-2:UTF-8"},
-    {"ru", "ru_RU:ru_UA", "KOI8-R:ISO8859-5:CP1251:KOI8-U"},
+    {"ru", "ru_RU:ru_UA", "KOI8-R:ISO8859-5:CP1251:KOI8-U:UTF-8"},
     {"sh", "sh_YU", "ISO8859-2:UTF-8"},
     {"sk", "sk_SK", "ISO8859-2:UTF-8"},
     {"sl", "sl_SI", "ISO8859-2:UTF-8"},
     {"sp", "sp_YU", "ISO8859-5"},
     {"sq", "sq_AL", "ISO8859-2:UTF-8"},
-    {"sr", "sr_YU:sr_SP", "ISO8859-2:ISO8859-5:CP1251:UTF-8"},
-    {"sv", "sv_SE:sv_FI", "ISO8859-1:ISO8859-15:UTF-8"},
-    {"ta", "ta_IN", "TSCII-0"},
-    {"te", "te_IN", NULL},
-    {"tg", "tg_TJ", "KOI8-C"},
+    {"sr", "sr_YU:sr_YU at cyrillic:sr_SP", "ISO8859-2:ISO8859-5:CP1251:UTF-8"},
+    {"sv", "sv_SE:sv_SE at euro:sv_FI:sv_FI at euro", "ISO8859-1:ISO8859-15:UTF-8"},
+    {"ta", "ta_IN", "TSCII-0:UTF-8"},
+    {"te", "te_IN", "UTF-8"},
+    {"tg", "tg_TJ", "KOI8-C:KOI8-T:UTF-8"},
     {"th", "th_TH", "ISO8859-11:TIS620:UTF-8"},
-    {"tl", "tl_PH", "ISO8859-1"},
+    {"tl", "tl_PH", "ISO8859-1:UTF-8"},
     {"tr", "tr_TR", "ISO8859-9:UTF-8"},
-    {"tt", "tt_RU", "TATAR-CYR:KOI8-C"},
+    {"tt", "tt_RU", "TATAR-CYR:KOI8-C:UTF-8"},
     {"uk", "uk_UA", "KOI8-U:ISO8859-5:CP1251:UTF-8"},
-    {"ur", "ur_PK", "CP1256"},
+    {"ur", "ur_PK", "CP1256:UTF-8"},
     {"vi", "vi_VN", "TCVN:VISCII:UTF-8"},
-    {"wa", "wa_BE", "ISO8859-1:ISO8859-15"},
-    {"yi", "yi_US", "CP1255"},
+    {"wa", "wa_BE:wa_BE at euro", "ISO8859-1:ISO8859-15:UTF-8"},
+    {"yi", "yi_US", "CP1255:UTF-8"},
     {"zh_CN", "zh_CN", "gb2312:eucCN:gbk:UTF-8"},	// from uim-py and uim-pyunihan
     {"zh_TW:zh_HK", "zh_TW:zh_HK", "big5:eucTW:big5hkscs:UTF-8"},	// from uim-pinyin-big5
     {"zh", "zh_CN:zh_TW:zh_HK", NULL},	// this entry must be here since its encoding is assigned as NULL

Modified: branches/r5rs/xim/main.cpp
===================================================================
--- branches/r5rs/xim/main.cpp	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/xim/main.cpp	2005-09-14 22:20:37 UTC (rev 1497)
@@ -415,13 +415,18 @@
 {
     std::list<char *> locale_list;
     char *locales;
+    const char *s;
     int len;
 
     asprintf(&supported_locales, "@locale=");
     len = strlen(supported_locales);
 
     // get all locales
-    locales = strdup(compose_localenames_from_im_lang("*"));
+    s = compose_localenames_from_im_lang("*");
+    if (s)
+	locales = strdup(s);
+    else
+	locales = strdup("");
     // replace ':' with ','
     char *sep;
     char *tmp = locales;

Modified: branches/r5rs/xim/ximic.cpp
===================================================================
--- branches/r5rs/xim/ximic.cpp	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/xim/ximic.cpp	2005-09-14 22:20:37 UTC (rev 1497)
@@ -389,22 +389,7 @@
 
     current_ic = this;
     mIsActive = true;
-
-    bool is_candwin_active = m_kkContext->hasActiveCandwin();
-
-    if (mConvdisp && is_candwin_active == false) {
-	// unset_focus before move_candwin in m_kkContext->focusIn()
-	mConvdisp->unset_focus();
-    }
-
     m_kkContext->focusIn();
-
-    if (mConvdisp && is_candwin_active == true) {
-	// Updating preedit here causes string mismatch if the context
-	// receives XIM_RESET_IC after XIM_SET_IC_FOCUS.  Should only
-	// update candidate window.
-	m_kkContext->candidate_update();
-    }
 }
 
 // Note that the sequence of XIM_SET_IC_FOCUS and XIM_UNSET_FOCUS

Modified: branches/r5rs/xim/ximserver.cpp
===================================================================
--- branches/r5rs/xim/ximserver.cpp	2005-09-13 22:50:33 UTC (rev 1496)
+++ branches/r5rs/xim/ximserver.cpp	2005-09-14 22:20:37 UTC (rev 1497)
@@ -466,11 +466,14 @@
     uim_helper_client_focus_in(mUc);
     mFocusedContext = this;
     if (mConvdisp) {
+	mConvdisp->unset_focus();
 	mConvdisp->move_candwin();
 	mConvdisp->update_caret_state();
     }
     uim_prop_list_update(mUc);	
     uim_prop_label_update(mUc);	
+    if (hasActiveCandwin())
+	candidate_update();
 }
 
 void



More information about the uim-commit mailing list