diff options
author | Andy Williams <andy@andywilliams.me> | 2016-02-09 00:32:16 +0000 |
---|---|---|
committer | Andy Williams <andy@andywilliams.me> | 2016-02-09 00:32:16 +0000 |
commit | 70471e0ad89554bbe6368f649bc8a9c36147eac7 (patch) | |
tree | c56ca0b9273de1e6b71bb953bc85c115651b96fb | |
parent | 0d11f3d7d8fff83a42a7ee84b761a8eb638d9c7e (diff) | |
download | efl-70471e0ad89554bbe6368f649bc8a9c36147eac7.tar.gz |
[editor] Support space insertion instead of tabs
Elm_Code support and option in Edi to use spaces when the
Tab key is pressed - make this default too.
-rw-r--r-- | legacy/elm_code/src/lib/widget/elm_code_widget.c | 39 | ||||
-rw-r--r-- | legacy/elm_code/src/lib/widget/elm_code_widget.eo | 11 | ||||
-rw-r--r-- | legacy/elm_code/src/lib/widget/elm_code_widget_private.h | 2 |
3 files changed, 51 insertions, 1 deletions
diff --git a/legacy/elm_code/src/lib/widget/elm_code_widget.c b/legacy/elm_code/src/lib/widget/elm_code_widget.c index 98811bda14..a6cde05b3f 100644 --- a/legacy/elm_code/src/lib/widget/elm_code_widget.c +++ b/legacy/elm_code/src/lib/widget/elm_code_widget.c @@ -1007,6 +1007,30 @@ _elm_code_widget_text_at_cursor_insert(Elm_Code_Widget *widget, const char *text } static void +_elm_code_widget_tab_at_cursor_insert(Elm_Code_Widget *widget) +{ + Elm_Code_Widget_Data *pd; + unsigned int col, row; + + pd = eo_data_scope_get(widget, ELM_CODE_WIDGET_CLASS); + if (!pd->tab_inserts_spaces) + { + _elm_code_widget_text_at_cursor_insert(widget, "\t", 1); + return; + } + + eo_do(widget, + elm_obj_code_widget_cursor_position_get(&col, &row)); + col = (col - 1) % pd->tabstop; + + while (col < pd->tabstop) + { + _elm_code_widget_text_at_cursor_insert(widget, " ", 1); + col++; + } +} + +static void _elm_code_widget_newline(Elm_Code_Widget *widget) { Elm_Code *code; @@ -1215,6 +1239,8 @@ _elm_code_widget_key_down_cb(void *data, Evas *evas EINA_UNUSED, _elm_code_widget_backspace(widget); else if (!strcmp(ev->key, "Delete")) _elm_code_widget_delete(widget); + else if (!strcmp(ev->key, "Tab")) + _elm_code_widget_tab_at_cursor_insert(widget); else if (ev->string && strlen(ev->string) == 1) _elm_code_widget_text_at_cursor_insert(widget, ev->string, 1); @@ -1446,6 +1472,19 @@ _elm_code_widget_show_whitespace_get(Eo *obj EINA_UNUSED, Elm_Code_Widget_Data * } EOLIAN static void +_elm_code_widget_tab_inserts_spaces_set(Eo *obj, Elm_Code_Widget_Data *pd, Eina_Bool spaces) +{ + pd->tab_inserts_spaces = spaces; + _elm_code_widget_fill(obj); +} + +EOLIAN static Eina_Bool +_elm_code_widget_tab_inserts_spaces_get(Eo *obj EINA_UNUSED, Elm_Code_Widget_Data *pd) +{ + return pd->tab_inserts_spaces; +} + +EOLIAN static void _elm_code_widget_cursor_position_set(Eo *obj, Elm_Code_Widget_Data *pd, unsigned int col, unsigned int line) { _elm_code_widget_cursor_move(obj, pd, col, line, EINA_FALSE); diff --git a/legacy/elm_code/src/lib/widget/elm_code_widget.eo b/legacy/elm_code/src/lib/widget/elm_code_widget.eo index 1bbcc1803e..0e11331dbc 100644 --- a/legacy/elm_code/src/lib/widget/elm_code_widget.eo +++ b/legacy/elm_code/src/lib/widget/elm_code_widget.eo @@ -130,6 +130,17 @@ class Elm.Code_Widget (Elm.Layout, Elm_Interface_Atspi_Text) show_whitespace: Eina_Bool; [[Whether or not we show whitespace characters]] } } + @property tab_inserts_spaces { + set { + [[Set whether space characters should be inserted instead of tabs.]] + } + get { + [[Get whether or not space characters will be inserted instead of tabs.]] + } + values { + tab_inserts_spaces: Eina_Bool; [[EINA_TRUE if we should insert space characters instead of a tab when the Tab key is pressed]] + } + } @property cursor_position { set { [[Set the current location of the text cursor.]] diff --git a/legacy/elm_code/src/lib/widget/elm_code_widget_private.h b/legacy/elm_code/src/lib/widget/elm_code_widget_private.h index b89973fd0f..b9f8ad296d 100644 --- a/legacy/elm_code/src/lib/widget/elm_code_widget_private.h +++ b/legacy/elm_code/src/lib/widget/elm_code_widget_private.h @@ -23,7 +23,7 @@ typedef struct Eina_Bool editable, focussed; Eina_Bool show_line_numbers; unsigned int line_width_marker, tabstop; - Eina_Bool show_whitespace; + Eina_Bool show_whitespace, tab_inserts_spaces; Elm_Code_Widget_Selection_Data *selection; Evas_Object *tooltip; |