@ -1630,6 +1630,10 @@ bool Source::View::on_key_press_event_basic(GdkEventKey* key) {
iter=get_buffer()->get_insert()->get_iter();
auto tabs=get_line_before(get_tabs_end_iter(iter));
auto previous_iter=iter;
if(previous_iter.backward_char() && *previous_iter==':' && language && language->get_id()=="python") // Python indenting after :
tabs+=tab;
else {
int line_nr=iter.get_line();
if(iter.ends_line() && (line_nr+1)<get_buffer()->get_line_count()) {
auto next_line_tabs=get_line_before(get_tabs_end_iter(line_nr+1));
@ -1639,6 +1643,7 @@ bool Source::View::on_key_press_event_basic(GdkEventKey* key) {
return true;
}
get_buffer()->insert_at_cursor("\n"+tabs);
scroll_to(get_buffer()->get_insert());
@ -1229,10 +1229,14 @@ void Source::LanguageProtocolView::setup_autocomplete() {
// In case ( is missing in insert but is present in label
if(label.size()>insert.size() && label.back()==')' && insert.find('(')==std::string::npos) {
auto pos=label.find('(');
if(pos!=std::string::npos && pos==insert.size() && pos+1<label.size())
if(pos!=std::string::npos && pos==insert.size() && pos+1<label.size()) {
if(pos+2==label.size()) // If no parameters
insert+="()";
else
insert+="(${1:"+label.substr(pos+1, label.size()-1-(pos+1))+"})";
insert=label;
auto kind=it->second.get<unsigned>("kind", 0);