X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Finput.c;h=3175ce0b5d9cc09c9c1bae9dfe0af1d27fed92d3;hb=4b24e6ff1659fc0a8608c31b66ad6e1ebc494dd4;hp=8f6cfa95afe8a2de99c77e8ca6fd33f569cb5328;hpb=ef71335ceb286b3669919046ebccfbdf8cea9819;p=m17n%2Fm17n-lib.git diff --git a/src/input.c b/src/input.c index 8f6cfa9..3175ce0 100644 --- a/src/input.c +++ b/src/input.c @@ -1070,34 +1070,48 @@ load_branch (MInputMethodInfo *im_info, MPlist *plist, MIMMap *map) if (branch_actions) M17N_OBJECT_REF (branch_actions); } - else if (im_info->maps - && (plist = (MPlist *) mplist_get (im_info->maps, map_name))) + else if (im_info->maps) { - MPLIST_DO (plist, plist) + plist = (MPlist *) mplist_get (im_info->maps, map_name); + if (! plist) { - MPlist *keylist, *map_actions; + MPlist *p = mplist__assq (im_info->configured_vars, map_name); - if (! MPLIST_PLIST_P (plist)) - MERROR (MERROR_IM, -1); - keylist = MPLIST_PLIST (plist); - map_actions = MPLIST_NEXT (keylist); - if (MPLIST_SYMBOL_P (keylist)) + if (p && MPLIST_PLIST_P (p)) { - MSymbol command = MPLIST_SYMBOL (keylist); - MPlist *pl; + p = MPLIST_NEXT (MPLIST_NEXT (MPLIST_NEXT (MPLIST_PLIST (p)))); + if (MPLIST_SYMBOL_P (p)) + plist = mplist_get (im_info->maps, MPLIST_SYMBOL (p)); + } + } + if (plist) + { + MPLIST_DO (plist, plist) + { + MPlist *keylist, *map_actions; - if (MFAILP (command != Mat_reload)) - continue; - pl = resolve_command (im_info->configured_cmds, command); - if (MFAILP (pl)) - continue; - MPLIST_DO (pl, pl) - load_translation (map, pl, map_actions, branch_actions, + if (! MPLIST_PLIST_P (plist)) + MERROR (MERROR_IM, -1); + keylist = MPLIST_PLIST (plist); + map_actions = MPLIST_NEXT (keylist); + if (MPLIST_SYMBOL_P (keylist)) + { + MSymbol command = MPLIST_SYMBOL (keylist); + MPlist *pl; + + if (MFAILP (command != Mat_reload)) + continue; + pl = resolve_command (im_info->configured_cmds, command); + if (MFAILP (pl)) + continue; + MPLIST_DO (pl, pl) + load_translation (map, pl, map_actions, branch_actions, + im_info->macros); + } + else + load_translation (map, keylist, map_actions, branch_actions, im_info->macros); } - else - load_translation (map, keylist, map_actions, branch_actions, - im_info->macros); } } @@ -3795,8 +3809,6 @@ filter (MInputContext *ic, MSymbol key, void *arg) if (mtext_nchars (ic->produced) > 0) { - MSymbol lang = msymbol_get (ic->im->language, Mlanguage); - if (mdebug__flag & mdebug_mask) { MDEBUG_PRINT (" (produced"); @@ -3805,9 +3817,8 @@ filter (MInputContext *ic, MSymbol key, void *arg) MDEBUG_PRINT (")"); } - if (lang != Mnil) - mtext_put_prop (ic->produced, 0, mtext_nchars (ic->produced), - Mlanguage, ic->im->language); + mtext_put_prop (ic->produced, 0, mtext_nchars (ic->produced), + Mlanguage, ic->im->language); } if (ic_info->commit_key_head > 0) {