summaryrefslogtreecommitdiff
path: root/src/editor.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2013-05-23 14:17:25 +0200
committerMaxime Coste <frrrwww@gmail.com>2013-05-30 13:59:38 +0200
commit7f17644a6bfcaee2fd6c5a013da70d7c018dced3 (patch)
tree606b0e33668bbdb8dc394d6bd93b5a56a090bad7 /src/editor.cc
parent2902cc32757b53081bef759f267c0df2b1a7b813 (diff)
Buffer insert and erase takes coord rather than iterators
Diffstat (limited to 'src/editor.cc')
-rw-r--r--src/editor.cc17
1 files changed, 7 insertions, 10 deletions
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{};