suggest: Move to a language provider

This means we can add great new stuff in a (nearly) pluggable way
This commit is contained in:
Andy Williams 2017-01-11 18:00:33 +00:00
parent e6feb19a30
commit 2a82fedcb1
12 changed files with 113 additions and 113 deletions

View File

@ -22,8 +22,8 @@ AM_CPPFLAGS = \
noinst_HEADERS = \ noinst_HEADERS = \
edi_config.h \ edi_config.h \
language/edi_language_provider.h \
editor/edi_editor.h \ editor/edi_editor.h \
editor/edi_editor_suggest_provider.h \
edi_content_provider.h \ edi_content_provider.h \
screens/edi_screens.h \ screens/edi_screens.h \
edi_filepanel.h \ edi_filepanel.h \
@ -34,8 +34,8 @@ mainview/edi_mainview.h
edi_SOURCES = \ edi_SOURCES = \
edi_config.c \ edi_config.c \
language/edi_language_provider.c \
editor/edi_editor_search.c \ editor/edi_editor_search.c \
editor/edi_editor_suggest_provider.c \
editor/edi_editor.c \ editor/edi_editor.c \
editor/edi_editor_documentation.c \ editor/edi_editor_documentation.c \
edi_content_provider.c \ edi_content_provider.c \

View File

