Browse Source

Fixes backspace and delete key for files with CR+LF line endings

merge-requests/365/head
eidheim 9 years ago
parent
commit
7362e65af3
  1. 14
      src/source.cc

14
src/source.cc

@ -1543,10 +1543,11 @@ bool Source::View::on_key_press_event_basic(GdkEventKey* key) {
}
}
if(do_smart_backspace) {
auto line_start_iter=iter;
if(line_start_iter.backward_chars(line.size())) {
line_start_iter.backward_char();
get_buffer()->erase(iter, line_start_iter);
auto previous_line_end_iter=iter;
if(previous_line_end_iter.backward_chars(line.size()+1)) {
if(!previous_line_end_iter.ends_line()) // For CR+LF
previous_line_end_iter.backward_char();
get_buffer()->erase(previous_line_end_iter, iter);
return true;
}
}
@ -1561,14 +1562,17 @@ bool Source::View::on_key_press_event_basic(GdkEventKey* key) {
break;
}
if(iter.ends_line()) {
if(*iter=='\r') // For CR+LF
iter.forward_char();
if(!iter.forward_char())
do_smart_delete=false;
break;
}
} while(iter.forward_char());
if(do_smart_delete) {
if(!insert_iter.starts_line())
if(!insert_iter.starts_line()) {
while((*iter==' ' || *iter=='\t') && iter.forward_char()) {}
}
get_buffer()->erase(insert_iter, iter);
return true;
}

Loading…
Cancel
Save