summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarinus Schraal <foser@gentoo.org>2006-04-05 14:07:42 +0000
committerMarinus Schraal <foser@gentoo.org>2006-04-05 14:07:42 +0000
commit8dabe90aea5a8b8e9eb00a4803ff2ef2e7188bf3 (patch)
tree5ac36ed63d9610decd2e2e7121f2ff9c78ed8a31 /app-text/gtkspell/files
parentAdd ~amd64 (diff)
downloadgentoo-2-8dabe90aea5a8b8e9eb00a4803ff2ef2e7188bf3.tar.gz
gentoo-2-8dabe90aea5a8b8e9eb00a4803ff2ef2e7188bf3.tar.bz2
gentoo-2-8dabe90aea5a8b8e9eb00a4803ff2ef2e7188bf3.zip
bump to propagate patch fix
(Portage version: 2.1_pre4-r1)
Diffstat (limited to 'app-text/gtkspell/files')
-rw-r--r--app-text/gtkspell/files/digest-gtkspell-2.0.11-r13
-rw-r--r--app-text/gtkspell/files/gtkspell-2.0.11-enchant.patch262
2 files changed, 265 insertions, 0 deletions
diff --git a/app-text/gtkspell/files/digest-gtkspell-2.0.11-r1 b/app-text/gtkspell/files/digest-gtkspell-2.0.11-r1
new file mode 100644
index 000000000000..f4af17382c66
--- /dev/null
+++ b/app-text/gtkspell/files/digest-gtkspell-2.0.11-r1
@@ -0,0 +1,3 @@
+MD5 494869f67146a12a3f17a958f51aeb05 gtkspell-2.0.11.tar.gz 347172
+RMD160 c5ca1804807f445e246de2b384448a7c7c76855f gtkspell-2.0.11.tar.gz 347172
+SHA256 521d6be1e1236706cd491305b10f01d989bf47787ca97242c56c0d2b038e6a12 gtkspell-2.0.11.tar.gz 347172
diff --git a/app-text/gtkspell/files/gtkspell-2.0.11-enchant.patch b/app-text/gtkspell/files/gtkspell-2.0.11-enchant.patch
new file mode 100644
index 000000000000..00d9e0320fea
--- /dev/null
+++ b/app-text/gtkspell/files/gtkspell-2.0.11-enchant.patch
@@ -0,0 +1,262 @@
+diff -x '*orig' -uNr gtkspell-2.0.11/configure.ac gtkspell-2.0.11.patched/configure.ac
+--- gtkspell-2.0.11/configure.ac 2005-05-27 23:38:33.000000000 +0200
++++ gtkspell-2.0.11.patched/configure.ac 2006-04-05 15:51:17.000000000 +0200
+@@ -4,18 +4,12 @@
+ AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
+ AC_CONFIG_HEADERS([config.h])
+
+-AC_CHECK_HEADER(aspell.h, [AC_DEFINE(HAVE_ASPELL_H,1,
+- [Define to 1 if you have the <aspell.h> header file.] )] )
+-AC_CHECK_HEADER(pspell/pspell.h, [AC_DEFINE(HAVE_PSPELL_H,1,
+- [Define to 1 if you have the <pspell/pspell.h> header file.] )] )
+-AC_CHECK_LIB(aspell, new_aspell_speller, SPELLER_LIB="-laspell",
+- [AC_CHECK_LIB(pspell, new_pspell_manager, SPELLER_LIB="-lpspell",
+- [AC_MSG_ERROR([You must have the aspell or pspell dev libraries to build gtkspell.]) ] ) ] )
++SPELLER_LIB=-lenchant
+
+ AC_SUBST(SPELLER_LIB)
+ GTKSPELL_PACKAGES=gtk+-2.0
+ AC_SUBST(GTKSPELL_PACKAGES)
+-PKG_CHECK_MODULES(GTKSPELL, $GTKSPELL_PACKAGES)
++PKG_CHECK_MODULES(GTKSPELL, $GTKSPELL_PACKAGES enchant >= 0.4.0 )
+ AC_SUBST(GTKSPELL_CFLAGS)
+ AC_SUBST(GTKSPELL_LIBS)
+
+diff -x '*orig' -uNr gtkspell-2.0.11/gtkspell/gtkspell.c gtkspell-2.0.11.patched/gtkspell/gtkspell.c
+--- gtkspell-2.0.11/gtkspell/gtkspell.c 2005-05-27 23:09:10.000000000 +0200
++++ gtkspell-2.0.11.patched/gtkspell/gtkspell.c 2006-04-05 15:52:08.000000000 +0200
+@@ -14,37 +14,7 @@
+
+ #define GTKSPELL_MISSPELLED_TAG "gtkspell-misspelled"
+
+-#ifdef HAVE_ASPELL_H
+- #define USING_ASPELL
+- #include <aspell.h>
+-#elif defined HAVE_PSPELL_H
+- #define USING_PSPELL
+- #include <pspell/pspell.h>
+- #define AspellSpeller PspellManager
+- #define speller manager
+- #define aspell_speller_check pspell_manager_check
+- #define aspell_speller_add_to_session pspell_manager_add_to_session
+- #define aspell_speller_add_to_personal pspell_manager_add_to_personal
+- #define aspell_speller_save_all_word_lists pspell_manager_save_all_word_lists
+- #define aspell_speller_store_replacement pspell_manager_store_replacement
+- #define AspellWordList PspellWordList
+- #define AspellStringEnumeration PspellStringEmulation
+- #define aspell_speller_suggest pspell_manager_suggest
+- #define aspell_word_list_elements pspell_word_list_elements
+- #define aspell_string_enumeration_next pspell_string_emulation_next
+- #define delete_aspell_string_enumeration delete_pspell_string_emulation
+- #define AspellConfig PspellConfig
+- #define AspellCanHaveError PspellCanHaveError
+- #define new_aspell_config new_pspell_config
+- #define aspell_config_replace pspell_config_replace
+- #define new_aspell_speller new_pspell_manager
+- #define delete_aspell_config delete_pspell_config
+- #define aspell_error_message pspell_error_message
+- #define delete_aspell_speller delete_pspell_manager
+- #define to_aspell_speller to_pspell_manager
+- #define aspell_error_number pspell_error_number
+- #define aspell pspell
+-#endif
++#include <enchant.h>
+
+ const int debug = 0;
+ const int quiet = 0;
+@@ -55,7 +25,8 @@
+ GtkTextMark *mark_insert_start;
+ GtkTextMark *mark_insert_end;
+ gboolean deferred_check;
+- AspellSpeller *speller;
++ EnchantBroker *broker;
++ EnchantDict *speller;
+ GtkTextMark *mark_click;
+ };
+
+@@ -124,10 +95,12 @@
+ check_word(GtkSpell *spell, GtkTextBuffer *buffer,
+ GtkTextIter *start, GtkTextIter *end) {
+ char *text;
++ if (!spell->speller)
++ return;
+ text = gtk_text_buffer_get_text(buffer, start, end, FALSE);
+ if (debug) g_print("checking: %s\n", text);
+ if (g_unichar_isdigit(*text) == FALSE) /* don't check numbers */
+- if (aspell_speller_check(spell->speller, text, -1) == FALSE)
++ if (enchant_dict_check(spell->speller, text, strlen(text)) != 0)
+ gtk_text_buffer_apply_tag(buffer, spell->tag_highlight, start, end);
+ g_free(text);
+ }
+@@ -302,8 +275,7 @@
+ get_word_extents_from_mark(buffer, &start, &end, spell->mark_click);
+ word = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
+
+- aspell_speller_add_to_personal(spell->speller, word, strlen(word));
+- aspell_speller_save_all_word_lists(spell->speller);
++ enchant_dict_add_to_pwl( spell->speller, word, strlen(word));
+
+ gtkspell_recheck_all(spell);
+
+@@ -321,7 +293,7 @@
+ get_word_extents_from_mark(buffer, &start, &end, spell->mark_click);
+ word = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
+
+- aspell_speller_add_to_session(spell->speller, word, strlen(word));
++ enchant_dict_add_to_session(spell->speller, word, strlen(word));
+
+ gtkspell_recheck_all(spell);
+
+@@ -335,6 +307,9 @@
+ GtkTextIter start, end;
+ GtkTextBuffer *buffer;
+
++ if (!spell->speller)
++ return;
++
+ buffer = gtk_text_view_get_buffer(spell->view);
+
+ get_word_extents_from_mark(buffer, &start, &end, spell->mark_click);
+@@ -350,33 +325,33 @@
+ gtk_text_buffer_delete(buffer, &start, &end);
+ gtk_text_buffer_insert(buffer, &start, newword, -1);
+
+- aspell_speller_store_replacement(spell->speller,
++ enchant_dict_store_replacement(spell->speller,
+ oldword, strlen(oldword),
+ newword, strlen(newword));
+
+ g_free(oldword);
+ }
+
+-GtkWidget*
++static GtkWidget*
+ build_suggestion_menu(GtkSpell *spell, GtkTextBuffer *buffer,
+ const char *word) {
+ const char *suggestion;
+ GtkWidget *topmenu, *menu;
+ GtkWidget *mi;
+ GtkWidget *hbox;
+- int count = 0;
+ void *spelldata;
+- const AspellWordList *suggestions;
+- AspellStringEnumeration *elements;
++ char **suggestions;
++ size_t n_suggs, i;
+ char *label;
+
+ topmenu = menu = gtk_menu_new();
+
+- suggestions = aspell_speller_suggest(spell->speller, word, -1);
+- elements = aspell_word_list_elements(suggestions);
++ if (!spell->speller)
++ return topmenu;
+
+- suggestion = aspell_string_enumeration_next(elements);
+- if (suggestion == NULL) {
++ suggestions = enchant_dict_suggest(spell->speller, word, strlen(word), &n_suggs);
++
++ if (suggestions == NULL || !n_suggs) {
+ /* no suggestions. put something in the menu anyway... */
+ GtkWidget *label;
+ label = gtk_label_new("");
+@@ -388,8 +363,8 @@
+ gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), mi);
+ } else {
+ /* build a set of menus with suggestions. */
+- while (suggestion != NULL) {
+- if (count == 10) {
++ for (i = 0; i < n_suggs; i++ ) {
++ if (i > 0 && i % 10 == 0) {
+ mi = gtk_menu_item_new();
+ gtk_widget_show(mi);
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi);
+@@ -400,19 +375,16 @@
+
+ menu = gtk_menu_new();
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(mi), menu);
+- count = 0;
+ }
+- mi = gtk_menu_item_new_with_label(suggestion);
++ mi = gtk_menu_item_new_with_label(suggestions[i]);
+ g_signal_connect(G_OBJECT(mi), "activate",
+ G_CALLBACK(replace_word), spell);
+ gtk_widget_show(mi);
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi);
+- count++;
+- suggestion = aspell_string_enumeration_next(elements);
+ }
+ }
+
+- delete_aspell_string_enumeration(elements);
++ enchant_dict_free_suggestions(spell->speller, suggestions);
+
+ /* Separator */
+ mi = gtk_menu_item_new();
+@@ -517,9 +489,6 @@
+
+ static gboolean
+ gtkspell_set_language_internal(GtkSpell *spell, const gchar *lang, GError **error) {
+- AspellConfig *config;
+- AspellCanHaveError *err;
+- AspellSpeller *speller;
+
+ if (lang == NULL) {
+ lang = g_getenv("LANG");
+@@ -531,26 +500,25 @@
+ }
+ }
+
+- config = new_aspell_config();
+- if (lang)
+- aspell_config_replace(config, "language-tag", lang);
+- aspell_config_replace(config, "encoding", "utf-8");
+- err = new_aspell_speller(config);
+- delete_aspell_config(config);
++ if (!spell->broker)
++ spell->broker = enchant_broker_init();
+
+- if (aspell_error_number(err) != 0) {
+-#ifdef USING_ASPELL
+- g_set_error(error, GTKSPELL_ERROR, GTKSPELL_ERROR_BACKEND,
+- "aspell: %s", aspell_error_message(err));
+-#elif defined USING_PSPELL
++ if (spell->speller) {
++ enchant_broker_free_dict(spell->broker, spell->speller);
++ spell->speller = NULL;
++ }
++
++ if (!lang) {
++ lang = "en";
++ }
++
++ spell->speller = enchant_broker_request_dict(spell->broker, lang );
++
++ if (!spell->speller) {
+ g_set_error(error, GTKSPELL_ERROR, GTKSPELL_ERROR_BACKEND,
+- "pspell: %s", aspell_error_message(err));
+-#endif
++ _("enchant error for language: %s"),lang);
+ return FALSE;
+ }
+- if (spell->speller)
+- delete_aspell_speller(spell->speller);
+- spell->speller = to_aspell_speller(err);
+
+ return TRUE;
+ }
+@@ -713,8 +681,13 @@
+ gtk_text_buffer_delete_mark(buffer, spell->mark_insert_end);
+ gtk_text_buffer_delete_mark(buffer, spell->mark_click);
+
+- delete_aspell_speller(spell->speller);
+
++ if (spell->broker) {
++ if (spell->speller) {
++ enchant_broker_free_dict(spell->broker, spell->speller);
++ }
++ enchant_broker_free(spell->broker);
++ }
+ g_signal_handlers_disconnect_matched(spell->view,
+ G_SIGNAL_MATCH_DATA,
+ 0, 0, NULL, NULL,