From a6d1aa3204c7f6fb0046ad259fa953e9dac612a3 Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Sat, 22 Nov 2014 22:44:37 +0000 Subject: [PATCH 1/4] Fix warning --- elm_code/bin/elm_code_test_main.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/elm_code/bin/elm_code_test_main.c b/elm_code/bin/elm_code_test_main.c index 713598f..38c5ab0 100644 --- a/elm_code/bin/elm_code_test_main.c +++ b/elm_code/bin/elm_code_test_main.c @@ -61,11 +61,10 @@ _elm_code_test_diff_setup(Evas_Object *parent) { char *path = "elm_code/tests/testdiff.diff"; Evas_Object *diff; - Elm_Code_File *file; Elm_Code *code; code = elm_code_create(); - file = elm_code_file_open(code, path); + elm_code_file_open(code, path); diff = elm_code_diff_widget_add(parent, code); return diff; From 854ebe1566857cdd4336085c02057841046417bd Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Sat, 22 Nov 2014 22:55:57 +0000 Subject: [PATCH 2/4] Let's use a consistant font size --- src/bin/mainview/edi_mainview.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bin/mainview/edi_mainview.c b/src/bin/mainview/edi_mainview.c index fd68e9d..ae40509 100644 --- a/src/bin/mainview/edi_mainview.c +++ b/src/bin/mainview/edi_mainview.c @@ -169,6 +169,7 @@ _edi_mainview_content_diff_create(Edi_Mainview_Item *item, Evas_Object *parent) code = elm_code_create(); elm_code_file_open(code, item->path); diff = elm_code_diff_widget_add(parent, code); + elm_code_diff_widget_font_size_set(diff, 12); return diff; } From 32fd7043caad982bf8e56d05a514ad6919a80369 Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Sun, 23 Nov 2014 00:18:57 +0000 Subject: [PATCH 3/4] Open diffs in a new window if requested --- src/bin/mainview/edi_mainview.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/bin/mainview/edi_mainview.c b/src/bin/mainview/edi_mainview.c index ae40509..133d5be 100644 --- a/src/bin/mainview/edi_mainview.c +++ b/src/bin/mainview/edi_mainview.c @@ -367,6 +367,8 @@ _edi_mainview_win_stat_done(void *data, Eio_File *handler EINA_UNUSED, const Ein options->type = "text"; // TODO make a code view else if (!strncasecmp(mime, "image/", 6)) options->type = "image"; + else if (!strcasecmp(mime, "text/x-diff") || !strcasecmp(mime, "text/x-patch")) + options->type = "diff"; else { _edi_mainview_choose_type(nf, options, _edi_mainview_choose_type_win_cb); From d0ad93e47a7150409e34a475295c28cdc1d221ec Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Sun, 23 Nov 2014 00:19:36 +0000 Subject: [PATCH 4/4] Render all filename headers in a diff widget --- elm_code/lib/elm_code_diff_widget.c | 42 +++++++++++++++++------------ 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/elm_code/lib/elm_code_diff_widget.c b/elm_code/lib/elm_code_diff_widget.c index 95eeb57..e833f85 100644 --- a/elm_code/lib/elm_code_diff_widget.c +++ b/elm_code/lib/elm_code_diff_widget.c @@ -44,32 +44,40 @@ static void _elm_code_diff_widget_parse_diff(Elm_Code_File *diff, Elm_Code_File { Eina_List *item; Elm_Code_Line *line; - int number; + int number, offset; number = 0; + offset = 0; EINA_LIST_FOREACH(diff->lines, item, line) { - if (line->length > 0 && number < 2) + if (line->length > 0) { - if (line->content[0] == 'd' || line->content[0] == 'i') - continue; + if (line->content[0] == 'd' || line->content[0] == 'i' || line->content[0] == 'n') + { + offset = 0; + continue; + } } - if (number == 0) - { - elm_code_file_line_append(left, line->content+4, line->length-4); - elm_code_file_line_status_set(left, 1, ELM_CODE_STATUS_TYPE_CHANGED); - } - else if (number == 1) - { - elm_code_file_line_append(right, line->content+4, line->length-4); - elm_code_file_line_status_set(right, 1, ELM_CODE_STATUS_TYPE_CHANGED); - } - else - _elm_code_diff_widget_parse_diff_line(line, number, left, right); - number++; + if (offset == 0) + { + elm_code_file_line_append(left, line->content+4, line->length-4); + elm_code_file_line_status_set(left, number, ELM_CODE_STATUS_TYPE_CHANGED); + } + else if (offset == 1) + { + number--; + elm_code_file_line_append(right, line->content+4, line->length-4); + elm_code_file_line_status_set(right, number, ELM_CODE_STATUS_TYPE_CHANGED); + } + else + { + _elm_code_diff_widget_parse_diff_line(line, number, left, right); + } + + offset++; } }