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
This commit is contained in:
Maxime Coste 2018-07-04 19:42:32 +10:00
parent 55a5ec3bbd
commit 63d4c8c311
7 changed files with 14 additions and 15 deletions

View File

@ -53,6 +53,10 @@ change to make Kakoune command model cleaner and more robust.
See <<highlighters#,`:doc highlighters`>>
* `a` on end of line is not treated specially anymore, it will start
inserting on the next character, which will be the first character
of the next line.
== Kakoune 2018.04.13
First official Kakoune release.

View File

@ -74,7 +74,7 @@ define-command -hidden c-family-indent-on-closing-curly-brace %[
define-command -hidden c-family-insert-on-closing-curly-brace %[
# add a semicolon after a closing brace if part of a class, union or struct definition
try %[ execute-keys -itersel -draft hm<a-x>B<a-x><a-k>\A\h*(class|struct|union|enum)<ret> a\;<esc> ]
try %[ execute-keys -itersel -draft hm<a-x>B<a-x><a-k>\A\h*(class|struct|union|enum)<ret> '<a-;>;i;<esc>' ]
]
define-command -hidden c-family-insert-on-newline %[ evaluate-commands -itersel -draft %[

View File

@ -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;

View File

@ -357,11 +357,7 @@ BufferCoord get_insert_pos(const Buffer& buffer, const Selection& sel,
case InsertMode::InsertCursor:
return sel.cursor();
case InsertMode::Append:
{
// special case for end of lines, append to current line instead
auto pos = sel.max();
return buffer.byte_at(pos) == '\n' ? pos : buffer.char_next(pos);
}
return buffer.char_next(sel.max());
case InsertMode::InsertAtLineBegin:
return sel.min().line;
case InsertMode::AppendAtLineEnd:

View File

@ -1 +1 @@
afoo<esc>.
ifoo<esc>.

View File

@ -1 +1 @@
reg @ amawww
reg @ imawww