Browse Source

Improved indentation and smart delete button implemented.

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

26
src/source.cc

@ -331,7 +331,7 @@ void Source::View::configure() {
for(unsigned c=0;c<tab_size;c++) for(unsigned c=0;c<tab_size;c++)
tab+=tab_char; tab+=tab_char;
tabs_regex=std::regex(std::string("^(")+tab_char+"*)(.*)$"); tabs_regex=std::regex("^([ \\t]*)(.*)$");
} }
void Source::View::set_tooltip_events() { void Source::View::set_tooltip_events() {
@ -842,10 +842,9 @@ bool Source::View::on_key_press_event(GdkEventKey* key) {
get_source_buffer()->end_user_action(); get_source_buffer()->end_user_action();
return true; return true;
} }
//"Smart" backspace key TODO: remove commented out lines if this works //"Smart" backspace key
else if(key->keyval==GDK_KEY_BackSpace && !get_buffer()->get_has_selection()) { else if(key->keyval==GDK_KEY_BackSpace && !get_buffer()->get_has_selection()) {
auto insert_it=get_buffer()->get_insert()->get_iter(); auto insert_it=get_buffer()->get_insert()->get_iter();
//int line_nr=insert_it.get_line();
auto line=get_line_before(); auto line=get_line_before();
std::smatch sm; std::smatch sm;
if(std::regex_match(line, sm, tabs_regex) && sm[1].str().size()==line.size()) { if(std::regex_match(line, sm, tabs_regex) && sm[1].str().size()==line.size()) {
@ -854,6 +853,21 @@ bool Source::View::on_key_press_event(GdkEventKey* key) {
get_buffer()->erase(insert_it, line_start_iter); get_buffer()->erase(insert_it, line_start_iter);
} }
} }
//"Smart" delete key
else if(key->keyval==GDK_KEY_Delete && !get_buffer()->get_has_selection()) {
auto insert_iter=get_buffer()->get_insert()->get_iter();
auto iter=insert_iter;
bool perform_smart_delete=false;
while(*iter==' ' || *iter=='\t' || iter.ends_line()) {
if(iter.ends_line())
perform_smart_delete=true;
if(!iter.forward_char()) {
break;
}
}
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);
get_source_buffer()->end_user_action(); get_source_buffer()->end_user_action();
@ -1095,9 +1109,9 @@ void Source::ClangViewParse::configure() {
} }
} }
bracket_regex=std::regex(std::string("^(")+tab_char+"*).*\\{ *$"); bracket_regex=std::regex("^([ \\t]*).*\\{ *$");
no_bracket_statement_regex=std::regex(std::string("^(")+tab_char+"*)(if|for|else if|catch|while) *\\(.*[^;}] *$"); no_bracket_statement_regex=std::regex("^([ \\t]*)(if|for|else if|catch|while) *\\(.*[^;}] *$");
no_bracket_no_para_statement_regex=std::regex(std::string("^(")+tab_char+"*)(else|try|do) *$"); no_bracket_no_para_statement_regex=std::regex("^([ \\t]*)(else|try|do) *$");
} }
Source::ClangViewParse::~ClangViewParse() { Source::ClangViewParse::~ClangViewParse() {

Loading…
Cancel
Save