Browse Source

No longer adds semicolon after lambda expressions that are passed as arguments

pipelines/235045657
eidheim 5 years ago
parent
commit
4a76c6114f
  1. 6
      src/source.cpp
  2. 14
      tests/source_key_test.cpp

6
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); auto token = get_token(tabs_end_iter);
if(token == "class" || token == "struct") if(token == "class" || token == "struct")
add_semicolon = true; 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 != '[') { else if(*start_iter != '(' && *start_iter != '{' && *start_iter != '[') {
auto it = condition_iter; auto it = condition_iter;
long para_count = 0; long para_count = 0;
@ -2593,6 +2593,10 @@ bool Source::View::on_key_press_event_bracket_language(GdkEventKey *event) {
++para_count; ++para_count;
if(square_outside_para_found && square_count == 0 && para_count == 0) { if(square_outside_para_found && square_count == 0 && para_count == 0) {
// Look for equal sign
while(it.backward_char() && (*it == ' ' || *it == '\t' || it.ends_line())) {
}
if(*it == '=')
add_semicolon = true; add_semicolon = true;
break; break;
} }

14
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() == 1);
g_assert(buffer->get_insert()->get_iter().get_line_offset() == 4); 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" buffer->set_text(" void Class::Class()\n"

Loading…
Cancel
Save