summaryrefslogtreecommitdiff
path: root/src/editor.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2012-11-26 19:23:50 +0100
committerMaxime Coste <frrrwww@gmail.com>2012-11-26 19:23:50 +0100
commitcee0a2d128bb843cd4a65dcddb66188ea825553e (patch)
treecd89b5f1c528d90fcff585c665d447c9a6e3685c /src/editor.cc
parente77ca7a4be3adc8d11503b1186b8fac257a1624c (diff)
Append on end of line now appends to current line
Diffstat (limited to 'src/editor.cc')
-rw-r--r--src/editor.cc11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/editor.cc b/src/editor.cc
index eeffe41f..7ad9b610 100644
--- a/src/editor.cc
+++ b/src/editor.cc
@@ -38,10 +38,19 @@ static BufferIterator prepare_insert(Buffer& buffer, const Selection& sel,
case InsertMode::Replace:
return sel.begin();
case InsertMode::Append:
- return sel.end();
+ {
+ // special case for end of lines, append to current line instead
+ auto pos = std::max(sel.first(), sel.last());
+ if (pos.column() == buffer.line_length(pos.line()) - 1)
+ return pos;
+ else
+ return pos+1;
+ }
case InsertMode::InsertAtLineBegin:
return buffer.iterator_at_line_begin(sel.begin());
case InsertMode::AppendAtLineEnd:
+ return buffer.iterator_at_line_end(sel.end()-1)-1;
+ case InsertMode::InsertAtNextLineBegin:
return buffer.iterator_at_line_end(sel.end()-1);
case InsertMode::OpenLineBelow:
{