From a9d5f126a017bd06895fc5b05399a0ef3b8da4f1 Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Wed, 2 Jan 2013 13:49:02 +0100 Subject: [PATCH] Editor: preserve captures accross movements --- src/editor.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/editor.cc b/src/editor.cc index 14c68c6b..7b91b04a 100644 --- a/src/editor.cc +++ b/src/editor.cc @@ -156,7 +156,8 @@ void Editor::move_selections(CharCount offset, SelectMode mode) auto limit = offset < 0 ? buffer().iterator_at_line_begin(last) : utf8::previous(buffer().iterator_at_line_end(last)); last = utf8::advance(last, limit, offset); - sel = Selection(mode == SelectMode::Extend ? sel.first() : last, last); + sel.first() = mode == SelectMode::Extend ? sel.first() : last; + sel.last() = last; sel.avoid_eol(); } sort_and_merge_overlapping(m_selections); @@ -170,7 +171,8 @@ void Editor::move_selections(LineCount offset, SelectMode mode) BufferCoord pos = sel.last().coord(); pos.line += offset; BufferIterator last = utf8::finish(m_buffer->iterator_at(pos, true)); - sel = Selection(mode == SelectMode::Extend ? sel.first() : last, last); + sel.first() = mode == SelectMode::Extend ? sel.first() : last; + sel.last() = last; sel.avoid_eol(); } sort_and_merge_overlapping(m_selections);