feat: Add /spellcheck list command

To list all available dictionaries.

Signed-off-by: Michael Vetter <jubalh@iodoru.org>
This commit is contained in:
Michael Vetter
2026-03-26 23:08:58 +01:00
parent 4922366366
commit ed2fdf88ac
5 changed files with 51 additions and 0 deletions

View File

@@ -93,6 +93,31 @@ spellcheck_get_lang(void)
return current_lang;
}
static void
_list_dicts_cb(const char* const lang_tag,
const char* const provider_name,
const char* const provider_desc,
const char* const provider_file,
void* user_data)
{
GList** list = (GList**)user_data;
if (g_list_find_custom(*list, lang_tag, (GCompareFunc)g_strcmp0) == NULL) {
*list = g_list_append(*list, g_strdup(lang_tag));
}
}
GList*
spellcheck_get_available_langs(void)
{
if (!broker) {
return NULL;
}
GList* list = NULL;
enchant_broker_list_dicts(broker, _list_dicts_cb, &list);
return g_list_sort(list, (GCompareFunc)g_strcmp0);
}
gboolean
spellcheck_is_misspelled(const char* word)
{

View File

@@ -20,6 +20,7 @@ void spellcheck_deinit(void);
gboolean spellcheck_is_misspelled(const char* word);
gboolean spellcheck_set_lang(const char* lang);
const char* spellcheck_get_lang(void);
GList* spellcheck_get_available_langs(void);
#else
@@ -46,6 +47,11 @@ spellcheck_get_lang(void)
{
return NULL;
}
static inline GList*
spellcheck_get_available_langs(void)
{
return NULL;
}
#endif