X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Finput.c;h=3cc1086f5774d90e9154486ff79d70b7a8c899d1;hb=398685e3214363bc831a7c29f89e466a96b71e4a;hp=9d562df529471537fcc3545f979e73b550d4c28b;hpb=d5a25994954a724d9359bd25720234b1725e6805;p=m17n%2Fm17n-lib.git diff --git a/src/input.c b/src/input.c index 9d562df..3cc1086 100644 --- a/src/input.c +++ b/src/input.c @@ -1640,7 +1640,7 @@ check_description (MPlist *plist) { M17N_OBJECT_UNREF (mt); mt = mtext__from_data (translated, strlen (translated), - MTEXT_FORMAT_UTF_8, 0); + MTEXT_FORMAT_UTF_8, 1); } } #endif @@ -1782,11 +1782,14 @@ config_command (MPlist *plist, MPlist *global_cmds, MPlist *custom_cmds, } else if (custom_cmds && (custom = mplist__assq (custom_cmds, name))) { - custom = MPLIST_NEXT (MPLIST_NEXT (MPLIST_PLIST (custom))); - if (! MPLIST_TAIL_P (custom)) + MPlist *this_keyseq = MPLIST_NEXT (MPLIST_NEXT (MPLIST_PLIST (custom))); + + if (MPLIST_TAIL_P (this_keyseq)) + mplist__pop_unref (custom); + else { status = Mcustomized; - keyseq = custom; + keyseq = this_keyseq; } } @@ -2075,10 +2078,13 @@ config_variable (MPlist *plist, MPlist *global_vars, MPlist *custom_vars, } else if (custom_vars && (custom = mplist__assq (custom_vars, name))) { - custom = MPLIST_NEXT (MPLIST_NEXT (MPLIST_PLIST (custom))); - if (! MPLIST_TAIL_P (custom)) + MPlist *this_value = MPLIST_NEXT (MPLIST_NEXT (MPLIST_PLIST (custom))); + + if (MPLIST_TAIL_P (this_value)) + mplist__pop_unref (custom); + else { - value = custom; + value = this_value; if (MFAILP (check_variable_value (value, global ? global : plist))) value = NULL; status = Mcustomized; @@ -5631,30 +5637,21 @@ minput_save_config (void) else custom->cmds = mplist (), p = NULL; elt = MPLIST_NEXT (elt); - if (MPLIST_TAIL_P (elt)) + if (p) { - if (p) - { - /* Make customization ignored. */ - p = MPLIST_NEXT (MPLIST_PLIST (p)); - mplist_set (p, Mnil, NULL); - } + p = MPLIST_NEXT (MPLIST_NEXT (MPLIST_PLIST (p))); + mplist_set (p, Mnil, NULL); } else { - elt = MPLIST_NEXT (elt); - if (p) - { - p = MPLIST_NEXT (MPLIST_NEXT (MPLIST_PLIST (p))); - mplist_set (p, Mnil, NULL); - mplist__conc (p, elt); - } - else - { - p = MPLIST_PLIST (pl); - mplist_add (custom->cmds, Mplist, p); - } + p = mplist (); + mplist_add (custom->cmds, Mplist, p); + M17N_OBJECT_UNREF (p); + mplist_add (p, Msymbol, command); + p = mplist_add (p, Msymbol, Mnil); + p = MPLIST_NEXT (p); } + mplist__conc (p, elt); } if (config->vars) MPLIST_DO (pl, config->vars) @@ -5666,29 +5663,25 @@ minput_save_config (void) else custom->vars = mplist (), p = NULL; elt = MPLIST_NEXT (elt); - if (MPLIST_TAIL_P (elt)) + if (p) { - if (p) - mplist__pop_unref (p); + p = MPLIST_NEXT (MPLIST_NEXT (MPLIST_PLIST (p))); + mplist_set (p, Mnil, NULL); } else { - elt = MPLIST_NEXT (elt); - if (p) - { - p = MPLIST_NEXT (MPLIST_NEXT (MPLIST_PLIST (p))); - mplist_set (p, Mnil, NULL); - mplist__conc (p, elt); - } - else - { - p = MPLIST_PLIST (pl); - mplist_add (custom->vars, Mplist, p); - } + p = mplist (); + mplist_add (custom->vars, Mplist, p); + M17N_OBJECT_UNREF (p); + mplist_add (p, Msymbol, variable); + p = mplist_add (p, Msymbol, Mnil); + p = MPLIST_NEXT (p); } + mplist__conc (p, elt); } } - M17N_OBJECT_UNREF (im_config_list); + free_im_list (im_config_list); + im_config_list = NULL; /* Next, reflect customization to the actual plist to be written. */ data = tail = mplist ();