ajwillia-ms pushed a commit to branch master.

http://git.enlightenment.org/tools/edi.git/commit/?id=49fa89dc03f8cb02fc517562e0e298344b456da9

commit 49fa89dc03f8cb02fc517562e0e298344b456da9
Author: Andy Williams <a...@andywilliams.me>
Date:   Mon Feb 15 23:51:51 2016 +0000

    [editor] stop auto selection on symbols too
---
 .../src/lib/widget/elm_code_widget_selection.c     | 13 ++--
 .../tests/widget/elm_code_test_widget_selection.c  | 78 ++++++++++++++++++++++
 2 files changed, 87 insertions(+), 4 deletions(-)

diff --git a/elm_code/src/lib/widget/elm_code_widget_selection.c 
b/elm_code/src/lib/widget/elm_code_widget_selection.c
index ae2d122..6479123 100644
--- a/elm_code/src/lib/widget/elm_code_widget_selection.c
+++ b/elm_code/src/lib/widget/elm_code_widget_selection.c
@@ -6,6 +6,8 @@
 
 #include "elm_code_widget_private.h"
 
+static char _breaking_chars[] = " \t,.?!;:()[]{}";
+
 static Elm_Code_Widget_Selection_Data *
 _elm_code_widget_selection_new()
 {
@@ -245,12 +247,15 @@ elm_code_widget_selection_select_line(Evas_Object 
*widget, unsigned int line)
 static Eina_Bool
 _elm_code_widget_selection_char_breaks(char chr)
 {
+   unsigned int i;
+
    if (chr == 0)
      return EINA_TRUE;
-   else if (chr == ' ')
-     return EINA_TRUE;
-   else if (chr == '\t')
-     return EINA_TRUE;
+
+   for (i = 0; i < sizeof(_breaking_chars); i++)
+     if (chr == _breaking_chars[i])
+       return EINA_TRUE;
+
 
    return EINA_FALSE;
 }
diff --git a/elm_code/src/tests/widget/elm_code_test_widget_selection.c 
b/elm_code/src/tests/widget/elm_code_test_widget_selection.c
index 71e63bf..9769f6b 100644
--- a/elm_code/src/tests/widget/elm_code_test_widget_selection.c
+++ b/elm_code/src/tests/widget/elm_code_test_widget_selection.c
@@ -539,6 +539,82 @@ START_TEST (elm_code_test_widget_selection_select_word)
 }
 END_TEST
 
+START_TEST (elm_code_test_widget_selection_select_word_punctuation)
+{
+   Elm_Code *code;
+   Elm_Code_File *file;
+   Elm_Code_Widget *widget;
+   Evas_Object *win;
+   char *selection;
+
+   elm_init(1, NULL);
+   code = elm_code_create();
+   file = elm_code_file_new(code);
+   elm_code_file_line_append(file, "comma, stop. question? mark!", 38, NULL);
+
+   win = elm_win_add(NULL, "entry", ELM_WIN_BASIC);
+   widget = elm_code_widget_add(win, code);
+
+   elm_code_widget_selection_select_word(widget, 1, 3);
+   selection = elm_code_widget_selection_text_get(widget);
+   ck_assert_str_eq("comma", selection);
+   free(selection);
+
+   elm_code_widget_selection_select_word(widget, 1, 10);
+   selection = elm_code_widget_selection_text_get(widget);
+   ck_assert_str_eq("stop", selection);
+   free(selection);
+
+   elm_code_widget_selection_select_word(widget, 1, 20);
+   selection = elm_code_widget_selection_text_get(widget);
+   ck_assert_str_eq("question", selection);
+   free(selection);
+
+   elm_code_widget_selection_select_word(widget, 1, 25);
+   selection = elm_code_widget_selection_text_get(widget);
+   ck_assert_str_eq("mark", selection);
+   free(selection);
+}
+END_TEST
+
+START_TEST (elm_code_test_widget_selection_select_word_symbols)
+{
+   Elm_Code *code;
+   Elm_Code_File *file;
+   Elm_Code_Widget *widget;
+   Evas_Object *win;
+   char *selection;
+
+   elm_init(1, NULL);
+   code = elm_code_create();
+   file = elm_code_file_new(code);
+   elm_code_file_line_append(file, "colon: [array] (brackets) {braces}", 38, 
NULL);
+
+   win = elm_win_add(NULL, "entry", ELM_WIN_BASIC);
+   widget = elm_code_widget_add(win, code);
+
+   elm_code_widget_selection_select_word(widget, 1, 3);
+   selection = elm_code_widget_selection_text_get(widget);
+   ck_assert_str_eq("colon", selection);
+   free(selection);
+
+   elm_code_widget_selection_select_word(widget, 1, 10);
+   selection = elm_code_widget_selection_text_get(widget);
+   ck_assert_str_eq("array", selection);
+   free(selection);
+
+   elm_code_widget_selection_select_word(widget, 1, 20);
+   selection = elm_code_widget_selection_text_get(widget);
+   ck_assert_str_eq("brackets", selection);
+   free(selection);
+
+   elm_code_widget_selection_select_word(widget, 1, 30);
+   selection = elm_code_widget_selection_text_get(widget);
+   ck_assert_str_eq("braces", selection);
+   free(selection);
+}
+END_TEST
+
 void elm_code_test_widget_selection(TCase *tc)
 {
    tcase_add_test(tc, elm_code_test_widget_selection_set);
@@ -557,5 +633,7 @@ void elm_code_test_widget_selection(TCase *tc)
    tcase_add_test(tc, elm_code_test_widget_selection_reverse_delete_multiline);
    tcase_add_test(tc, elm_code_test_widget_selection_select_line);
    tcase_add_test(tc, elm_code_test_widget_selection_select_word);
+   tcase_add_test(tc, elm_code_test_widget_selection_select_word_punctuation);
+   tcase_add_test(tc, elm_code_test_widget_selection_select_word_symbols);
 }
 

-- 


Reply via email to