void sc_speller_check_document(GeanyDocument *doc) { gint i; gint first_line, last_line; gchar *dict_string = NULL; gint suggestions_found = 0; g_return_if_fail(sc_speller_dict != NULL); g_return_if_fail(doc != NULL); ui_progress_bar_start(_("Checking")); enchant_dict_describe(sc_speller_dict, dict_describe, &dict_string); if (sci_has_selection(doc->editor->sci)) { first_line = sci_get_line_from_position( doc->editor->sci, sci_get_selection_start(doc->editor->sci)); last_line = sci_get_line_from_position( doc->editor->sci, sci_get_selection_end(doc->editor->sci)); if (sc_info->use_msgwin) msgwin_msg_add(COLOR_BLUE, -1, NULL, _("Checking file \"%s\" (lines %d to %d using %s):"), DOC_FILENAME(doc), first_line + 1, last_line + 1, dict_string); g_message("Checking file \"%s\" (lines %d to %d using %s):", DOC_FILENAME(doc), first_line + 1, last_line + 1, dict_string); } else { first_line = 0; last_line = sci_get_line_count(doc->editor->sci); if (sc_info->use_msgwin) msgwin_msg_add(COLOR_BLUE, -1, NULL, _("Checking file \"%s\" (using %s):"), DOC_FILENAME(doc), dict_string); g_message("Checking file \"%s\" (using %s):", DOC_FILENAME(doc), dict_string); } g_free(dict_string); if (first_line == last_line) { suggestions_found += sc_speller_process_line(doc, first_line); } else { for (i = first_line; i < last_line; i++) { suggestions_found += sc_speller_process_line(doc, i); /* process other GTK events to keep the GUI being responsive */ while (g_main_context_iteration(NULL, FALSE)); } } if (suggestions_found == 0 && sc_info->use_msgwin) msgwin_msg_add(COLOR_BLUE, -1, NULL, _("The checked text is spelled correctly.")); ui_progress_bar_stop(); }
int main (int argc, char **argv) { EnchantBroker *broker; EnchantDict *dict; char * lang_tag = NULL; int mode = 0, i; for (i = 1; i < argc; i++) { if (!strcmp (argv[i], "-lang")) { if (i < (argc - 1)) { lang_tag = g_strdup (argv[++i]); } else { lang_tag = enchant_get_user_language(); if (!lang_tag || !strcmp (lang_tag, "C")) { if (lang_tag) /* lang might be "C" */ g_free (lang_tag); lang_tag = g_strdup ("en"); } } mode = 1; } else if (!strcmp (argv[i], "-h") || !strcmp (argv[i], "-?") || !strcmp(argv[i], "-help")) { printf ("%s [-lang [language_tag]] [-list-dicts] [-h] [-v]\n", argv[0]); if (lang_tag) g_free (lang_tag); return 0; } else if (!strcmp (argv[i], "-v") || !strcmp (argv[i], "-version")) { printf ("%s %s\n", argv[0], VERSION); if (lang_tag) g_free (lang_tag); return 0; } else if (!strcmp (argv[i], "-list-dicts")) { mode = 2; } } broker = enchant_broker_init (); if (mode == 0) { enchant_broker_describe (broker, enumerate_providers, stdout); } else if (mode == 1) { if (!lang_tag) { printf ("Error: language tag not specified and environment variable $LANG not set.\n"); enchant_broker_free (broker); return 1; } dict = enchant_broker_request_dict (broker, lang_tag); if (!dict) { printf ("No dictionary available for '%s'.\n", lang_tag); if (lang_tag) g_free (lang_tag); enchant_broker_free (broker); return 1; } else { enchant_dict_describe (dict, describe_dict, stdout); enchant_broker_free_dict (broker, dict); } } else if (mode == 2) { enchant_broker_list_dicts (broker, enumerate_dicts, stdout); } if (lang_tag) g_free (lang_tag); enchant_broker_free (broker); return 0; }