Browse Source

Improved handling of enter after { at beginning of lambda expressions that are arguments

pipelines/235045657
eidheim 5 years ago
parent
commit
f3d76e08ae
  1. 12
      src/source.cpp
  2. 16
      tests/source_key_test.cpp

12
src/source.cpp

@ -2552,6 +2552,18 @@ bool Source::View::on_key_press_event_bracket_language(GdkEventKey *event) {
scroll_to(get_buffer()->get_insert()); scroll_to(get_buffer()->get_insert());
return true; return true;
} }
/**
* Handle pressing enter after '{' in special expressions like:
* test(2,
* []() {
* func();
* });
*/
else if(close_iter.get_line() > condition_iter.get_line() && close_iter.get_line_offset() == get_tabs_end_iter(condition_iter).get_line_offset()) {
get_buffer()->insert_at_cursor('\n' + get_line_before(get_tabs_end_iter(condition_iter)) + tab);
scroll_to(get_buffer()->get_insert());
return true;
}
} }
// Check if one should add semicolon after '}' // Check if one should add semicolon after '}'

16
tests/source_key_test.cpp

@ -601,6 +601,22 @@ 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() == 17); g_assert(buffer->get_insert()->get_iter().get_line_offset() == 17);
} }
{
buffer->set_text(" test(2,\n"
" []() {\n"
" func();\n"
" })\n");
auto iter = buffer->get_iter_at_line_offset(1, 13);
buffer->place_cursor(iter);
view.on_key_press_event(&event);
g_assert(buffer->get_text() == " test(2,\n"
" []() {\n"
" \n"
" func();\n"
" })\n");
g_assert(buffer->get_insert()->get_iter().get_line() == 2);
g_assert(buffer->get_insert()->get_iter().get_line_offset() == 9);
}
{ {
buffer->set_text(" else"); buffer->set_text(" else");

Loading…
Cancel
Save