From fec326f641e8eee994899bd3d7c71b781a5b644f Mon Sep 17 00:00:00 2001 From: Andrew Borodin Date: Tue, 3 Jul 2012 13:27:37 +0400 Subject: [PATCH] Tweak of select codepage code in case of --disable-charset ...in mceditor, mcviewer and mcdiffviewer. Signed-off-by: Andrew Borodin --- src/diffviewer/ydiff.c | 229 ++++++++++++++++++++--------------------- src/editor/editcmd.c | 6 +- src/viewer/lib.c | 6 +- 3 files changed, 118 insertions(+), 123 deletions(-) diff --git a/src/diffviewer/ydiff.c b/src/diffviewer/ydiff.c index 1bfe46dd1..fd6532ce8 100644 --- a/src/diffviewer/ydiff.c +++ b/src/diffviewer/ydiff.c @@ -117,46 +117,6 @@ TAB_SKIP (int ts, int pos) /* --------------------------------------------------------------------------------------------- */ -static void -dview_set_codeset (WDiff * dview) -{ -#ifdef HAVE_CHARSET - const char *encoding_id = NULL; - - dview->utf8 = TRUE; - encoding_id = - get_codepage_id (mc_global.source_codepage >= - 0 ? mc_global.source_codepage : mc_global.display_codepage); - if (encoding_id != NULL) - { - GIConv conv; - conv = str_crt_conv_from (encoding_id); - if (conv != INVALID_CONV) - { - if (dview->converter != str_cnv_from_term) - str_close_conv (dview->converter); - dview->converter = conv; - } - dview->utf8 = (gboolean) str_isutf8 (encoding_id); - } -#else - (void) dview; -#endif -} - -/* --------------------------------------------------------------------------------------------- */ - -#ifdef HAVE_CHARSET -static void -dview_select_encoding (WDiff * dview) -{ - if (do_select_codepage ()) - dview_set_codeset (dview); -} -#endif /* HAVE_CHARSET */ - -/* --------------------------------------------------------------------------------------------- */ - static gboolean rewrite_backup_content (const vfs_path_t * from_file_name_vpath, const char *to_file_name) { @@ -2281,6 +2241,118 @@ dview_compute_areas (WDiff * dview) /* --------------------------------------------------------------------------------------------- */ +static void +dview_reread (WDiff * dview) +{ + int ndiff; + + destroy_hdiff (dview); + if (dview->a[0] != NULL) + { + g_array_foreach (dview->a[0], DIFFLN, cc_free_elt); + g_array_free (dview->a[0], TRUE); + } + if (dview->a[1] != NULL) + { + g_array_foreach (dview->a[1], DIFFLN, cc_free_elt); + g_array_free (dview->a[1], TRUE); + } + + dview->a[0] = g_array_new (FALSE, FALSE, sizeof (DIFFLN)); + dview->a[1] = g_array_new (FALSE, FALSE, sizeof (DIFFLN)); + + ndiff = redo_diff (dview); + if (ndiff >= 0) + dview->ndiff = ndiff; +} + +/* --------------------------------------------------------------------------------------------- */ + +#ifdef HAVE_CHARSET +static void +dview_set_codeset (WDiff * dview) +{ + const char *encoding_id = NULL; + + dview->utf8 = TRUE; + encoding_id = + get_codepage_id (mc_global.source_codepage >= + 0 ? mc_global.source_codepage : mc_global.display_codepage); + if (encoding_id != NULL) + { + GIConv conv; + conv = str_crt_conv_from (encoding_id); + if (conv != INVALID_CONV) + { + if (dview->converter != str_cnv_from_term) + str_close_conv (dview->converter); + dview->converter = conv; + } + dview->utf8 = (gboolean) str_isutf8 (encoding_id); + } +} + +/* --------------------------------------------------------------------------------------------- */ + +static void +dview_select_encoding (WDiff * dview) +{ + if (do_select_codepage ()) + dview_set_codeset (dview); + + dview_reread (dview); + tty_touch_screen (); + repaint_screen (); +} +#endif /* HAVE_CHARSET */ + +/* --------------------------------------------------------------------------------------------- */ + +static void +dview_diff_options (WDiff * dview) +{ + const char *quality_str[] = { + N_("No&rmal"), + N_("&Fastest (Assume large files)"), + N_("&Minimal (Find a smaller set of change)") + }; + + QuickWidget diffopt_widgets[] = { + QUICK_BUTTON (6, 10, 14, OPTY, N_("&Cancel"), B_CANCEL, NULL), + QUICK_BUTTON (2, 10, 14, OPTY, N_("&OK"), B_ENTER, NULL), + + QUICK_CHECKBOX (3, OPTX, 12, OPTY, + N_("Strip &trailing carriage return"), &dview->opt.strip_trailing_cr), + QUICK_CHECKBOX (3, OPTX, 11, OPTY, + N_("Ignore all &whitespace"), &dview->opt.ignore_all_space), + QUICK_CHECKBOX (3, OPTX, 10, OPTY, + N_("Ignore &space change"), &dview->opt.ignore_space_change), + QUICK_CHECKBOX (3, OPTX, 9, OPTY, + N_("Ignore tab &expansion"), &dview->opt.ignore_tab_expansion), + QUICK_CHECKBOX (3, OPTX, 8, OPTY, + N_("&Ignore case"), &dview->opt.ignore_case), + QUICK_LABEL (3, OPTX, 7, OPTY, N_("Diff extra options")), + QUICK_RADIO (3, OPTX, 3, OPTY, + 3, (const char **) quality_str, (int *) &dview->opt.quality), + QUICK_LABEL (3, OPTX, 2, OPTY, N_("Diff algorithm")), + + QUICK_END + }; + + QuickDialog diffopt = { + OPTX, OPTY, -1, -1, + N_("Diff Options"), "[Diff Options]", + diffopt_widgets, NULL, NULL, FALSE + }; + + if (quick_dialog (&diffopt) != B_CANCEL) + { + dview_reread (dview); + } +} + +/* --------------------------------------------------------------------------------------------- */ + static int dview_init (WDiff * dview, const char *args, const char *file1, const char *file2, const char *label1, const char *label2, DSRC dsrc) @@ -2328,8 +2400,9 @@ dview_init (WDiff * dview, const char *args, const char *file1, const char *file dview->hdiff = NULL; dview->dsrc = dsrc; dview->converter = str_cnv_from_term; +#ifdef HAVE_CHARSET dview_set_codeset (dview); - +#endif dview->a[0] = g_array_new (FALSE, FALSE, sizeof (DIFFLN)); dview->a[1] = g_array_new (FALSE, FALSE, sizeof (DIFFLN)); @@ -2374,77 +2447,6 @@ dview_init (WDiff * dview, const char *args, const char *file1, const char *file /* --------------------------------------------------------------------------------------------- */ -static void -dview_reread (WDiff * dview) -{ - int ndiff = dview->ndiff; - - destroy_hdiff (dview); - if (dview->a[0] != NULL) - { - g_array_foreach (dview->a[0], DIFFLN, cc_free_elt); - g_array_free (dview->a[0], TRUE); - } - if (dview->a[1] != NULL) - { - g_array_foreach (dview->a[1], DIFFLN, cc_free_elt); - g_array_free (dview->a[1], TRUE); - } - - dview->a[0] = g_array_new (FALSE, FALSE, sizeof (DIFFLN)); - dview->a[1] = g_array_new (FALSE, FALSE, sizeof (DIFFLN)); - - ndiff = redo_diff (dview); - if (ndiff >= 0) - dview->ndiff = ndiff; -} - -/* --------------------------------------------------------------------------------------------- */ -static void -dview_diff_options (WDiff * dview) -{ - const char *quality_str[] = { - N_("No&rmal"), - N_("&Fastest (Assume large files)"), - N_("&Minimal (Find a smaller set of change)") - }; - - QuickWidget diffopt_widgets[] = { - QUICK_BUTTON (6, 10, 14, OPTY, N_("&Cancel"), B_CANCEL, NULL), - QUICK_BUTTON (2, 10, 14, OPTY, N_("&OK"), B_ENTER, NULL), - - QUICK_CHECKBOX (3, OPTX, 12, OPTY, - N_("Strip &trailing carriage return"), &dview->opt.strip_trailing_cr), - QUICK_CHECKBOX (3, OPTX, 11, OPTY, - N_("Ignore all &whitespace"), &dview->opt.ignore_all_space), - QUICK_CHECKBOX (3, OPTX, 10, OPTY, - N_("Ignore &space change"), &dview->opt.ignore_space_change), - QUICK_CHECKBOX (3, OPTX, 9, OPTY, - N_("Ignore tab &expansion"), &dview->opt.ignore_tab_expansion), - QUICK_CHECKBOX (3, OPTX, 8, OPTY, - N_("&Ignore case"), &dview->opt.ignore_case), - QUICK_LABEL (3, OPTX, 7, OPTY, N_("Diff extra options")), - QUICK_RADIO (3, OPTX, 3, OPTY, - 3, (const char **) quality_str, (int *) &dview->opt.quality), - QUICK_LABEL (3, OPTX, 2, OPTY, N_("Diff algorithm")), - - QUICK_END - }; - - QuickDialog diffopt = { - OPTX, OPTY, -1, -1, - N_("Diff Options"), "[Diff Options]", - diffopt_widgets, NULL, NULL, FALSE - }; - - if (quick_dialog (&diffopt) != B_CANCEL) - { - dview_reread (dview); - } -} - -/* --------------------------------------------------------------------------------------------- */ - static void dview_fini (WDiff * dview) { @@ -3141,9 +3143,6 @@ dview_execute_cmd (WDiff * dview, unsigned long command) #ifdef HAVE_CHARSET case CK_SelectCodepage: dview_select_encoding (dview); - dview_reread (dview); - tty_touch_screen (); - repaint_screen (); break; #endif case CK_Cancel: diff --git a/src/editor/editcmd.c b/src/editor/editcmd.c index dd98fc690..c6e016ea7 100644 --- a/src/editor/editcmd.c +++ b/src/editor/editcmd.c @@ -3401,19 +3401,17 @@ edit_complete_word_cmd (WEdit * edit) /* --------------------------------------------------------------------------------------------- */ +#ifdef HAVE_CHARSET void edit_select_codepage_cmd (WEdit * edit) { -#ifdef HAVE_CHARSET if (do_select_codepage ()) edit_set_codeset (edit); edit->force = REDRAW_PAGE; send_message ((Widget *) edit, WIDGET_DRAW, 0); -#else - (void) edit; -#endif } +#endif /* --------------------------------------------------------------------------------------------- */ diff --git a/src/viewer/lib.c b/src/viewer/lib.c index 42fcaf4b2..8a029e7ca 100644 --- a/src/viewer/lib.c +++ b/src/viewer/lib.c @@ -337,16 +337,14 @@ mcview_set_codeset (mcview_t * view) /* --------------------------------------------------------------------------------------------- */ +#ifdef HAVE_CHARSET void mcview_select_encoding (mcview_t * view) { -#ifdef HAVE_CHARSET if (do_select_codepage ()) mcview_set_codeset (view); -#else - (void) view; -#endif } +#endif /* --------------------------------------------------------------------------------------------- */