Browse Source

Language protocol: in workaround of missing '(' in autocomplete insert, now moves cursor after ')' in case of no parameters. Also added correct indentation on enter after ':' for Python.

merge-requests/382/head
eidheim 8 years ago
parent
commit
8cfa234624
  1. 19
      src/source.cc
  2. 8
      src/source_language_protocol.cc

19
src/source.cc

@ -1630,13 +1630,18 @@ 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));
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));
if(next_line_tabs.size()>tabs.size()) {
get_buffer()->insert_at_cursor("\n"+next_line_tabs);
scroll_to(get_buffer()->get_insert());
return true;
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));
if(next_line_tabs.size()>tabs.size()) {
get_buffer()->insert_at_cursor("\n"+next_line_tabs);
scroll_to(get_buffer()->get_insert());
return true;
}
}
}
get_buffer()->insert_at_cursor("\n"+tabs);

8
src/source_language_protocol.cc

@ -1229,8 +1229,12 @@ 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())
insert+="(${1:"+label.substr(pos+1, label.size()-1-(pos+1))+"})";
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))+"})";
}
}
}
else {

Loading…
Cancel
Save