From 7f17644a6bfcaee2fd6c5a013da70d7c018dced3 Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Thu, 23 May 2013 14:17:25 +0200 Subject: Buffer insert and erase takes coord rather than iterators --- src/editor.cc | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) (limited to 'src/editor.cc') diff --git a/src/editor.cc b/src/editor.cc index 74fab23f..5e7115be 100644 --- a/src/editor.cc +++ b/src/editor.cc @@ -38,7 +38,7 @@ void Editor::erase() scoped_edition edition(*this); for (auto& sel : m_selections) { - m_buffer->erase(sel.begin(), sel.end()); + m_buffer->erase(sel.begin().coord(), sel.end().coord()); avoid_eol(sel); } } @@ -53,7 +53,7 @@ static BufferIterator prepare_insert(Buffer& buffer, const Selection& sel, case InsertMode::Replace: { BufferIterator pos = sel.begin(); - buffer.erase(sel.begin(), sel.end()); + buffer.erase(sel.begin().coord(), sel.end().coord()); return pos; } case InsertMode::Append: @@ -72,17 +72,14 @@ static BufferIterator prepare_insert(Buffer& buffer, const Selection& sel, case InsertMode::InsertAtNextLineBegin: return buffer.iterator_at_line_end(sel.end()-1); case InsertMode::OpenLineBelow: - { - LineCount line = (sel.end() - 1).line(); - buffer.insert(buffer.iterator_at_line_end(line), "\n"); - return buffer.iterator_at_line_begin(line + 1); - } case InsertMode::OpenLineAbove: { - auto pos = buffer.iterator_at_line_begin(sel.begin()); - buffer.insert(pos, "\n"); - return pos; + auto line = mode == InsertMode::OpenLineAbove ? + sel.begin().line() : (sel.end() - 1).line() + 1; + buffer.insert(line, "\n"); + return {buffer, line}; } + } kak_assert(false); return BufferIterator{}; -- cgit v1.2.3