Browse Source

Improved smart delete key.

merge-requests/365/head
eidheim 10 years ago
parent
commit
1ac68ab708
  1. 26
      src/source.cc

26
src/source.cc

@ -1006,20 +1006,22 @@ bool Source::View::on_key_press_event(GdkEventKey* key) {
//"Smart" delete key //"Smart" delete key
else if(key->keyval==GDK_KEY_Delete && !get_buffer()->get_has_selection()) { else if(key->keyval==GDK_KEY_Delete && !get_buffer()->get_has_selection()) {
auto insert_iter=get_buffer()->get_insert()->get_iter(); auto insert_iter=get_buffer()->get_insert()->get_iter();
auto iter=insert_iter; if(!(insert_iter.starts_line() && insert_iter.ends_line())) {
bool perform_smart_delete=false; auto iter=insert_iter;
bool first_line=true; bool perform_smart_delete=false;
while(*iter==' ' || *iter=='\t' || (first_line && iter.ends_line())) { bool first_line=true;
if(iter.ends_line()) { while(*iter==' ' || *iter=='\t' || (first_line && iter.ends_line())) {
perform_smart_delete=true; if(iter.ends_line()) {
first_line=false; perform_smart_delete=true;
} first_line=false;
if(!iter.forward_char()) { }
break; if(!iter.forward_char()) {
break;
}
} }
if(perform_smart_delete && iter.backward_char())
get_buffer()->erase(insert_iter, iter);
} }
if(perform_smart_delete && iter.backward_char())
get_buffer()->erase(insert_iter, iter);
} }
bool stop=Gsv::View::on_key_press_event(key); bool stop=Gsv::View::on_key_press_event(key);

Loading…
Cancel
Save