forked from enlightenment/enventor
indent: Refactoring indent_text_auto_format().
Move the module parsing codes and creating code line list to indent_code_lines_create() function.
This commit is contained in:
parent
02a4549906
commit
3871364b10
|
@ -236,33 +236,26 @@ indent_delete_apply(indent_data *id EINA_UNUSED, Evas_Object *entry,
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static Eina_List *
|
||||||
indent_text_auto_format(indent_data *id EINA_UNUSED,
|
indent_code_lines_create(indent_data *id, const char *utf8)
|
||||||
Evas_Object *entry, const char *insert)
|
|
||||||
{
|
{
|
||||||
int line_cnt = 0;
|
|
||||||
//FIXME: To improve performance, change logic not to translate text.
|
|
||||||
char *utf8 = evas_textblock_text_markup_to_utf8(NULL, insert);
|
|
||||||
int utf8_size = strlen(utf8);
|
|
||||||
|
|
||||||
Evas_Object *tb = elm_entry_textblock_get(entry);
|
|
||||||
Evas_Textblock_Cursor *cur_start = evas_object_textblock_cursor_new(tb);
|
|
||||||
Evas_Textblock_Cursor *cur_end = evas_object_textblock_cursor_get(tb);
|
|
||||||
redoundo_data *rd = evas_object_data_get(entry, "redoundo");
|
|
||||||
|
|
||||||
char *utf8_ptr = utf8;
|
|
||||||
char *utf8_lexem = NULL;
|
|
||||||
char *utf8_end = utf8 + utf8_size;
|
|
||||||
char *utf8_append_ptr = NULL;
|
|
||||||
Eina_List *code_lines = NULL;
|
Eina_List *code_lines = NULL;
|
||||||
Eina_Strbuf *buf = eina_strbuf_new();
|
|
||||||
|
char *utf8_ptr = NULL;
|
||||||
|
char *utf8_end = NULL;
|
||||||
|
char *utf8_lexem = NULL;
|
||||||
|
char *utf8_append_ptr = NULL;
|
||||||
|
|
||||||
Eina_Bool keep_lexem_start_pos = EINA_FALSE;
|
Eina_Bool keep_lexem_start_pos = EINA_FALSE;
|
||||||
Eina_Bool single_comment_found = EINA_FALSE;
|
Eina_Bool single_comment_found = EINA_FALSE;
|
||||||
Eina_Bool multi_comment_found = EINA_FALSE;
|
Eina_Bool multi_comment_found = EINA_FALSE;
|
||||||
Eina_Bool macro_found = EINA_FALSE;
|
Eina_Bool macro_found = EINA_FALSE;
|
||||||
|
|
||||||
int tb_cur_pos = 0;
|
if (!utf8) return NULL;
|
||||||
|
|
||||||
|
utf8_ptr = (char *)utf8;
|
||||||
|
utf8_end = utf8_ptr + strlen(utf8);
|
||||||
|
|
||||||
/* Create a list of code line strings from inserted string.
|
/* Create a list of code line strings from inserted string.
|
||||||
Each code line string is generated based on lexeme.
|
Each code line string is generated based on lexeme.
|
||||||
Here, lexeme starts with nonspace character and ends with the followings.
|
Here, lexeme starts with nonspace character and ends with the followings.
|
||||||
|
@ -403,9 +396,35 @@ indent_text_auto_format(indent_data *id EINA_UNUSED,
|
||||||
if (utf8_lexem > utf8_append_ptr)
|
if (utf8_lexem > utf8_append_ptr)
|
||||||
code_lines = eina_list_append(code_lines,
|
code_lines = eina_list_append(code_lines,
|
||||||
eina_stringshare_add(utf8_lexem));
|
eina_stringshare_add(utf8_lexem));
|
||||||
free(utf8);
|
|
||||||
|
|
||||||
|
return code_lines;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
indent_text_auto_format(indent_data *id,
|
||||||
|
Evas_Object *entry, const char *insert)
|
||||||
|
{
|
||||||
|
int line_cnt = 0;
|
||||||
|
//FIXME: To improve performance, change logic not to translate text.
|
||||||
|
char *utf8 = evas_textblock_text_markup_to_utf8(NULL, insert);
|
||||||
|
int utf8_size = strlen(utf8);
|
||||||
|
|
||||||
|
Evas_Object *tb = elm_entry_textblock_get(entry);
|
||||||
|
Evas_Textblock_Cursor *cur_start = evas_object_textblock_cursor_new(tb);
|
||||||
|
Evas_Textblock_Cursor *cur_end = evas_object_textblock_cursor_get(tb);
|
||||||
|
int tb_cur_pos = 0;
|
||||||
|
|
||||||
|
redoundo_data *rd = evas_object_data_get(entry, "redoundo");
|
||||||
|
|
||||||
|
char *utf8_ptr = utf8;
|
||||||
|
char *utf8_end = utf8 + utf8_size;
|
||||||
|
char *utf8_lexem = NULL;
|
||||||
|
char *utf8_append_ptr = NULL;
|
||||||
|
|
||||||
|
Eina_List *code_lines = indent_code_lines_create(id, utf8);
|
||||||
|
free(utf8);
|
||||||
if (!code_lines) return line_cnt;
|
if (!code_lines) return line_cnt;
|
||||||
|
|
||||||
tb_cur_pos = evas_textblock_cursor_pos_get(cur_end);
|
tb_cur_pos = evas_textblock_cursor_pos_get(cur_end);
|
||||||
evas_textblock_cursor_pos_set(cur_start, tb_cur_pos - utf8_size);
|
evas_textblock_cursor_pos_set(cur_start, tb_cur_pos - utf8_size);
|
||||||
evas_textblock_cursor_range_delete(cur_start, cur_end);
|
evas_textblock_cursor_range_delete(cur_start, cur_end);
|
||||||
|
@ -437,10 +456,11 @@ indent_text_auto_format(indent_data *id EINA_UNUSED,
|
||||||
}
|
}
|
||||||
free(utf8);
|
free(utf8);
|
||||||
|
|
||||||
|
Eina_Strbuf *buf = eina_strbuf_new();
|
||||||
int saved_space = 0;
|
int saved_space = 0;
|
||||||
single_comment_found = EINA_FALSE;
|
Eina_Bool single_comment_found = EINA_FALSE;
|
||||||
multi_comment_found = EINA_FALSE;
|
Eina_Bool multi_comment_found = EINA_FALSE;
|
||||||
macro_found = EINA_FALSE;
|
Eina_Bool macro_found = EINA_FALSE;
|
||||||
EINA_LIST_FOREACH(code_lines, l, line)
|
EINA_LIST_FOREACH(code_lines, l, line)
|
||||||
{
|
{
|
||||||
if (!single_comment_found && !multi_comment_found && !macro_found)
|
if (!single_comment_found && !multi_comment_found && !macro_found)
|
||||||
|
|
Loading…
Reference in New Issue