diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/selection.cc | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/selection.cc b/src/selection.cc index 99b21c3e..f893f21f 100644 --- a/src/selection.cc +++ b/src/selection.cc @@ -394,18 +394,18 @@ void SelectionList::for_each(ApplyFunc func, bool may_append) } else { - ForwardChangesTracker changes_tracker; for (size_t index = 0; index < m_selections.size(); ++index) { - auto& sel = m_selections[index]; - - sel.anchor() = changes_tracker.get_new_coord_tolerant(sel.anchor()); - sel.cursor() = changes_tracker.get_new_coord_tolerant(sel.cursor()); - kak_assert(m_buffer->is_valid(sel.anchor()) and m_buffer->is_valid(sel.cursor())); - - func(index, sel); - + ForwardChangesTracker changes_tracker; + func(index, m_selections[index]); changes_tracker.update(*m_buffer, m_timestamp); + for (size_t i = index + 1; i < m_selections.size(); ++i) + { + auto& sel = m_selections[i]; + sel.anchor() = changes_tracker.get_new_coord_tolerant(sel.anchor()); + sel.cursor() = changes_tracker.get_new_coord_tolerant(sel.cursor()); + kak_assert(m_buffer->is_valid(sel.anchor()) and m_buffer->is_valid(sel.cursor())); + } } } |
