IncrementalInserter: fix append mode when on line end
This commit is contained in:
parent
28cf772deb
commit
cb80ae139b
|
@ -385,7 +385,16 @@ IncrementalInserter::IncrementalInserter(Editor& editor, InsertMode mode)
|
||||||
{
|
{
|
||||||
case InsertMode::Insert: first = utf8_it(sel.end()) - 1; last = sel.begin(); break;
|
case InsertMode::Insert: first = utf8_it(sel.end()) - 1; last = sel.begin(); break;
|
||||||
case InsertMode::Replace: first = utf8_it(sel.end()) - 1; last = sel.begin(); break;
|
case InsertMode::Replace: first = utf8_it(sel.end()) - 1; last = sel.begin(); break;
|
||||||
case InsertMode::Append: first = sel.begin(); last = sel.end(); break;
|
case InsertMode::Append:
|
||||||
|
{
|
||||||
|
first = sel.begin();
|
||||||
|
last = std::max(sel.first(), sel.last());
|
||||||
|
// special case for end of lines, append to current line instead
|
||||||
|
auto coord = last.underlying_iterator().coord();
|
||||||
|
if (coord.column != buffer.line_length(coord.line) - 1)
|
||||||
|
++last;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case InsertMode::OpenLineBelow:
|
case InsertMode::OpenLineBelow:
|
||||||
case InsertMode::AppendAtLineEnd:
|
case InsertMode::AppendAtLineEnd:
|
||||||
|
@ -435,8 +444,8 @@ IncrementalInserter::~IncrementalInserter()
|
||||||
{
|
{
|
||||||
for (auto& sel : m_editor.m_selections)
|
for (auto& sel : m_editor.m_selections)
|
||||||
{
|
{
|
||||||
if (m_mode == InsertMode::Append)
|
if (m_mode == InsertMode::Append and sel.last().column() > 0)
|
||||||
sel = Selection(sel.first(), utf8::previous(sel.last()));
|
sel.last() = utf8::previous(sel.last());
|
||||||
sel.avoid_eol();
|
sel.avoid_eol();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user