ajwillia-ms pushed a commit to branch edi-0.6. http://git.enlightenment.org/tools/edi.git/commit/?id=021d1c2da5044b4c6bd53a699e3db54bd52a95f6
commit 021d1c2da5044b4c6bd53a699e3db54bd52a95f6 Author: Andy Williams <a...@andywilliams.me> Date: Sun Sep 24 21:33:45 2017 +0100 snippet: fix indentation of inserted lines --- src/bin/editor/edi_editor.c | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/src/bin/editor/edi_editor.c b/src/bin/editor/edi_editor.c index e792126..b0ffb0b 100644 --- a/src/bin/editor/edi_editor.c +++ b/src/bin/editor/edi_editor.c @@ -578,10 +578,14 @@ _suggest_popup_setup(Edi_Editor *editor) static void _edi_editor_snippet_insert(Edi_Editor *editor) { - char *key; - const char *snippet; + char *key, *leading; + unsigned int line_len; + int nl_pos; + short nl_len; + const char *snippet, *ptr; unsigned int row, col; Edi_Language_Provider *provider; + Elm_Code_Line *line; provider = edi_language_provider_get(editor); elm_code_widget_cursor_position_get(editor->entry, &row, &col); @@ -591,9 +595,29 @@ _edi_editor_snippet_insert(Edi_Editor *editor) if (!snippet) return; + line = elm_code_file_line_get(elm_code_widget_code_get(editor->entry)->file, row); + leading = elm_code_line_indent_get(line); + elm_code_widget_selection_select_word(editor->entry, row, col); elm_code_widget_selection_delete(editor->entry); - elm_code_widget_text_at_cursor_insert(editor->entry, snippet); + + ptr = snippet; + nl_pos = elm_code_text_newlinenpos(ptr, strlen(ptr), &nl_len); + + while (nl_pos != ELM_CODE_TEXT_NOT_FOUND) + { + char *insert; + line_len = nl_pos + nl_len; + + insert = strndup(ptr, line_len); + elm_code_widget_text_at_cursor_insert(editor->entry, insert); + elm_code_widget_text_at_cursor_insert(editor->entry, leading); + free(insert); + + ptr += line_len; + nl_pos = elm_code_text_newlinenpos(ptr, strlen(ptr), &nl_len); + } + elm_code_widget_text_at_cursor_insert(editor->entry, ptr); free(key); return; --