hermet pushed a commit to branch master.

http://git.enlightenment.org/tools/enventor.git/commit/?id=c2d6bae122c0ef5a6838ab4d4bcb6a4f8fcd458e

commit c2d6bae122c0ef5a6838ab4d4bcb6a4f8fcd458e
Author: Mykyta Biliavskyi <m.biliavs...@samsung.com>
Date:   Wed Jun 24 13:14:14 2015 +0900

    Autoindent: fix increase line numbers.
    
    Summary:
    Function indent_insert_apply reutn count of inserted lines.
    It is provide increse line numbers correctly.
    
    @fix T2510
    
    Reviewers: Hermet
    
    Maniphest Tasks: T2510
    
    Differential Revision: https://phab.enlightenment.org/D2745
---
 src/lib/edc_editor.c       | 12 ++++++------
 src/lib/enventor_private.h |  2 +-
 src/lib/indent.c           | 18 ++++++++++++------
 3 files changed, 19 insertions(+), 13 deletions(-)

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);
      }
 }

-- 


Reply via email to