From 3d2f0810e1cbd5e53e0a6d1098d6a895269402e4 Mon Sep 17 00:00:00 2001 From: eidheim Date: Tue, 16 Mar 2021 09:53:14 +0100 Subject: [PATCH] Slight improvement to closing html element insertion --- src/source.cpp | 5 +++-- tests/source_key_test.cpp | 40 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/src/source.cpp b/src/source.cpp index 7000bcd..4db08b8 100644 --- a/src/source.cpp +++ b/src/source.cpp @@ -2424,8 +2424,9 @@ bool Source::View::on_key_press_event_bracket_language(GdkEventKey *event) { forward_to_code(close_element_iter); auto close_element_tabs_size = static_cast(get_tabs_end_iter(close_element_iter).get_line_offset()); if(!close_element_iter || close_element_tabs_size < tabs.size() || - (close_element_tabs_size == tabs.size() && *close_element_iter == '<' && close_element_iter.forward_char() && forward_to_code(close_element_iter) && - !(*close_element_iter == '/' && close_element_iter.forward_char() && forward_to_code(close_element_iter) && get_element(close_element_iter) == open_element_token))) { + (close_element_tabs_size == tabs.size() && (*close_element_iter == '{' || + (*close_element_iter == '<' && close_element_iter.forward_char() && forward_to_code(close_element_iter) && + !(*close_element_iter == '/' && close_element_iter.forward_char() && forward_to_code(close_element_iter) && get_element(close_element_iter) == open_element_token))))) { get_buffer()->insert_at_cursor('\n' + tabs + tab + '\n' + tabs + "'); auto insert_it = get_buffer()->get_insert()->get_iter(); if(insert_it.backward_chars(tabs.size() + 1 + open_element_token.size() + 3)) { diff --git a/tests/source_key_test.cpp b/tests/source_key_test.cpp index 74ca2fc..1bdf942 100644 --- a/tests/source_key_test.cpp +++ b/tests/source_key_test.cpp @@ -2483,6 +2483,46 @@ int main() { iter.backward_chars(12); g_assert(buffer->get_insert()->get_iter() == iter); } + { + buffer->set_text(" test(\n" + "
\n" + "
\n" + "
\n"); + auto iter = buffer->get_iter_at_line(3); + iter.backward_char(); + buffer->place_cursor(iter); + view.on_key_press_event(&event); + g_assert(buffer->get_text() == " test(\n" + "
\n" + "
\n" + " \n" + "
\n" + "
\n"); + iter = buffer->get_iter_at_line(4); + iter.backward_char(); + g_assert(buffer->get_insert()->get_iter() == iter); + } + { + buffer->set_text(" test(\n" + "
\n" + "
\n" + " {'hello'}\n" + "
\n"); + auto iter = buffer->get_iter_at_line(3); + iter.backward_char(); + buffer->place_cursor(iter); + view.on_key_press_event(&event); + g_assert(buffer->get_text() == " test(\n" + "
\n" + "
\n" + " \n" + "
\n" + " {'hello'}\n" + "
\n"); + iter = buffer->get_iter_at_line(4); + iter.backward_char(); + g_assert(buffer->get_insert()->get_iter() == iter); + } { buffer->set_text(" test(\n" "
{}}>");