Browse Source

Fixed javascript indentation outside brackets when line starts with (, [ or {

merge-requests/391/head
eidheim 7 years ago
parent
commit
dd3a02fc7d
  1. 10
      src/source.cc
  2. 14
      tests/source_key_test.cc

10
src/source.cc

@ -664,7 +664,8 @@ void Source::View::setup_format_style(bool is_generic_view) {
try { try {
auto start = get_iter_at_line_offset(atoi(sm[2].str().c_str()) - 1, atoi(sm[3].str().c_str()) - 1); auto start = get_iter_at_line_offset(atoi(sm[2].str().c_str()) - 1, atoi(sm[3].str().c_str()) - 1);
++num_errors; ++num_errors;
while(start.ends_line() && start.backward_char()) {} while(start.ends_line() && start.backward_char()) {
}
auto end = start; auto end = start;
end.forward_char(); end.forward_char();
if(start == end) if(start == end)
@ -1816,7 +1817,12 @@ bool Source::View::on_key_press_event_bracket_language(GdkEventKey *key) {
// [\n 1, 2, 3,\n // [\n 1, 2, 3,\n
// return (\n // return (\n
// ReactDOM.render(\n <div>\n // ReactDOM.render(\n <div>\n
if((*start_iter == '[' && *iter != ']') || (*start_iter == '(' && *iter != ')') || (*start_iter == '{' && *iter != '}')) { Gtk::TextIter found_iter;
auto after_start_iter = start_iter;
after_start_iter.forward_char();
if((*start_iter == '[' && (!find_close_symbol_forward(after_start_iter, found_iter, '[', ']') || found_iter > iter)) ||
(*start_iter == '(' && (!find_close_symbol_forward(after_start_iter, found_iter, '(', ')') || found_iter > iter)) ||
(*start_iter == '{' && (!find_close_symbol_forward(after_start_iter, found_iter, '{', '}') || found_iter > iter))) {
get_buffer()->insert_at_cursor('\n' + tabs + tab); get_buffer()->insert_at_cursor('\n' + tabs + tab);
scroll_to(get_buffer()->get_insert()); scroll_to(get_buffer()->get_insert());
return true; return true;

14
tests/source_key_test.cc

@ -2462,6 +2462,20 @@ int main() {
" "); " ");
g_assert(buffer->get_insert()->get_iter() == buffer->end()); g_assert(buffer->get_insert()->get_iter() == buffer->end());
} }
{
buffer->set_text(" {}");
view.on_key_press_event(&event);
g_assert(buffer->get_text() == " {}\n"
" ");
g_assert(buffer->get_insert()->get_iter() == buffer->end());
}
{
buffer->set_text("{}");
view.on_key_press_event(&event);
g_assert(buffer->get_text() == "{}\n"
"");
g_assert(buffer->get_insert()->get_iter() == buffer->end());
}
} }
{ {
auto language = language_manager->get_language("markdown"); auto language = language_manager->get_language("markdown");

Loading…
Cancel
Save