diff --git a/src/lib/edc_editor.c b/src/lib/edc_editor.c index 6d9a9f0..44330ad 100644 --- a/src/lib/edc_editor.c +++ b/src/lib/edc_editor.c @@ -239,29 +239,29 @@ edit_changed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) if (info->insert) { + int increase = 0; if ((info->change.insert.plain_length == 1)&& (info->change.insert.content[0] == ' ')) return; if (!strcmp(info->change.insert.content, EOL)) { - edit_line_increase(ed, 1); + increase++; syntax_color = EINA_FALSE; } else { - int increase = + increase = parser_line_cnt_get(ed->pd, info->change.insert.content); - edit_line_increase(ed, increase); } if (ed->auto_indent) { - indent_insert_apply(syntax_indent_data_get(ed->sh), ed->en_edit, + increase = indent_insert_apply(syntax_indent_data_get(ed->sh), ed->en_edit, info->change.insert.content, ed->cur_line); - int increase = - parser_line_cnt_get(ed->pd, info->change.insert.content); edit_line_increase(ed, increase); } + else + edit_line_increase(ed, increase); } else diff --git a/src/lib/enventor_private.h b/src/lib/enventor_private.h index 7ae7a97..477a8fd 100644 --- a/src/lib/enventor_private.h +++ b/src/lib/enventor_private.h @@ -129,7 +129,7 @@ indent_data *syntax_indent_data_get(syntax_helper *sh); indent_data *indent_init(Eina_Strbuf *strbuf); void indent_term(indent_data *id); int indent_space_get(indent_data *id, Evas_Object *entry); -void indent_insert_apply(indent_data *id, Evas_Object *entry, const char *insert, int cur_line); +int indent_insert_apply(indent_data *id, Evas_Object *entry, const char *insert, int cur_line); Eina_Bool indent_delete_apply(indent_data *id, Evas_Object *entry, const char *del, int cur_line); diff --git a/src/lib/indent.c b/src/lib/indent.c index a5ed761..3599bfc 100644 --- a/src/lib/indent.c +++ b/src/lib/indent.c @@ -231,10 +231,11 @@ indent_delete_apply(indent_data *id EINA_UNUSED, Evas_Object *entry, return EINA_FALSE; } -static void +static int indent_text_auto_format(indent_data *id EINA_UNUSED, Evas_Object *entry, const char *insert) { + int line_cnt = 0; char *utf8 = evas_textblock_text_markup_to_utf8(NULL, insert); int utf8_size = strlen(utf8); @@ -276,7 +277,7 @@ indent_text_auto_format(indent_data *id EINA_UNUSED, } free(utf8); - if (!code_lines) return; + if (!code_lines) return line_cnt; 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_range_delete(cur_start, cur_end); @@ -297,6 +298,7 @@ indent_text_auto_format(indent_data *id EINA_UNUSED, memset(p, 0x0, space); if (strstr(line, "{")) space += TAB_SPACE; eina_stringshare_del(line); + line_cnt++; } frmt_buf = eina_strbuf_string_steal(buf); @@ -313,10 +315,10 @@ indent_text_auto_format(indent_data *id EINA_UNUSED, eina_strbuf_free(buf); free(frmt_buf); evas_textblock_cursor_free(cur_start); - return; + return line_cnt; } -void +int indent_insert_apply(indent_data *id, Evas_Object *entry, const char *insert, int cur_line) { @@ -325,12 +327,16 @@ indent_insert_apply(indent_data *id, Evas_Object *entry, const char *insert, { if (insert[0] == '}') indent_insert_bracket_case(id, entry, cur_line); + return 0; } else { if (!strcmp(insert, EOL)) - indent_insert_br_case(id, entry); + { + indent_insert_br_case(id, entry); + return 1; + } else - indent_text_auto_format(id, entry, insert); + return indent_text_auto_format(id, entry, insert); } }