Browse Source

JavaScript: improved indentation in multi-line expressions

merge-requests/389/head
eidheim 8 years ago
parent
commit
132bef6233
  1. 29
      src/source.cc

29
src/source.cc

@ -2073,15 +2073,30 @@ bool Source::View::on_key_press_event_bracket_language(GdkEventKey* key) {
// return (\n
// ReactDOM.render(\n <div>\n
if(open_non_curly_bracket_iter_found && (*open_non_curly_bracket_iter=='[' || *open_non_curly_bracket_iter=='(')) {
if(condition_iter.get_line()==open_non_curly_bracket_iter.get_line())
tabs=get_line_before(start_iter)+tab;
// If next line should have an extra tab:
if(condition_iter.get_line()==open_non_curly_bracket_iter.get_line()) {
get_buffer()->insert_at_cursor("\n"+tabs+tab);
scroll_to(get_buffer()->get_insert());
return true;
}
// Indent as in current or next line:
else {
start_iter=get_tabs_end_iter(get_buffer()->get_iter_at_line(condition_iter.get_line()));
tabs=get_line_before(start_iter);
auto start_iter=get_tabs_end_iter(get_buffer()->get_iter_at_line(condition_iter.get_line()));
auto tabs=get_line_before(start_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;
}
}
get_buffer()->insert_at_cursor("\n"+tabs);
scroll_to(get_buffer()->get_insert());
return true;
}
get_buffer()->insert_at_cursor("\n"+tabs);
scroll_to(get_buffer()->get_insert());
return true;
}
}

Loading…
Cancel
Save