diff --git a/src/source.cpp b/src/source.cpp index 09ae0fd..b03bea8 100644 --- a/src/source.cpp +++ b/src/source.cpp @@ -1819,9 +1819,9 @@ bool Source::View::find_close_symbol_forward(Gtk::TextIter iter, Gtk::TextIter & else { long curly_count = 0; do { - if(*iter == positive_char && is_code_iter(iter)) + if(curly_count == 0 && *iter == positive_char && is_code_iter(iter)) count++; - else if(*iter == negative_char && is_code_iter(iter)) { + else if(curly_count == 0 && *iter == negative_char && is_code_iter(iter)) { if(count == 0) { found_iter = iter; return true; @@ -1859,14 +1859,14 @@ bool Source::View::find_open_symbol_backward(Gtk::TextIter iter, Gtk::TextIter & else { long curly_count = 0; do { - if(*iter == positive_char && is_code_iter(iter)) { + if(curly_count == 0 && *iter == positive_char && is_code_iter(iter)) { if(count == 0) { found_iter = iter; return true; } count++; } - else if(*iter == negative_char && is_code_iter(iter)) + else if(curly_count == 0 && *iter == negative_char && is_code_iter(iter)) count--; else if(*iter == '{' && is_code_iter(iter)) { if(curly_count == 0) diff --git a/tests/source_key_test.cpp b/tests/source_key_test.cpp index 8bb16ca..74ca2fc 100644 --- a/tests/source_key_test.cpp +++ b/tests/source_key_test.cpp @@ -2483,6 +2483,34 @@ int main() { iter.backward_chars(12); g_assert(buffer->get_insert()->get_iter() == iter); } + { + buffer->set_text(" test(\n" + "
{}}>"); + auto iter = buffer->end(); + buffer->place_cursor(iter); + view.on_key_press_event(&event); + g_assert(buffer->get_text() == " test(\n" + "
{}}>\n" + " \n" + "
"); + iter = buffer->end(); + iter.backward_chars(11); + g_assert(buffer->get_insert()->get_iter() == iter); + } + { + buffer->set_text(" test(\n" + " <>"); + auto iter = buffer->end(); + buffer->place_cursor(iter); + view.on_key_press_event(&event); + g_assert(buffer->get_text() == " test(\n" + " <>\n" + " \n" + " "); + iter = buffer->end(); + iter.backward_chars(8); + g_assert(buffer->get_insert()->get_iter() == iter); + } { buffer->set_text(" test(\n" "
\n"