Browse Source

Slight improvement to find_close_symbol_forward and find_open_symbol_backward

pipelines/235045657
eidheim 5 years ago
parent
commit
e3f294f5c8
  1. 8
      src/source.cpp
  2. 28
      tests/source_key_test.cpp

8
src/source.cpp

@ -1819,9 +1819,9 @@ bool Source::View::find_close_symbol_forward(Gtk::TextIter iter, Gtk::TextIter &
else { else {
long curly_count = 0; long curly_count = 0;
do { do {
if(*iter == positive_char && is_code_iter(iter)) if(curly_count == 0 && *iter == positive_char && is_code_iter(iter))
count++; count++;
else if(*iter == negative_char && is_code_iter(iter)) { else if(curly_count == 0 && *iter == negative_char && is_code_iter(iter)) {
if(count == 0) { if(count == 0) {
found_iter = iter; found_iter = iter;
return true; return true;
@ -1859,14 +1859,14 @@ bool Source::View::find_open_symbol_backward(Gtk::TextIter iter, Gtk::TextIter &
else { else {
long curly_count = 0; long curly_count = 0;
do { do {
if(*iter == positive_char && is_code_iter(iter)) { if(curly_count == 0 && *iter == positive_char && is_code_iter(iter)) {
if(count == 0) { if(count == 0) {
found_iter = iter; found_iter = iter;
return true; return true;
} }
count++; count++;
} }
else if(*iter == negative_char && is_code_iter(iter)) else if(curly_count == 0 && *iter == negative_char && is_code_iter(iter))
count--; count--;
else if(*iter == '{' && is_code_iter(iter)) { else if(*iter == '{' && is_code_iter(iter)) {
if(curly_count == 0) if(curly_count == 0)

28
tests/source_key_test.cpp

@ -2483,6 +2483,34 @@ int main() {
iter.backward_chars(12); iter.backward_chars(12);
g_assert(buffer->get_insert()->get_iter() == iter); g_assert(buffer->get_insert()->get_iter() == iter);
} }
{
buffer->set_text(" test(\n"
" <div onClick={() => {}}>");
auto iter = buffer->end();
buffer->place_cursor(iter);
view.on_key_press_event(&event);
g_assert(buffer->get_text() == " test(\n"
" <div onClick={() => {}}>\n"
" \n"
" </div>");
iter = buffer->end();
iter.backward_chars(11);
g_assert(buffer->get_insert()->get_iter() == iter);
}
{
buffer->set_text(" test(\n"
" <>");
auto iter = buffer->end();
buffer->place_cursor(iter);
view.on_key_press_event(&event);
g_assert(buffer->get_text() == " test(\n"
" <>\n"
" \n"
" </>");
iter = buffer->end();
iter.backward_chars(8);
g_assert(buffer->get_insert()->get_iter() == iter);
}
{ {
buffer->set_text(" test(\n" buffer->set_text(" test(\n"
" <div>\n" " <div>\n"

Loading…
Cancel
Save