|
|
|
@ -1534,6 +1534,35 @@ bool Source::ClangViewParse::on_key_press_event(GdkEventKey* key) { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//Indenting after ':'
|
|
|
|
|
|
|
|
else if(*iter==':') { |
|
|
|
|
|
|
|
auto previous_sentence_iter=get_buffer()->get_iter_at_line(iter.get_line()); |
|
|
|
|
|
|
|
while(previous_sentence_iter && (*previous_sentence_iter==tab_char || previous_sentence_iter.ends_line())) { |
|
|
|
|
|
|
|
previous_sentence_iter.backward_char(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if(!previous_sentence_iter.ends_line()) |
|
|
|
|
|
|
|
previous_sentence_iter.forward_char(); |
|
|
|
|
|
|
|
Gtk::TextIter start_of_previous_sentence_iter; |
|
|
|
|
|
|
|
if(find_start_of_closed_expression(previous_sentence_iter, start_of_previous_sentence_iter)) { |
|
|
|
|
|
|
|
std::smatch sm; |
|
|
|
|
|
|
|
auto start_previous_sentence=get_line_before(start_of_previous_sentence_iter); |
|
|
|
|
|
|
|
if(std::regex_match(start_previous_sentence, sm, tabs_regex)) { |
|
|
|
|
|
|
|
if(tabs.size()==(sm[1].str().size()+tab_size)) { |
|
|
|
|
|
|
|
auto start_line_iter=get_buffer()->get_iter_at_line(iter.get_line()); |
|
|
|
|
|
|
|
auto start_line_plus_tab_size=start_line_iter; |
|
|
|
|
|
|
|
for(size_t c=0;c<tab_size;c++) |
|
|
|
|
|
|
|
start_line_plus_tab_size.forward_char(); |
|
|
|
|
|
|
|
get_buffer()->erase(start_line_iter, start_line_plus_tab_size); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else { |
|
|
|
|
|
|
|
get_source_buffer()->insert_at_cursor("\n"+tabs+tab); |
|
|
|
|
|
|
|
scroll_to(get_source_buffer()->get_insert()); |
|
|
|
|
|
|
|
get_source_buffer()->end_user_action(); |
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
get_source_buffer()->insert_at_cursor("\n"+tabs); |
|
|
|
get_source_buffer()->insert_at_cursor("\n"+tabs); |
|
|
|
scroll_to(get_source_buffer()->get_insert()); |
|
|
|
scroll_to(get_source_buffer()->get_insert()); |
|
|
|
get_source_buffer()->end_user_action(); |
|
|
|
get_source_buffer()->end_user_action(); |
|
|
|
|