forked from enlightenment/edi
78 lines
1.5 KiB
C
78 lines
1.5 KiB
C
#ifdef HAVE_CONFIG_H
|
|
# include "config.h"
|
|
#endif
|
|
|
|
#include "edi_language_provider.h"
|
|
|
|
#include "edi_config.h"
|
|
|
|
#include "edi_private.h"
|
|
|
|
#include "edi_language_provider_c.c"
|
|
|
|
static Edi_Language_Provider _edi_language_provider_registry[] =
|
|
{
|
|
{
|
|
"c", _edi_language_c_add, _edi_language_c_del,
|
|
_edi_language_c_lookup, _edi_language_c_lookup_doc
|
|
},
|
|
|
|
{NULL, NULL, NULL, NULL, NULL}
|
|
};
|
|
|
|
Edi_Language_Provider *edi_language_provider_get(Edi_Editor *editor)
|
|
{
|
|
Edi_Language_Provider *provider;
|
|
const char *mime = editor->mimetype;
|
|
const char *id = NULL;
|
|
|
|
if (!mime)
|
|
return NULL;
|
|
|
|
if (!strcasecmp(mime, "text/x-chdr") || !strcasecmp(mime, "text/x-csrc")
|
|
|| !strcasecmp(mime, "text/x-modelica"))
|
|
id = "c";
|
|
|
|
if (!id)
|
|
return NULL;
|
|
|
|
provider = _edi_language_provider_registry;
|
|
while (provider != NULL && provider->id != NULL)
|
|
{
|
|
if (!strncmp(id, provider->id, strlen(provider->id)))
|
|
return provider;
|
|
|
|
provider++;
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
Eina_Bool
|
|
edi_language_provider_has(Edi_Editor *editor)
|
|
{
|
|
return !!edi_language_provider_get(editor);
|
|
}
|
|
|
|
void
|
|
edi_language_suggest_item_free(Edi_Language_Suggest_Item *item)
|
|
{
|
|
free((char *)item->summary);
|
|
free((char *)item->detail);
|
|
|
|
free(item);
|
|
}
|
|
|
|
void
|
|
edi_language_doc_free(Edi_Language_Document *doc)
|
|
{
|
|
if (!doc) return;
|
|
|
|
eina_strbuf_free(doc->title);
|
|
eina_strbuf_free(doc->detail);
|
|
eina_strbuf_free(doc->param);
|
|
eina_strbuf_free(doc->ret);
|
|
eina_strbuf_free(doc->see);
|
|
}
|
|
|