@ -12,7 +12,7 @@
#include "mainview/edi_mainview.h" #include "mainview/edi_mainview.h"
#include "edi_config.h" #include "edi_config.h"
#include "editor/edi_editor_suggest_provider.h" #include "language/edi_language_provider.h"
#include "edi_private.h" #include "edi_private.h"
@ -105,7 +105,7 @@ _suggest_list_content_get(void *data, Evas_Object *obj, const char *part)
{ {
Edi_Editor *editor; Edi_Editor *editor;
Edi_Mainview_Item *item; Edi_Mainview_Item *item;
Edi_Editor_Suggest_Item *suggest_it = data; Edi_Language_Suggest_Item *suggest_it = data;
char *format, *display; char *format, *display;
const char *font; const char *font;
int font_size, displen; int font_size, displen;
@ -139,7 +139,7 @@ _suggest_list_content_get(void *data, Evas_Object *obj, const char *part)
static void static void
_suggest_list_cb_selected(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) _suggest_list_cb_selected(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
{ {
Edi_Editor_Suggest_Item *suggest_it; Edi_Language_Suggest_Item *suggest_it;
Evas_Object *label = data; Evas_Object *label = data;
suggest_it = elm_object_item_data_get(event_info); suggest_it = elm_object_item_data_get(event_info);
@ -150,7 +150,7 @@ _suggest_list_cb_selected(void *data, Evas_Object *obj EINA_UNUSED, void *event_
static void static void
_suggest_list_update(Edi_Editor *editor, char *word) _suggest_list_update(Edi_Editor *editor, char *word)
{ {
Edi_Editor_Suggest_Item *suggest_it; Edi_Language_Suggest_Item *suggest_it;
Eina_List *list, *l; Eina_List *list, *l;
Elm_Genlist_Item_Class *ic; Elm_Genlist_Item_Class *ic;
Elm_Object_Item *item; Elm_Object_Item *item;
@ -200,10 +200,10 @@ _suggest_list_set(Edi_Editor *editor)
"suggest_list"); "suggest_list");
if (list) if (list)
{ {
Edi_Editor_Suggest_Item *suggest_it; Edi_Language_Suggest_Item *suggest_it;
EINA_LIST_FREE(list, suggest_it) EINA_LIST_FREE(list, suggest_it)
edi_editor_suggest_item_free(suggest_it); edi_language_suggest_item_free(suggest_it);
list = NULL; list = NULL;
evas_object_data_del(editor->suggest_genlist, "suggest_list"); evas_object_data_del(editor->suggest_genlist, "suggest_list");
@ -212,7 +212,7 @@ _suggest_list_set(Edi_Editor *editor)
elm_code_widget_cursor_position_get(editor->entry, &row, &col); elm_code_widget_cursor_position_get(editor->entry, &row, &col);
curword = _edi_editor_current_word_get(editor, row, col); curword = _edi_editor_current_word_get(editor, row, col);
list = edi_editor_suggest_provider_get(editor)->lookup(editor, row, col - strlen(curword)); list = edi_language_provider_get(editor)->lookup(editor, row, col - strlen(curword));
evas_object_data_set(editor->suggest_genlist, "suggest_list", list); evas_object_data_set(editor->suggest_genlist, "suggest_list", list);
_suggest_list_update(editor, curword); _suggest_list_update(editor, curword);
@ -254,10 +254,10 @@ _suggest_bg_cb_hide(void *data, Evas *e EINA_UNUSED,
"suggest_list"); "suggest_list");
if (list) if (list)
{ {
Edi_Editor_Suggest_Item *suggest_it; Edi_Language_Suggest_Item *suggest_it;
EINA_LIST_FREE(list, suggest_it) EINA_LIST_FREE(list, suggest_it)
edi_editor_suggest_item_free(suggest_it); edi_language_suggest_item_free(suggest_it);
list = NULL; list = NULL;
evas_object_data_del(editor->suggest_genlist, "suggest_list"); evas_object_data_del(editor->suggest_genlist, "suggest_list");
@ -272,7 +272,7 @@ _suggest_list_cb_key_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj,
void *event_info) void *event_info)
{ {
Edi_Editor *editor = (Edi_Editor *)data; Edi_Editor *editor = (Edi_Editor *)data;
Edi_Editor_Suggest_Item *suggest_it; Edi_Language_Suggest_Item *suggest_it;
Elm_Object_Item *it; Elm_Object_Item *it;
Evas_Object *genlist = obj; Evas_Object *genlist = obj;
Evas_Event_Key_Down *ev = event_info; Evas_Event_Key_Down *ev = event_info;
@ -308,7 +308,7 @@ _suggest_list_cb_clicked_double(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info) void *event_info)
{ {
Elm_Object_Item *it = event_info; Elm_Object_Item *it = event_info;
Edi_Editor_Suggest_Item *suggest_it; Edi_Language_Suggest_Item *suggest_it;
Edi_Editor *editor = (Edi_Editor *)data; Edi_Editor *editor = (Edi_Editor *)data;
suggest_it = elm_object_item_data_get(it); suggest_it = elm_object_item_data_get(it);
@ -522,20 +522,20 @@ _smart_cb_key_down(void *data EINA_UNUSED, Evas *e EINA_UNUSED,
{ {
edi_mainview_goto_popup_show(); edi_mainview_goto_popup_show();
} }
else if (edi_editor_suggest_provider_has(editor) && !strcmp(ev->key, "space")) else if (edi_language_provider_has(editor) && !strcmp(ev->key, "space"))
{ {
_suggest_list_set(editor); _suggest_list_set(editor);
} }
} }
else if ((!alt) && (ctrl) && (shift)) else if ((!alt) && (ctrl) && (shift))
{ {
if (edi_editor_suggest_provider_has(editor) && !strcmp(ev->key, "space")) if (edi_language_provider_has(editor) && !strcmp(ev->key, "space"))
{ {
edi_editor_doc_open(editor); edi_editor_doc_open(editor);
} }
} }
if (edi_editor_suggest_provider_has(editor)) if (edi_language_provider_has(editor))
{ {
if ((!alt) && (!ctrl)) if ((!alt) && (!ctrl))
_suggest_popup_key_down_cb(editor, ev->key, ev->string); _suggest_popup_key_down_cb(editor, ev->key, ev->string);
@ -926,7 +926,7 @@ _mouse_up_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
evas_object_hide(editor->suggest_bg); evas_object_hide(editor->suggest_bg);
ctrl = evas_key_modifier_is_set(event->modifiers, "Control"); ctrl = evas_key_modifier_is_set(event->modifiers, "Control");
if (event->button != 3 || !ctrl || !edi_editor_suggest_provider_has(editor)) if (event->button != 3 || !ctrl || !edi_language_provider_has(editor))
return; return;
elm_code_widget_position_at_coordinates_get(editor->entry, event->canvas.x, event->canvas.y, &row, &col); elm_code_widget_position_at_coordinates_get(editor->entry, event->canvas.x, event->canvas.y, &row, &col);
@ -993,8 +993,8 @@ _editor_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *o, void *event_info
ecore_event_handler_del(ev_handler); ecore_event_handler_del(ev_handler);
if (edi_editor_suggest_provider_has(editor)) if (edi_language_provider_has(editor))
edi_editor_suggest_provider_get(editor)->del(editor); edi_language_provider_get(editor)->del(editor);
} }
Evas_Object * Evas_Object *
@ -1078,9 +1078,9 @@ edi_editor_add(Evas_Object *parent, Edi_Mainview_Item *item)
ev_handler = ecore_event_handler_add(EDI_EVENT_CONFIG_CHANGED, _edi_editor_config_changed, widget); ev_handler = ecore_event_handler_add(EDI_EVENT_CONFIG_CHANGED, _edi_editor_config_changed, widget);
evas_object_event_callback_add(vbox, EVAS_CALLBACK_DEL, _editor_del_cb, ev_handler); evas_object_event_callback_add(vbox, EVAS_CALLBACK_DEL, _editor_del_cb, ev_handler);
if (edi_editor_suggest_provider_has(editor)) if (edi_language_provider_has(editor))
{ {
edi_editor_suggest_provider_get(editor)->add(editor); edi_language_provider_get(editor)->add(editor);
_suggest_popup_setup(editor); _suggest_popup_setup(editor);
} }

View File

@ -7,12 +7,12 @@
#include "edi_editor.h" #include "edi_editor.h"
#include "editor/edi_editor_suggest_provider.h" #include "language/edi_language_provider.h"
#include "edi_private.h" #include "edi_private.h"
static void static void
_edi_doc_font_set(Edi_Editor_Suggest_Document *doc, const char *font, int font_size) _edi_doc_font_set(Edi_Language_Document *doc, const char *font, int font_size)
{ {
char *format = "<align=left><font=\'%s\'><font_size=%d>"; char *format = "<align=left><font=\'%s\'><font_size=%d>";
char *font_head; char *font_head;
@ -57,7 +57,7 @@ _edi_doc_font_set(Edi_Editor_Suggest_Document *doc, const char *font, int font_s
} }
static void static void
_edi_doc_tag_name_set(Edi_Editor_Suggest_Document *doc) _edi_doc_tag_name_set(Edi_Language_Document *doc)
{ {
if (strlen(eina_strbuf_string_get(doc->param)) > 0) if (strlen(eina_strbuf_string_get(doc->param)) > 0)
eina_strbuf_prepend(doc->param, "<b><br><br> Parameters<br></b>"); eina_strbuf_prepend(doc->param, "<b><br><br> Parameters<br></b>");
@ -97,15 +97,15 @@ static void
_edi_doc_popup_cb_del(void *data, Evas *e EINA_UNUSED, _edi_doc_popup_cb_del(void *data, Evas *e EINA_UNUSED,
Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{ {
Edi_Editor_Suggest_Document *doc = data; Edi_Language_Document *doc = data;
edi_editor_suggest_doc_free(doc); edi_language_doc_free(doc);
} }
void void
edi_editor_doc_open(Edi_Editor *editor) edi_editor_doc_open(Edi_Editor *editor)
{ {
Edi_Editor_Suggest_Document *doc = NULL; Edi_Language_Document *doc = NULL;
const char *detail, *param, *ret, *see; const char *detail, *param, *ret, *see;
char *display; char *display;
int displen; int displen;
@ -113,12 +113,12 @@ edi_editor_doc_open(Edi_Editor *editor)
const char *font; const char *font;
int font_size; int font_size;
if (edi_editor_suggest_provider_has(editor)) if (edi_language_provider_has(editor))
{ {
unsigned int row, col; unsigned int row, col;
elm_code_widget_cursor_position_get(editor->entry, &row, &col); elm_code_widget_cursor_position_get(editor->entry, &row, &col);
doc = edi_editor_suggest_provider_get(editor)->lookup_doc(editor, row, col); doc = edi_language_provider_get(editor)->lookup_doc(editor, row, col);
} }
//Popup //Popup

View File

@ -2,27 +2,27 @@
# include "config.h" # include "config.h"
#endif #endif
#include "edi_editor_suggest_provider.h" #include "edi_language_provider.h"
#include "edi_config.h" #include "edi_config.h"
#include "edi_private.h" #include "edi_private.h"
#include "edi_editor_suggest_provider_c.c" #include "edi_language_provider_c.c"
static Edi_Editor_Suggest_Provider _edi_editor_suggest_provider_registry[] = static Edi_Language_Provider _edi_language_provider_registry[] =
{ {
{ {
"c", _edi_editor_sugggest_c_add, _edi_editor_sugget_c_del, "c", _edi_language_c_add, _edi_language_c_del,
_edi_editor_suggest_c_lookup, _edi_editor_suggest_c_lookup_doc _edi_language_c_lookup, _edi_language_c_lookup_doc
}, },
{NULL, NULL, NULL, NULL, NULL} {NULL, NULL, NULL, NULL, NULL}
}; };
Edi_Editor_Suggest_Provider *edi_editor_suggest_provider_get(Edi_Editor *editor) Edi_Language_Provider *edi_language_provider_get(Edi_Editor *editor)
{ {
Edi_Editor_Suggest_Provider *provider; Edi_Language_Provider *provider;
const char *mime = editor->mimetype; const char *mime = editor->mimetype;
const char *id = NULL; const char *id = NULL;
@ -36,7 +36,7 @@ Edi_Editor_Suggest_Provider *edi_editor_suggest_provider_get(Edi_Editor *editor)
if (!id) if (!id)
return NULL; return NULL;
provider = _edi_editor_suggest_provider_registry; provider = _edi_language_provider_registry;
while (provider != NULL && provider->id != NULL) while (provider != NULL && provider->id != NULL)
{ {
if (!strncmp(id, provider->id, strlen(provider->id))) if (!strncmp(id, provider->id, strlen(provider->id)))
@ -49,13 +49,13 @@ Edi_Editor_Suggest_Provider *edi_editor_suggest_provider_get(Edi_Editor *editor)
} }
Eina_Bool Eina_Bool
edi_editor_suggest_provider_has(Edi_Editor *editor) edi_language_provider_has(Edi_Editor *editor)
{ {
return !!edi_editor_suggest_provider_get(editor); return !!edi_language_provider_get(editor);
} }
void void
edi_editor_suggest_item_free(Edi_Editor_Suggest_Item *item) edi_language_suggest_item_free(Edi_Language_Suggest_Item *item)
{ {
free((char *)item->summary); free((char *)item->summary);
free((char *)item->detail); free((char *)item->detail);
@ -64,7 +64,7 @@ edi_editor_suggest_item_free(Edi_Editor_Suggest_Item *item)
} }
void void
edi_editor_suggest_doc_free(Edi_Editor_Suggest_Document *doc) edi_language_doc_free(Edi_Language_Document *doc)
{ {
if (!doc) return; if (!doc) return;

View File

@ -17,35 +17,35 @@ extern "C" {
* @typedef Edi_Editor_Suggest_Item * @typedef Edi_Editor_Suggest_Item
* A handle for passig a suggest item to the ui and back * A handle for passig a suggest item to the ui and back
*/ */
typedef struct _Edi_Editor_Suggest_Item typedef struct _Edi_Language_Suggest_Item
{ {
const char *summary; const char *summary;
const char *detail; const char *detail;
} Edi_Editor_Suggest_Item; } Edi_Language_Suggest_Item;
typedef struct _Edi_Editor_Suggest_Document typedef struct _Edi_Language_Document
{ {
Eina_Strbuf *title; Eina_Strbuf *title;
Eina_Strbuf *detail; Eina_Strbuf *detail;
Eina_Strbuf *param; Eina_Strbuf *param;
Eina_Strbuf *ret; Eina_Strbuf *ret;
Eina_Strbuf *see; Eina_Strbuf *see;
} Edi_Editor_Suggest_Document; } Edi_Language_Document;
/** /**
* @struct Edi_Editor_Suggest_Provider * @struct Edi_Editor_Suggest_Provider
* A description of the requirements for a suggestion provider. * A description of the requirements for a suggestion provider.
* This handles the set up and teardown of a provider as well as the lookup and * This handles the set up and teardown of a provider as well as the lookup and
* description lookup functions * description lookup functions
*/ */
typedef struct _Edi_Editor_Suggest_Provider typedef struct _Edi_Language_Provider
{ {
const char *id; const char *id;
void (*add)(Edi_Editor *editor); void (*add)(Edi_Editor *editor);
void (*del)(Edi_Editor *editor); void (*del)(Edi_Editor *editor);
Eina_List *(*lookup)(Edi_Editor *editor, unsigned int row, unsigned int col); Eina_List *(*lookup)(Edi_Editor *editor, unsigned int row, unsigned int col);
Edi_Editor_Suggest_Document *(*lookup_doc)(Edi_Editor *editor, unsigned int row, unsigned int col); Edi_Language_Document *(*lookup_doc)(Edi_Editor *editor, unsigned int row, unsigned int col);
} Edi_Editor_Suggest_Provider; } Edi_Language_Provider;
/** /**
* @brief Lookup information in suggest provider registry. * @brief Lookup information in suggest provider registry.
@ -61,7 +61,7 @@ typedef struct _Edi_Editor_Suggest_Provider
* *
* @ingroup Lookup * @ingroup Lookup
*/ */
Edi_Editor_Suggest_Provider *edi_editor_suggest_provider_get(Edi_Editor *editor); Edi_Language_Provider *edi_language_provider_get(Edi_Editor *editor);
/** /**
* Query whether a suggest provider is available for the spcified editor session. * Query whether a suggest provider is available for the spcified editor session.
@ -70,7 +70,7 @@ Edi_Editor_Suggest_Provider *edi_editor_suggest_provider_get(Edi_Editor *editor)
* *
* @ingroup Lookup * @ingroup Lookup
*/ */
Eina_Bool edi_editor_suggest_provider_has(Edi_Editor *editor); Eina_Bool edi_language_provider_has(Edi_Editor *editor);
/** /**
* Free a suggest item. * Free a suggest item.
@ -79,7 +79,7 @@ Eina_Bool edi_editor_suggest_provider_has(Edi_Editor *editor);
* *
* @ingroup Lookup * @ingroup Lookup
*/ */
void edi_editor_suggest_item_free(Edi_Editor_Suggest_Item *item); void edi_language_suggest_item_free(Edi_Language_Suggest_Item *item);
/** /**
* Free a suggest document. * Free a suggest document.
@ -88,7 +88,7 @@ void edi_editor_suggest_item_free(Edi_Editor_Suggest_Item *item);
* *
* @ingroup Lookup * @ingroup Lookup
*/ */
void edi_editor_suggest_doc_free(Edi_Editor_Suggest_Document *doc); void edi_language_doc_free(Edi_Language_Document *doc);
/** /**
* @} * @}

View File

@ -9,7 +9,7 @@
#include <Eina.h> #include <Eina.h>
#include <Elementary.h> #include <Elementary.h>
#include "edi_editor_suggest_provider.h" #include "edi_language_provider.h"
#include "edi_config.h" #include "edi_config.h"
@ -49,7 +49,7 @@ _clang_autosuggest_dispose(Edi_Editor *editor)
#endif #endif
void void
_edi_editor_sugggest_c_add(Edi_Editor *editor) _edi_language_c_add(Edi_Editor *editor)
{ {
#if HAVE_LIBCLANG #if HAVE_LIBCLANG
_clang_autosuggest_setup(editor); _clang_autosuggest_setup(editor);
@ -57,7 +57,7 @@ _edi_editor_sugggest_c_add(Edi_Editor *editor)
} }
void void
_edi_editor_sugget_c_del(Edi_Editor *editor) _edi_language_c_del(Edi_Editor *editor)
{ {
#if HAVE_LIBCLANG #if HAVE_LIBCLANG
_clang_autosuggest_dispose(editor); _clang_autosuggest_dispose(editor);
@ -66,7 +66,7 @@ _edi_editor_sugget_c_del(Edi_Editor *editor)
#if HAVE_LIBCLANG #if HAVE_LIBCLANG
char * char *
_edi_editor_suggest_c_detail_get(Edi_Editor *editor, const char *term_str, _edi_suggest_c_detail_get(Edi_Editor *editor, const char *term_str,
const char *ret_str, const char *param_str) const char *ret_str, const char *param_str)
{ {
char *format, *display; char *format, *display;
@ -91,7 +91,7 @@ _edi_editor_suggest_c_detail_get(Edi_Editor *editor, const char *term_str,
#endif #endif
Eina_List * Eina_List *
_edi_editor_suggest_c_lookup(Edi_Editor *editor, unsigned int row, unsigned int col) _edi_language_c_lookup(Edi_Editor *editor, unsigned int row, unsigned int col)
{ {
Eina_List *list = NULL; Eina_List *list = NULL;
@ -125,10 +125,10 @@ _edi_editor_suggest_c_lookup(Edi_Editor *editor, unsigned int row, unsigned int
const CXCompletionString str = res->Results[i].CompletionString; const CXCompletionString str = res->Results[i].CompletionString;
const char *name = NULL, *ret = NULL; const char *name = NULL, *ret = NULL;
char *param = NULL; char *param = NULL;
Edi_Editor_Suggest_Item *suggest_it; Edi_Language_Suggest_Item *suggest_it;
Eina_Strbuf *buf = NULL; Eina_Strbuf *buf = NULL;
suggest_it = calloc(1, sizeof(Edi_Editor_Suggest_Item)); suggest_it = calloc(1, sizeof(Edi_Language_Suggest_Item));
for (unsigned int j = 0; j < clang_getNumCompletionChunks(str); j++) for (unsigned int j = 0; j < clang_getNumCompletionChunks(str); j++)
{ {
@ -168,7 +168,7 @@ _edi_editor_suggest_c_lookup(Edi_Editor *editor, unsigned int row, unsigned int
if (name) if (name)
suggest_it->summary = strdup(name); suggest_it->summary = strdup(name);
suggest_it->detail = _edi_editor_suggest_c_detail_get(editor, name, ret?ret:"", param?param:""); suggest_it->detail = _edi_suggest_c_detail_get(editor, name, ret?ret:"", param?param:"");
if (param) if (param)
free(param); free(param);
@ -182,7 +182,7 @@ _edi_editor_suggest_c_lookup(Edi_Editor *editor, unsigned int row, unsigned int
#if HAVE_LIBCLANG #if HAVE_LIBCLANG
static void static void
_edi_doc_init(Edi_Editor_Suggest_Document *doc) _edi_doc_init(Edi_Language_Document *doc)
{ {
doc->title = eina_strbuf_new(); doc->title = eina_strbuf_new();
doc->detail = eina_strbuf_new(); doc->detail = eina_strbuf_new();
@ -264,7 +264,7 @@ _edi_doc_title_get(CXCursor cursor, Eina_Strbuf *strbuf)
} }
static void static void
_edi_doc_dump(Edi_Editor_Suggest_Document *doc, CXComment comment, Eina_Strbuf *strbuf) _edi_doc_dump(Edi_Language_Document *doc, CXComment comment, Eina_Strbuf *strbuf)
{ {
const char *str ,*tag; const char *str ,*tag;
enum CXCommentKind kind = clang_Comment_getKind(comment); enum CXCommentKind kind = clang_Comment_getKind(comment);
@ -387,10 +387,10 @@ _edi_doc_cursor_get(Edi_Editor *editor, CXIndex idx, CXTranslationUnit unit,
} }
#endif #endif
static Edi_Editor_Suggest_Document * static Edi_Language_Document *
_edi_editor_suggest_c_lookup_doc(Edi_Editor *editor, unsigned int row, unsigned int col) _edi_language_c_lookup_doc(Edi_Editor *editor, unsigned int row, unsigned int col)
{ {
Edi_Editor_Suggest_Document *doc = NULL; Edi_Language_Document *doc = NULL;
#if HAVE_LIBCLANG #if HAVE_LIBCLANG
CXIndex idx = NULL; CXIndex idx = NULL;
CXTranslationUnit unit = NULL; CXTranslationUnit unit = NULL;
@ -407,7 +407,7 @@ _edi_editor_suggest_c_lookup_doc(Edi_Editor *editor, unsigned int row, unsigned
return NULL; return NULL;
} }
doc = malloc(sizeof(Edi_Editor_Suggest_Document)); doc = malloc(sizeof(Edi_Language_Document));
_edi_doc_init(doc); _edi_doc_init(doc);
_edi_doc_dump(doc, comment, doc->detail); _edi_doc_dump(doc, comment, doc->detail);

View File

@ -10,8 +10,8 @@ clang_include = '$(CLANG_INCLUDE)'
edi_suite_SOURCES = \ edi_suite_SOURCES = \
edi_test_path.c \ edi_test_path.c \
edi_test_content_provider.c \ edi_test_content_provider.c \
edi_test_editor_suggest_provider.c \ edi_test_language_provider.c \
edi_test_editor_suggest_provider_c.c \ edi_test_language_provider_c.c \
edi_suite.c edi_suite.c
edi_suite_CPPFLAGS = -I$(top_builddir)/src/lib/ -I$(top_builddir)/src/bin/ \ edi_suite_CPPFLAGS = -I$(top_builddir)/src/lib/ -I$(top_builddir)/src/bin/ \

View File

@ -16,8 +16,8 @@ static const struct {
{ "basic", edi_test_basic }, { "basic", edi_test_basic },
{ "path", edi_test_path }, { "path", edi_test_path },
{ "content_provider", edi_test_content_provider }, { "content_provider", edi_test_content_provider },
{ "editor_suggest_provider", edi_test_editor_suggest_provider }, { "language_provider", edi_test_language_provider },
{ "editor_suggest_provider_c", edi_test_editor_suggest_provider_c } { "language_provider_c", edi_test_language_provider_c }
}; };
START_TEST(edi_initialization) START_TEST(edi_initialization)

View File

@ -9,7 +9,7 @@ void edi_test_basic(TCase *tc);
void edi_test_console(TCase *tc); void edi_test_console(TCase *tc);
void edi_test_path(TCase *tc); void edi_test_path(TCase *tc);
void edi_test_content_provider(TCase *tc); void edi_test_content_provider(TCase *tc);
void edi_test_editor_suggest_provider(TCase *tc); void edi_test_language_provider(TCase *tc);
void edi_test_editor_suggest_provider_c(TCase *tc); void edi_test_language_provider_c(TCase *tc);
#endif /* _EDI_SUITE_H */ #endif /* _EDI_SUITE_H */

View File

@ -1,26 +0,0 @@
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include "editor/edi_editor_suggest_provider.c"
#include "edi_suite.h"
START_TEST (edi_test_editor_suggest_provider_lookup)
{
Edi_Editor editor;
Edi_Editor_Suggest_Provider *provider;
editor.mimetype = "text/x-csrc";
provider = edi_editor_suggest_provider_get(&editor);
ck_assert(provider);
ck_assert_str_eq(provider->id, "c");
}
END_TEST
void edi_test_editor_suggest_provider(TCase *tc)
{
tcase_add_test(tc, edi_test_editor_suggest_provider_lookup);
}

View File

@ -0,0 +1,26 @@
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include "language/edi_language_provider.c"
#include "edi_suite.h"
START_TEST (edi_test_language_provider_lookup)
{
Edi_Editor editor;
Edi_Language_Provider *provider;
editor.mimetype = "text/x-csrc";
provider = edi_language_provider_get(&editor);
ck_assert(provider);
ck_assert_str_eq(provider->id, "c");
}
END_TEST
void edi_test_language_provider(TCase *tc)
{
tcase_add_test(tc, edi_test_language_provider_lookup);
}

View File

@ -5,7 +5,7 @@
#include <Elementary.h> #include <Elementary.h>
#include "../bin/edi_private.h" #include "../bin/edi_private.h"
#include "editor/edi_editor_suggest_provider.h" #include "language/edi_language_provider.h"
#include "edi_suite.h" #include "edi_suite.h"
@ -31,7 +31,7 @@ _setup(Edi_Editor *editor, Evas_Object *win)
static Eina_List * static Eina_List *
_filtered_list_get(Eina_List *list, const char *word) _filtered_list_get(Eina_List *list, const char *word)
{ {
Edi_Editor_Suggest_Item *suggest_it; Edi_Language_Suggest_Item *suggest_it;
Eina_List *l, *ret = NULL; Eina_List *l, *ret = NULL;
EINA_LIST_FOREACH(list, l, suggest_it) EINA_LIST_FOREACH(list, l, suggest_it)
@ -43,26 +43,26 @@ _filtered_list_get(Eina_List *list, const char *word)
return ret; return ret;
} }
START_TEST (edi_test_editor_suggest_provider_c_lookup) START_TEST (edi_test_language_provider_c_lookup)
{ {
Elm_Code *code; Elm_Code *code;
Evas_Object *win; Evas_Object *win;
Edi_Editor editor; Edi_Editor editor;
Edi_Editor_Suggest_Provider *provider; Edi_Language_Provider *provider;
Edi_Editor_Suggest_Item *item; Edi_Language_Suggest_Item *item;
Eina_List *list; Eina_List *list;
elm_init(1, NULL); elm_init(1, NULL);
win = elm_win_add(NULL, "entry", ELM_WIN_BASIC); win = elm_win_add(NULL, "entry", ELM_WIN_BASIC);
code = _setup(&editor, win); code = _setup(&editor, win);
provider = edi_editor_suggest_provider_get(&editor); provider = edi_language_provider_get(&editor);
provider->add(&editor); provider->add(&editor);
list = provider->lookup(&editor, 3, 12); list = provider->lookup(&editor, 3, 12);
ck_assert_int_eq(eina_list_count(_filtered_list_get(list, "_xyzabc_")), 1); ck_assert_int_eq(eina_list_count(_filtered_list_get(list, "_xyzabc_")), 1);
EINA_LIST_FREE(list, item) EINA_LIST_FREE(list, item)
edi_editor_suggest_item_free(item); edi_language_suggest_item_free(item);
provider->del(&editor); provider->del(&editor);
elm_code_free(code); elm_code_free(code);
@ -70,27 +70,27 @@ START_TEST (edi_test_editor_suggest_provider_c_lookup)
} }
END_TEST END_TEST
START_TEST (edi_test_editor_suggest_provider_c_summary) START_TEST (edi_test_language_provider_c_summary)
{ {
Elm_Code *code; Elm_Code *code;
Evas_Object *win; Evas_Object *win;
Edi_Editor editor; Edi_Editor editor;
Edi_Editor_Suggest_Provider *provider; Edi_Language_Provider *provider;
Edi_Editor_Suggest_Item *item; Edi_Language_Suggest_Item *item;
Eina_List *list; Eina_List *list;
elm_init(1, NULL); elm_init(1, NULL);
win = elm_win_add(NULL, "entry", ELM_WIN_BASIC); win = elm_win_add(NULL, "entry", ELM_WIN_BASIC);
code = _setup(&editor, win); code = _setup(&editor, win);
provider = edi_editor_suggest_provider_get(&editor); provider = edi_language_provider_get(&editor);
provider->add(&editor); provider->add(&editor);
list = provider->lookup(&editor, 3, 12); list = provider->lookup(&editor, 3, 12);
item = eina_list_nth(_filtered_list_get(list, "_xyzabc_"), 0); item = eina_list_nth(_filtered_list_get(list, "_xyzabc_"), 0);
ck_assert_str_eq(item->summary, "_xyzabc_test"); ck_assert_str_eq(item->summary, "_xyzabc_test");
EINA_LIST_FREE(list, item) EINA_LIST_FREE(list, item)
edi_editor_suggest_item_free(item); edi_language_suggest_item_free(item);
provider->del(&editor); provider->del(&editor);
elm_code_free(code); elm_code_free(code);
@ -98,11 +98,11 @@ START_TEST (edi_test_editor_suggest_provider_c_summary)
} }
END_TEST END_TEST
void edi_test_editor_suggest_provider_c(TCase *tc) void edi_test_language_provider_c(TCase *tc)
{ {
#if HAVE_LIBCLANG #if HAVE_LIBCLANG
tcase_add_test(tc, edi_test_editor_suggest_provider_c_lookup); tcase_add_test(tc, edi_test_language_provider_c_lookup);
tcase_add_test(tc, edi_test_editor_suggest_provider_c_summary); tcase_add_test(tc, edi_test_language_provider_c_summary);
#endif #endif
} }