Skip to content
This repository was archived by the owner on Jun 25, 2020. It is now read-only.

Commit 8cfa234

Browse files
committed
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.
1 parent e68a697 commit 8cfa234

File tree

2 files changed

+18
-9
lines changed

2 files changed

+18
-9
lines changed

src/source.cc

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1630,13 +1630,18 @@ bool Source::View::on_key_press_event_basic(GdkEventKey* key) {
16301630
iter=get_buffer()->get_insert()->get_iter();
16311631
auto tabs=get_line_before(get_tabs_end_iter(iter));
16321632

1633-
int line_nr=iter.get_line();
1634-
if(iter.ends_line() && (line_nr+1)<get_buffer()->get_line_count()) {
1635-
auto next_line_tabs=get_line_before(get_tabs_end_iter(line_nr+1));
1636-
if(next_line_tabs.size()>tabs.size()) {
1637-
get_buffer()->insert_at_cursor("\n"+next_line_tabs);
1638-
scroll_to(get_buffer()->get_insert());
1639-
return true;
1633+
auto previous_iter=iter;
1634+
if(previous_iter.backward_char() && *previous_iter==':' && language && language->get_id()=="python") // Python indenting after :
1635+
tabs+=tab;
1636+
else {
1637+
int line_nr=iter.get_line();
1638+
if(iter.ends_line() && (line_nr+1)<get_buffer()->get_line_count()) {
1639+
auto next_line_tabs=get_line_before(get_tabs_end_iter(line_nr+1));
1640+
if(next_line_tabs.size()>tabs.size()) {
1641+
get_buffer()->insert_at_cursor("\n"+next_line_tabs);
1642+
scroll_to(get_buffer()->get_insert());
1643+
return true;
1644+
}
16401645
}
16411646
}
16421647
get_buffer()->insert_at_cursor("\n"+tabs);

src/source_language_protocol.cc

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1229,8 +1229,12 @@ void Source::LanguageProtocolView::setup_autocomplete() {
12291229
// In case ( is missing in insert but is present in label
12301230
if(label.size()>insert.size() && label.back()==')' && insert.find('(')==std::string::npos) {
12311231
auto pos=label.find('(');
1232-
if(pos!=std::string::npos && pos==insert.size() && pos+1<label.size())
1233-
insert+="(${1:"+label.substr(pos+1, label.size()-1-(pos+1))+"})";
1232+
if(pos!=std::string::npos && pos==insert.size() && pos+1<label.size()) {
1233+
if(pos+2==label.size()) // If no parameters
1234+
insert+="()";
1235+
else
1236+
insert+="(${1:"+label.substr(pos+1, label.size()-1-(pos+1))+"})";
1237+
}
12341238
}
12351239
}
12361240
else {

0 commit comments

Comments
 (0)