From 63d4c8c3114862a49a2a4a54b2f229f9260bf291 Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Wed, 4 Jul 2018 19:42:32 +1000 Subject: Change `a` on end of line behaviour to be consistent `a` will just jump on next line, `a` on last end of line opens a new line beneath it. Fixes #1164 --- src/input_handler.cc | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'src/input_handler.cc') diff --git a/src/input_handler.cc b/src/input_handler.cc index 51453e08..cf9773c9 100644 --- a/src/input_handler.cc +++ b/src/input_handler.cc @@ -1117,7 +1117,7 @@ public: { for (auto& sel : selections) { - if (sel.cursor() > sel.anchor() and sel.cursor().column > 0) + if (sel.cursor() > sel.anchor() and sel.cursor() > BufferCoord{0, 0}) sel.cursor() = context().buffer().char_prev(sel.cursor()); } } @@ -1362,11 +1362,9 @@ private: case InsertMode::Append: for (auto& sel : selections) { - sel.set(sel.min(), sel.max()); - auto& cursor = sel.cursor(); - // special case for end of lines, append to current line instead - if (cursor.column != buffer[cursor.line].length() - 1) - cursor = buffer.char_next(cursor); + sel.set(sel.min(), buffer.char_next(sel.max())); + if (sel.cursor() == buffer.end_coord()) + buffer.insert(buffer.end_coord(), "\n"); } break; case InsertMode::AppendAtLineEnd: @@ -1434,7 +1432,7 @@ private: ScopedEdition m_edition; InsertCompleter m_completer; - bool m_restore_cursor; + const bool m_restore_cursor; bool m_autoshowcompl; Timer m_idle_timer; bool m_in_end = false; -- cgit v1.2.3