summaryrefslogtreecommitdiff
path: root/src/selection.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2014-12-19 13:45:38 +0000
committerMaxime Coste <frrrwww@gmail.com>2014-12-19 13:58:33 +0000
commit116ea7364ab70703cea4a6fc2ce34c42b99fc13e (patch)
treee06990a9bb1a09f34d66d8ffbad00a859de1b8cc /src/selection.cc
parentc454cf137971fda09c0c0a3af6acea952efc2f3a (diff)
Restore some special behaviours, I missed them in interactive mode.
Diffstat (limited to 'src/selection.cc')
-rw-r--r--src/selection.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/selection.cc b/src/selection.cc
index a9623a73..d5f72eb3 100644
--- a/src/selection.cc
+++ b/src/selection.cc
@@ -443,7 +443,11 @@ BufferIterator prepare_insert(Buffer& buffer, const Selection& sel, InsertMode m
case InsertMode::Replace:
return erase(buffer, sel);
case InsertMode::Append:
- return utf8::next(buffer.iterator_at(sel.max()), buffer.end());
+ {
+ // special case for end of lines, append to current line instead
+ auto pos = buffer.iterator_at(sel.max());
+ return *pos == '\n' ? pos : utf8::next(pos, buffer.end());
+ }
case InsertMode::InsertAtLineBegin:
return buffer.iterator_at(sel.min().line);
case InsertMode::AppendAtLineEnd: