Branch: refs/heads/master Author: Frank Lanitz frank@frank.uvena.de Committer: GitHub noreply@github.com Date: Sat, 20 Jan 2018 17:05:50 UTC Commit: 1db0c26e5b1786c1d16ce520639dafdddfbbf03a https://github.com/geany/geany-plugins/commit/1db0c26e5b1786c1d16ce520639daf...
Log Message: ----------- Merge pull request #674 from eht16/spellcheck_support_enchant_2_0
SpellCheck: Support Enchant 2.0 and later
Modified Paths: -------------- build/spellcheck.m4 spellcheck/README spellcheck/src/Makefile.am spellcheck/src/scplugin.c spellcheck/src/speller.c
Modified: build/spellcheck.m4 9 lines changed, 7 insertions(+), 2 deletions(-) =================================================================== @@ -3,14 +3,19 @@ AC_DEFUN([GP_CHECK_SPELLCHECK], GP_ARG_DISABLE([spellcheck], [auto])
ENCHANT_VERSION=1.3 - OPT_ENCHANT_VERSION=1.5 - PKG_CHECK_MODULES([ENCHANT], [enchant >= ${OPT_ENCHANT_VERSION}], + ENCHANT_VERSION_1_5=1.5 + ENCHANT_VERSION_2_0=2.0 + PKG_CHECK_MODULES([ENCHANT_1_5], [enchant >= ${ENCHANT_VERSION_1_5}], have_enchant_1_5=yes, have_enchant_1_5=no) + PKG_CHECK_MODULES([ENCHANT_2_0], [enchant >= ${ENCHANT_VERSION_2_0}], + have_enchant_2_0=yes, + have_enchant_2_0=no) GP_CHECK_PLUGIN_DEPS([spellcheck], [ENCHANT], [enchant >= ${ENCHANT_VERSION}])
AM_CONDITIONAL([HAVE_ENCHANT_1_5], [test "$have_enchant_1_5" = yes]) + AM_CONDITIONAL([HAVE_ENCHANT_2_0], [test "$have_enchant_2_0" = yes]) GP_COMMIT_PLUGIN_STATUS([Spellcheck])
AC_CONFIG_FILES([
Modified: spellcheck/README 20 lines changed, 13 insertions(+), 7 deletions(-) =================================================================== @@ -34,27 +34,33 @@ assign a keyboard shortcut in Geany's preferences dialog to perform a spell check.
-Configuring dictionaries on Windows ------------------------------------ -On Windows, you might need to install the dictionaries (the files +Configuring custom dictionaries +------------------------------- +Especially Windows, you might need to install the dictionaries (the files containing the information for spell checking) manually. First, you need to download the dictionary files for the languages you want, e.g. from -http://extensions.services.openoffice.org/en/dictionaries. -Be sure to download the "Spelling" archives from this site. The -downloaded archive should contain one or more .dic and .aff files. +https://cgit.freedesktop.org/libreoffice/dictionaries/tree/ or +https://addons.mozilla.org/en-US/firefox/language-tools/. +The downloaded archives should contain one or more .dic and .aff files.
Instructions:
1. Download the archive you want to use -2. The downloaded archive with the extension .oxt is actually a ZIP +2. The downloaded archive with extensions like .xpi or .oxt is actually a ZIP archive, so extract it as usual (e.g. with 7-Zip or another ZIP unpacker). Extract the contents into a folder of your choice, e.g. C:\dictionaries 3. Then open to the Spell Check plugin preferences dialog in Geany and choose the folder you just created. You may need to restart Geany and then the installed dictionaries should be available
+Note: if you are using Enchant 2.0 or later (the library used by the SpellCheck +plugin), you need to move the dictionaries into a subfolder called "hunspell" +in the directory you created above. +To check which Enchant version you are using, check "Help->Debug Messages" in +Geany and find the appropriate log message telling about the Enchant version. +
Known issues ------------
Modified: spellcheck/src/Makefile.am 4 lines changed, 4 insertions(+), 0 deletions(-) =================================================================== @@ -22,6 +22,10 @@ if HAVE_ENCHANT_1_5 spellcheck_la_CFLAGS += -DHAVE_ENCHANT_1_5 endif
+if HAVE_ENCHANT_2_0 +spellcheck_la_CFLAGS += -DHAVE_ENCHANT_2_0 +endif + spellcheck_la_LIBADD = \ $(COMMONLIBS) \ $(ENCHANT_LIBS)
Modified: spellcheck/src/scplugin.c 8 lines changed, 5 insertions(+), 3 deletions(-) =================================================================== @@ -268,14 +268,14 @@ static void configure_frame_editor_menu_toggled_cb(GtkToggleButton *togglebutton
GtkWidget *plugin_configure(GtkDialog *dialog) { - GtkWidget *label_language, *label_dir, *vbox; + GtkWidget *label_language, *vbox; GtkWidget *combo, *check_type, *check_on_open, *check_msgwin, *check_toolbar; GtkWidget *frame_editor_menu, *check_editor_menu; GtkWidget *check_editor_menu_sub_menu, *align_editor_menu_sub_menu; GtkWidget *vbox_interface, *frame_interface, *label_interface; GtkWidget *vbox_behavior, *frame_behavior, *label_behavior; #ifdef HAVE_ENCHANT_1_5 - GtkWidget *entry_dir, *hbox, *button, *image; + GtkWidget *entry_dir, *label_dir, *hbox, *button, *image; #endif
vbox = gtk_vbox_new(FALSE, 6); @@ -352,7 +352,9 @@ GtkWidget *plugin_configure(GtkDialog *dialog) gtk_label_set_mnemonic_widget(GTK_LABEL(label_dir), entry_dir); gtk_widget_set_tooltip_text(entry_dir, _("Read additional dictionary files from this directory. " - "For now, this only works with myspell dictionaries.")); + "For now, this only works with hunspell dictionaries. " + "With Enchant 2.0 or later, the dictionaries are searched " + "in a subfolder called "hunspell". See the plugin's Help for details.")); if (! EMPTY(sc_info->dictionary_dir)) gtk_entry_set_text(GTK_ENTRY(entry_dir), sc_info->dictionary_dir);
Modified: spellcheck/src/speller.c 31 lines changed, 30 insertions(+), 1 deletions(-) =================================================================== @@ -470,7 +470,12 @@ void sc_speller_add_word(const gchar *word) g_return_if_fail(sc_speller_dict != NULL); g_return_if_fail(word != NULL);
+#ifdef HAVE_ENCHANT_1_5 + /* enchant_dict_add() is available since Enchant 1.4 */ + enchant_dict_add(sc_speller_dict, word, -1); +#else enchant_dict_add_to_pwl(sc_speller_dict, word, -1); +#endif }
gboolean sc_speller_dict_check(const gchar *word) @@ -518,7 +523,18 @@ void sc_speller_reinit_enchant_dict(void) if (sc_speller_dict != NULL) enchant_broker_free_dict(sc_speller_broker, sc_speller_dict);
-#if HAVE_ENCHANT_1_5 +#ifdef HAVE_ENCHANT_2_0 + #define ENCHANT_CONFIG_ENV_NAME "ENCHANT_CONFIG_DIR" + /* set custom configuration path for enchant (Enchant will look for dictionaries there) */ + if (! EMPTY(sc_info->dictionary_dir)) + { + g_setenv(ENCHANT_CONFIG_ENV_NAME, sc_info->dictionary_dir, TRUE); + } + else + { + g_unsetenv(ENCHANT_CONFIG_ENV_NAME); + } +#elif HAVE_ENCHANT_1_5 { const gchar *old_path; gchar *new_path; @@ -569,8 +585,21 @@ void sc_speller_reinit_enchant_dict(void) }
+static void log_enchant_version(void) +{ +#ifdef HAVE_ENCHANT_2_0 + const gchar *enchant_version = enchant_get_version(); +#else + const gchar *enchant_version = "1.6 or older"; +#endif + + g_debug("Initializing Enchant library version %s", enchant_version); +} + + void sc_speller_init(void) { + log_enchant_version(); sc_speller_broker = enchant_broker_init();
sc_speller_reinit_enchant_dict();
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).