diff --git a/src/source.cpp b/src/source.cpp index 1015bc9..bc58f49 100644 --- a/src/source.cpp +++ b/src/source.cpp @@ -2573,7 +2573,7 @@ bool Source::View::on_key_press_event_bracket_language(GdkEventKey *event) { auto token = get_token(tabs_end_iter); if(token == "class" || token == "struct") add_semicolon = true; - // Add semicolon after lambda unless it's a parameter + // Add semicolon after lambda unless it's an argument else if(*start_iter != '(' && *start_iter != '{' && *start_iter != '[') { auto it = condition_iter; long para_count = 0; @@ -2593,7 +2593,11 @@ bool Source::View::on_key_press_event_bracket_language(GdkEventKey *event) { ++para_count; if(square_outside_para_found && square_count == 0 && para_count == 0) { - add_semicolon = true; + // Look for equal sign + while(it.backward_char() && (*it == ' ' || *it == '\t' || it.ends_line())) { + } + if(*it == '=') + add_semicolon = true; break; } if(it == start_iter) diff --git a/tests/source_key_test.cpp b/tests/source_key_test.cpp index f1e8b01..8bb16ca 100644 --- a/tests/source_key_test.cpp +++ b/tests/source_key_test.cpp @@ -1123,6 +1123,20 @@ int main() { g_assert(buffer->get_insert()->get_iter().get_line() == 1); g_assert(buffer->get_insert()->get_iter().get_line_offset() == 4); } + { + buffer->set_text(" test(\n" + " [] {});"); + auto iter = buffer->end(); + iter.backward_chars(3); + buffer->place_cursor(iter); + view.on_key_press_event(&event); + g_assert(buffer->get_text() == " test(\n" + " [] {\n" + " \n" + " });"); + g_assert(buffer->get_insert()->get_iter().get_line() == 2); + g_assert(buffer->get_insert()->get_iter().get_line_offset() == 8); + } { buffer->set_text(" void Class::Class()\n"