Browse Source

Improved smart delete key.

merge-requests/365/head
eidheim 10 years ago
parent
commit
2b4eb18d93
  1. 18
      src/source.cc

18
src/source.cc

@ -1006,23 +1006,31 @@ 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();
if(!(insert_iter.starts_line() && insert_iter.ends_line())) {
auto iter=insert_iter; auto iter=insert_iter;
bool perform_smart_delete=false; bool perform_smart_delete=false;
if(iter.starts_line() && iter.ends_line()) {}
else if(iter.ends_line() && iter.forward_char()) {
if(!iter.ends_line()) {
bool first_line=true; bool first_line=true;
while(*iter==' ' || *iter=='\t' || (first_line && iter.ends_line())) { while((*iter==' ' || *iter=='\t' || (first_line && iter.ends_line())) && iter.forward_char()) {
if(iter.ends_line()) {
perform_smart_delete=true; perform_smart_delete=true;
if(first_line && iter.ends_line())
first_line=false; first_line=false;
} }
if(!iter.forward_char()) { }
}
else {
while((*iter==' ' || *iter=='\t') && iter.forward_char()) {
perform_smart_delete=true;
if(iter.ends_line()) {
iter.forward_char();
break; break;
} }
} }
}
if(perform_smart_delete && iter.backward_char()) if(perform_smart_delete && iter.backward_char())
get_buffer()->erase(insert_iter, iter); get_buffer()->erase(insert_iter, iter);
} }
}
bool stop=Gsv::View::on_key_press_event(key); bool stop=Gsv::View::on_key_press_event(key);
get_source_buffer()->end_user_action(); get_source_buffer()->end_user_action();

Loading…
Cancel
Save