void weechat_aspell_create_spellers (struct t_gui_buffer *buffer) { const char *dict_list; char **argv; int argc, i; if (buffer) { dict_list = weechat_aspell_get_dict (buffer); if (!weechat_aspell_spellers_already_ok (dict_list)) { weechat_aspell_speller_free_all (); if (dict_list) { argv = weechat_string_split (dict_list, ",", 0, 0, &argc); if (argv) { for (i = 0; i < argc; i++) { weechat_aspell_speller_new (argv[i]); } weechat_string_free_split (argv); } } } } }
struct t_aspell_speller_buffer * weechat_aspell_speller_buffer_new (struct t_gui_buffer *buffer) { const char *buffer_dicts; char **dicts; int num_dicts, i; struct t_aspell_speller_buffer *new_speller_buffer; AspellSpeller *ptr_speller; if (!buffer) return NULL; weechat_hashtable_remove (weechat_aspell_speller_buffer, buffer); new_speller_buffer = malloc (sizeof (*new_speller_buffer)); if (!new_speller_buffer) return NULL; new_speller_buffer->spellers = NULL; new_speller_buffer->modifier_string = NULL; new_speller_buffer->input_pos = -1; new_speller_buffer->modifier_result = NULL; buffer_dicts = weechat_aspell_get_dict (buffer); if (buffer_dicts) { dicts = weechat_string_split (buffer_dicts, ",", 0, 0, &num_dicts); if (dicts && (num_dicts > 0)) { new_speller_buffer->spellers = malloc ((num_dicts + 1) * sizeof (AspellSpeller *)); if (new_speller_buffer->spellers) { for (i = 0; i < num_dicts; i++) { ptr_speller = weechat_hashtable_get (weechat_aspell_spellers, dicts[i]); if (!ptr_speller) ptr_speller = weechat_aspell_speller_new (dicts[i]); new_speller_buffer->spellers[i] = ptr_speller; } new_speller_buffer->spellers[num_dicts] = NULL; } } if (dicts) weechat_string_free_split (dicts); } weechat_hashtable_set (weechat_aspell_speller_buffer, buffer, new_speller_buffer); weechat_bar_item_update ("aspell_dict"); return new_speller_buffer; }
char * weechat_aspell_bar_item_dict (void *data, struct t_gui_bar_item *item, struct t_gui_window *window, struct t_gui_buffer *buffer, struct t_hashtable *extra_info) { const char *dict_list; /* make C compiler happy */ (void) data; (void) item; (void) window; (void) extra_info; if (!buffer) return NULL; dict_list = weechat_aspell_get_dict (buffer); return (dict_list) ? strdup (dict_list) : NULL; }