Browse Source

Slight improvement when tabbing from empty line

merge-requests/389/head
eidheim 7 years ago
parent
commit
a8efa2447e
  1. 3
      src/source.cc
  2. 16
      tests/source_key_test.cc

3
src/source.cc

@ -2334,7 +2334,8 @@ bool Source::View::on_key_press_event_bracket_language(GdkEventKey *key) {
else if(iter.starts_line() && iter.ends_line() && !get_buffer()->get_has_selection()) { else if(iter.starts_line() && iter.ends_line() && !get_buffer()->get_has_selection()) {
// Indenting after for instance: if(...)\n...;\n // Indenting after for instance: if(...)\n...;\n
auto condition_iter = iter; auto condition_iter = iter;
condition_iter.backward_char(); while(condition_iter.starts_line() && condition_iter.backward_char()) {
}
condition_iter = find_non_whitespace_code_iter_backward(condition_iter); condition_iter = find_non_whitespace_code_iter_backward(condition_iter);
if(*condition_iter == ';' && condition_iter.get_line() > 0 && is_code_iter(condition_iter)) { if(*condition_iter == ';' && condition_iter.get_line() > 0 && is_code_iter(condition_iter)) {
auto start_iter = get_start_of_expression(condition_iter); auto start_iter = get_start_of_expression(condition_iter);

16
tests/source_key_test.cc

@ -2104,6 +2104,22 @@ int main() {
iter.forward_to_line_end(); iter.forward_to_line_end();
g_assert(buffer->get_insert()->get_iter() == iter); g_assert(buffer->get_insert()->get_iter() == iter);
} }
{
buffer->set_text(" if(true)\n"
" ;\n"
"\n"
"\n");
auto iter = buffer->get_iter_at_line(3);
buffer->place_cursor(iter);
view.on_key_press_event(&event);
g_assert(buffer->get_text() == " if(true)\n"
" ;\n"
"\n"
" \n");
iter = buffer->get_iter_at_line(3);
iter.forward_to_line_end();
g_assert(buffer->get_insert()->get_iter() == iter);
}
{ {
view.set_tab_char_and_size('\t', 1); view.set_tab_char_and_size('\t', 1);
buffer->set_text("\t\tif(true)\n" buffer->set_text("\t\tif(true)\n"

Loading…
Cancel
Save