forked from enlightenment/edi
suggest: Move to a language provider
This means we can add great new stuff in a (nearly) pluggable way
This commit is contained in:
parent
e6feb19a30
commit
2a82fedcb1
|
@ -22,8 +22,8 @@ AM_CPPFLAGS = \
|
|||
|
||||
noinst_HEADERS = \
|
||||
edi_config.h \
|
||||
language/edi_language_provider.h \
|
||||
editor/edi_editor.h \
|
||||
editor/edi_editor_suggest_provider.h \
|
||||
edi_content_provider.h \
|
||||
screens/edi_screens.h \
|
||||
edi_filepanel.h \
|
||||
|
@ -34,8 +34,8 @@ mainview/edi_mainview.h
|
|||
|
||||
edi_SOURCES = \
|
||||
edi_config.c \
|
||||
language/edi_language_provider.c \
|
||||
editor/edi_editor_search.c \
|
||||
editor/edi_editor_suggest_provider.c \
|
||||
editor/edi_editor.c \
|
||||
editor/edi_editor_documentation.c \
|
||||
edi_content_provider.c \
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
#include "mainview/edi_mainview.h"
|
||||
#include "edi_config.h"
|
||||
|
||||
#include "editor/edi_editor_suggest_provider.h"
|
||||
#include "language/edi_language_provider.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_Mainview_Item *item;
|
||||
Edi_Editor_Suggest_Item *suggest_it = data;
|
||||
Edi_Language_Suggest_Item *suggest_it = data;
|
||||
char *format, *display;
|
||||
const char *font;
|
||||
int font_size, displen;
|
||||
|
@ -139,7 +139,7 @@ _suggest_list_content_get(void *data, Evas_Object *obj, const char *part)
|
|||
static void
|
||||
_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;
|
||||
|
||||
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
|
||||
_suggest_list_update(Edi_Editor *editor, char *word)
|
||||
{
|
||||
Edi_Editor_Suggest_Item *suggest_it;
|
||||
Edi_Language_Suggest_Item *suggest_it;
|
||||
Eina_List *list, *l;
|
||||
Elm_Genlist_Item_Class *ic;
|
||||
Elm_Object_Item *item;
|
||||
|
@ -200,10 +200,10 @@ _suggest_list_set(Edi_Editor *editor)
|
|||
"suggest_list");
|
||||
if (list)
|
||||
{
|
||||
Edi_Editor_Suggest_Item *suggest_it;
|
||||
Edi_Language_Suggest_Item *suggest_it;
|
||||
|
||||
EINA_LIST_FREE(list, suggest_it)
|
||||
edi_editor_suggest_item_free(suggest_it);
|
||||
edi_language_suggest_item_free(suggest_it);
|
||||
|
||||
list = NULL;
|
||||
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);
|
||||
|
||||
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);
|
||||
_suggest_list_update(editor, curword);
|
||||
|
@ -254,10 +254,10 @@ _suggest_bg_cb_hide(void *data, Evas *e EINA_UNUSED,
|
|||
"suggest_list");
|
||||
if (list)
|
||||
{
|
||||
Edi_Editor_Suggest_Item *suggest_it;
|
||||
Edi_Language_Suggest_Item *suggest_it;
|
||||
|
||||
EINA_LIST_FREE(list, suggest_it)
|
||||
edi_editor_suggest_item_free(suggest_it);
|
||||
edi_language_suggest_item_free(suggest_it);
|
||||
|
||||
list = NULL;
|
||||
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)
|
||||
{
|
||||
Edi_Editor *editor = (Edi_Editor *)data;
|
||||
Edi_Editor_Suggest_Item *suggest_it;
|
||||
Edi_Language_Suggest_Item *suggest_it;
|
||||
Elm_Object_Item *it;
|
||||
Evas_Object *genlist = obj;
|
||||
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)
|
||||
{
|
||||
Elm_Object_Item *it = event_info;
|
||||
Edi_Editor_Suggest_Item *suggest_it;
|
||||
Edi_Language_Suggest_Item *suggest_it;
|
||||
Edi_Editor *editor = (Edi_Editor *)data;
|
||||
|
||||
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();
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
if (edi_editor_suggest_provider_has(editor))
|
||||
if (edi_language_provider_has(editor))
|
||||
{
|
||||
if ((!alt) && (!ctrl))
|
||||
_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);
|
||||
|
||||
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;
|
||||
|
||||
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);
|
||||
|
||||
if (edi_editor_suggest_provider_has(editor))
|
||||
edi_editor_suggest_provider_get(editor)->del(editor);
|
||||
if (edi_language_provider_has(editor))
|
||||
edi_language_provider_get(editor)->del(editor);
|
||||
}
|
||||
|
||||
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);
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
|
@ -7,12 +7,12 @@
|
|||
|
||||
#include "edi_editor.h"
|
||||
|
||||
#include "editor/edi_editor_suggest_provider.h"
|
||||
#include "language/edi_language_provider.h"
|
||||
|
||||
#include "edi_private.h"
|
||||
|
||||
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 *font_head;
|
||||
|
@ -57,7 +57,7 @@ _edi_doc_font_set(Edi_Editor_Suggest_Document *doc, const char *font, int font_s
|
|||
}
|
||||
|
||||
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)
|
||||
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,
|
||||
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
|
||||
edi_editor_doc_open(Edi_Editor *editor)
|
||||
{
|
||||
Edi_Editor_Suggest_Document *doc = NULL;
|
||||
Edi_Language_Document *doc = NULL;
|
||||
const char *detail, *param, *ret, *see;
|
||||
char *display;
|
||||
int displen;
|
||||
|
@ -113,12 +113,12 @@ edi_editor_doc_open(Edi_Editor *editor)
|
|||
const char *font;
|
||||
int font_size;
|
||||
|
||||
if (edi_editor_suggest_provider_has(editor))
|
||||
if (edi_language_provider_has(editor))
|
||||
{
|
||||
unsigned int 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
|
||||
|
|
|
@ -2,27 +2,27 @@
|
|||
# include "config.h"
|
||||
#endif
|
||||
|
||||
#include "edi_editor_suggest_provider.h"
|
||||
#include "edi_language_provider.h"
|
||||
|
||||
#include "edi_config.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,
|
||||
_edi_editor_suggest_c_lookup, _edi_editor_suggest_c_lookup_doc
|
||||
"c", _edi_language_c_add, _edi_language_c_del,
|
||||
_edi_language_c_lookup, _edi_language_c_lookup_doc
|
||||
},
|
||||
|
||||
{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 *id = NULL;
|
||||
|
||||
|
@ -36,7 +36,7 @@ Edi_Editor_Suggest_Provider *edi_editor_suggest_provider_get(Edi_Editor *editor)
|
|||
if (!id)
|
||||
return NULL;
|
||||
|
||||
provider = _edi_editor_suggest_provider_registry;
|
||||
provider = _edi_language_provider_registry;
|
||||
while (provider != NULL && provider->id != NULL)
|
||||
{
|
||||
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
|
||||
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
|
||||
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->detail);
|
||||
|
@ -64,7 +64,7 @@ edi_editor_suggest_item_free(Edi_Editor_Suggest_Item *item)
|
|||
}
|
||||
|
||||
void
|
||||
edi_editor_suggest_doc_free(Edi_Editor_Suggest_Document *doc)
|
||||
edi_language_doc_free(Edi_Language_Document *doc)
|
||||
{
|
||||
if (!doc) return;
|
||||
|
|
@ -17,35 +17,35 @@ extern "C" {
|
|||
* @typedef Edi_Editor_Suggest_Item
|
||||
* 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 *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 *detail;
|
||||
Eina_Strbuf *param;
|
||||
Eina_Strbuf *ret;
|
||||
Eina_Strbuf *see;
|
||||
} Edi_Editor_Suggest_Document;
|
||||
} Edi_Language_Document;
|
||||
/**
|
||||
* @struct Edi_Editor_Suggest_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
|
||||
* description lookup functions
|
||||
*/
|
||||
typedef struct _Edi_Editor_Suggest_Provider
|
||||
typedef struct _Edi_Language_Provider
|
||||
{
|
||||
const char *id;
|
||||
|
||||
void (*add)(Edi_Editor *editor);
|
||||
void (*del)(Edi_Editor *editor);
|
||||
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_Editor_Suggest_Provider;
|
||||
Edi_Language_Document *(*lookup_doc)(Edi_Editor *editor, unsigned int row, unsigned int col);
|
||||
} Edi_Language_Provider;
|
||||
|
||||
/**
|
||||
* @brief Lookup information in suggest provider registry.
|
||||
|
@ -61,7 +61,7 @@ typedef struct _Edi_Editor_Suggest_Provider
|
|||
*
|
||||
* @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.
|
||||
|
@ -70,7 +70,7 @@ Edi_Editor_Suggest_Provider *edi_editor_suggest_provider_get(Edi_Editor *editor)
|
|||
*
|
||||
* @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.
|
||||
|
@ -79,7 +79,7 @@ Eina_Bool edi_editor_suggest_provider_has(Edi_Editor *editor);
|
|||
*
|
||||
* @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.
|
||||
|
@ -88,7 +88,7 @@ void edi_editor_suggest_item_free(Edi_Editor_Suggest_Item *item);
|
|||
*
|
||||
* @ingroup Lookup
|
||||
*/
|
||||
void edi_editor_suggest_doc_free(Edi_Editor_Suggest_Document *doc);
|
||||
void edi_language_doc_free(Edi_Language_Document *doc);
|
||||
|
||||
/**
|
||||
* @}
|
|
@ -9,7 +9,7 @@
|
|||
#include <Eina.h>
|
||||
#include <Elementary.h>
|
||||
|
||||
#include "edi_editor_suggest_provider.h"
|
||||
#include "edi_language_provider.h"
|
||||
|
||||
#include "edi_config.h"
|
||||
|
||||
|
@ -49,7 +49,7 @@ _clang_autosuggest_dispose(Edi_Editor *editor)
|
|||
#endif
|
||||
|
||||
void
|
||||
_edi_editor_sugggest_c_add(Edi_Editor *editor)
|
||||
_edi_language_c_add(Edi_Editor *editor)
|
||||
{
|
||||
#if HAVE_LIBCLANG
|
||||
_clang_autosuggest_setup(editor);
|
||||
|
@ -57,7 +57,7 @@ _edi_editor_sugggest_c_add(Edi_Editor *editor)
|
|||
}
|
||||
|
||||
void
|
||||
_edi_editor_sugget_c_del(Edi_Editor *editor)
|
||||
_edi_language_c_del(Edi_Editor *editor)
|
||||
{
|
||||
#if HAVE_LIBCLANG
|
||||
_clang_autosuggest_dispose(editor);
|
||||
|
@ -66,7 +66,7 @@ _edi_editor_sugget_c_del(Edi_Editor *editor)
|
|||
|
||||
#if HAVE_LIBCLANG
|
||||
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)
|
||||
{
|
||||
char *format, *display;
|
||||
|
@ -91,7 +91,7 @@ _edi_editor_suggest_c_detail_get(Edi_Editor *editor, const char *term_str,
|
|||
#endif
|
||||
|
||||
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;
|
||||
|
||||
|
@ -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 char *name = NULL, *ret = NULL;
|
||||
char *param = NULL;
|
||||
Edi_Editor_Suggest_Item *suggest_it;
|
||||
Edi_Language_Suggest_Item *suggest_it;
|
||||
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++)
|
||||
{
|
||||
|
@ -168,7 +168,7 @@ _edi_editor_suggest_c_lookup(Edi_Editor *editor, unsigned int row, unsigned int
|
|||
|
||||
if (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)
|
||||
free(param);
|
||||
|
||||
|
@ -182,7 +182,7 @@ _edi_editor_suggest_c_lookup(Edi_Editor *editor, unsigned int row, unsigned int
|
|||
|
||||
#if HAVE_LIBCLANG
|
||||
static void
|
||||
_edi_doc_init(Edi_Editor_Suggest_Document *doc)
|
||||
_edi_doc_init(Edi_Language_Document *doc)
|
||||
{
|
||||
doc->title = eina_strbuf_new();
|
||||
doc->detail = eina_strbuf_new();
|
||||
|
@ -264,7 +264,7 @@ _edi_doc_title_get(CXCursor cursor, Eina_Strbuf *strbuf)
|
|||
}
|
||||
|
||||
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;
|
||||
enum CXCommentKind kind = clang_Comment_getKind(comment);
|
||||
|
@ -387,10 +387,10 @@ _edi_doc_cursor_get(Edi_Editor *editor, CXIndex idx, CXTranslationUnit unit,
|
|||
}
|
||||
#endif
|
||||
|
||||
static Edi_Editor_Suggest_Document *
|
||||
_edi_editor_suggest_c_lookup_doc(Edi_Editor *editor, unsigned int row, unsigned int col)
|
||||
static Edi_Language_Document *
|
||||
_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
|
||||
CXIndex idx = NULL;
|
||||
CXTranslationUnit unit = NULL;
|
||||
|
@ -407,7 +407,7 @@ _edi_editor_suggest_c_lookup_doc(Edi_Editor *editor, unsigned int row, unsigned
|
|||
return NULL;
|
||||
}
|
||||
|
||||
doc = malloc(sizeof(Edi_Editor_Suggest_Document));
|
||||
doc = malloc(sizeof(Edi_Language_Document));
|
||||
|
||||
_edi_doc_init(doc);
|
||||
_edi_doc_dump(doc, comment, doc->detail);
|
|
@ -10,8 +10,8 @@ clang_include = '$(CLANG_INCLUDE)'
|
|||
edi_suite_SOURCES = \
|
||||
edi_test_path.c \
|
||||
edi_test_content_provider.c \
|
||||
edi_test_editor_suggest_provider.c \
|
||||
edi_test_editor_suggest_provider_c.c \
|
||||
edi_test_language_provider.c \
|
||||
edi_test_language_provider_c.c \
|
||||
edi_suite.c
|
||||
|
||||
edi_suite_CPPFLAGS = -I$(top_builddir)/src/lib/ -I$(top_builddir)/src/bin/ \
|
||||
|
|
|
@ -16,8 +16,8 @@ static const struct {
|
|||
{ "basic", edi_test_basic },
|
||||
{ "path", edi_test_path },
|
||||
{ "content_provider", edi_test_content_provider },
|
||||
{ "editor_suggest_provider", edi_test_editor_suggest_provider },
|
||||
{ "editor_suggest_provider_c", edi_test_editor_suggest_provider_c }
|
||||
{ "language_provider", edi_test_language_provider },
|
||||
{ "language_provider_c", edi_test_language_provider_c }
|
||||
};
|
||||
|
||||
START_TEST(edi_initialization)
|
||||
|
|
|
@ -9,7 +9,7 @@ void edi_test_basic(TCase *tc);
|
|||
void edi_test_console(TCase *tc);
|
||||
void edi_test_path(TCase *tc);
|
||||
void edi_test_content_provider(TCase *tc);
|
||||
void edi_test_editor_suggest_provider(TCase *tc);
|
||||
void edi_test_editor_suggest_provider_c(TCase *tc);
|
||||
void edi_test_language_provider(TCase *tc);
|
||||
void edi_test_language_provider_c(TCase *tc);
|
||||
|
||||
#endif /* _EDI_SUITE_H */
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -5,7 +5,7 @@
|
|||
#include <Elementary.h>
|
||||
|
||||
#include "../bin/edi_private.h"
|
||||
#include "editor/edi_editor_suggest_provider.h"
|
||||
#include "language/edi_language_provider.h"
|
||||
|
||||
#include "edi_suite.h"
|
||||
|
||||
|
@ -31,7 +31,7 @@ _setup(Edi_Editor *editor, Evas_Object *win)
|
|||
static Eina_List *
|
||||
_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_FOREACH(list, l, suggest_it)
|
||||
|
@ -43,26 +43,26 @@ _filtered_list_get(Eina_List *list, const char *word)
|
|||
return ret;
|
||||
}
|
||||
|
||||
START_TEST (edi_test_editor_suggest_provider_c_lookup)
|
||||
START_TEST (edi_test_language_provider_c_lookup)
|
||||
{
|
||||
Elm_Code *code;
|
||||
Evas_Object *win;
|
||||
Edi_Editor editor;
|
||||
Edi_Editor_Suggest_Provider *provider;
|
||||
Edi_Editor_Suggest_Item *item;
|
||||
Edi_Language_Provider *provider;
|
||||
Edi_Language_Suggest_Item *item;
|
||||
Eina_List *list;
|
||||
|
||||
elm_init(1, NULL);
|
||||
win = elm_win_add(NULL, "entry", ELM_WIN_BASIC);
|
||||
code = _setup(&editor, win);
|
||||
|
||||
provider = edi_editor_suggest_provider_get(&editor);
|
||||
provider = edi_language_provider_get(&editor);
|
||||
provider->add(&editor);
|
||||
list = provider->lookup(&editor, 3, 12);
|
||||
ck_assert_int_eq(eina_list_count(_filtered_list_get(list, "_xyzabc_")), 1);
|
||||
|
||||
EINA_LIST_FREE(list, item)
|
||||
edi_editor_suggest_item_free(item);
|
||||
edi_language_suggest_item_free(item);
|
||||
|
||||
provider->del(&editor);
|
||||
elm_code_free(code);
|
||||
|
@ -70,27 +70,27 @@ START_TEST (edi_test_editor_suggest_provider_c_lookup)
|
|||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST (edi_test_editor_suggest_provider_c_summary)
|
||||
START_TEST (edi_test_language_provider_c_summary)
|
||||
{
|
||||
Elm_Code *code;
|
||||
Evas_Object *win;
|
||||
Edi_Editor editor;
|
||||
Edi_Editor_Suggest_Provider *provider;
|
||||
Edi_Editor_Suggest_Item *item;
|
||||
Edi_Language_Provider *provider;
|
||||
Edi_Language_Suggest_Item *item;
|
||||
Eina_List *list;
|
||||
|
||||
elm_init(1, NULL);
|
||||
win = elm_win_add(NULL, "entry", ELM_WIN_BASIC);
|
||||
code = _setup(&editor, win);
|
||||
|
||||
provider = edi_editor_suggest_provider_get(&editor);
|
||||
provider = edi_language_provider_get(&editor);
|
||||
provider->add(&editor);
|
||||
list = provider->lookup(&editor, 3, 12);
|
||||
item = eina_list_nth(_filtered_list_get(list, "_xyzabc_"), 0);
|
||||
ck_assert_str_eq(item->summary, "_xyzabc_test");
|
||||
|
||||
EINA_LIST_FREE(list, item)
|
||||
edi_editor_suggest_item_free(item);
|
||||
edi_language_suggest_item_free(item);
|
||||
|
||||
provider->del(&editor);
|
||||
elm_code_free(code);
|
||||
|
@ -98,11 +98,11 @@ START_TEST (edi_test_editor_suggest_provider_c_summary)
|
|||
}
|
||||
END_TEST
|
||||
|
||||
void edi_test_editor_suggest_provider_c(TCase *tc)
|
||||
void edi_test_language_provider_c(TCase *tc)
|
||||
{
|
||||
#if HAVE_LIBCLANG
|
||||
tcase_add_test(tc, edi_test_editor_suggest_provider_c_lookup);
|
||||
tcase_add_test(tc, edi_test_editor_suggest_provider_c_summary);
|
||||
tcase_add_test(tc, edi_test_language_provider_c_lookup);
|
||||
tcase_add_test(tc, edi_test_language_provider_c_summary);
|
||||
#endif
|
||||
}
|
||||
|
Loading…
Reference in New Issue