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

Loading…
Cancel
Save