diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2015-10-01 07:04:53 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2015-10-01 07:04:53 -0700 |
commit | 2d234f9d416cab25fb7d3d334bcfe1ef7ffa461f (patch) | |
tree | dbbaadb050fb8851bfc12304046dcb61fe6143a1 /linenoise/linenoise.c | |
parent | ca0ca229837e344df05bfa79333b1ed4993f9719 (diff) | |
download | txr-2d234f9d416cab25fb7d3d334bcfe1ef7ffa461f.tar.gz txr-2d234f9d416cab25fb7d3d334bcfe1ef7ffa461f.tar.bz2 txr-2d234f9d416cab25fb7d3d334bcfe1ef7ffa461f.zip |
linenoise: Ctrl-A/E overloaded in multi-line mode.
* linenoise/linenoise.c (edit_move_sol): If the cursor
is already at the beginning of a line, then move it
to the start of the buffer.
(edit_move_eol): If the cursor is at the end of the
line, then move it to the end of the buffer.
This also fixes a bug: previously, if the cursor was
at the end of the line already, it moved to the end
of the following line.
* txr.1: Documented.
Diffstat (limited to 'linenoise/linenoise.c')
-rw-r--r-- | linenoise/linenoise.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/linenoise/linenoise.c b/linenoise/linenoise.c index 01e48ed9..de12bdb4 100644 --- a/linenoise/linenoise.c +++ b/linenoise/linenoise.c @@ -1339,6 +1339,8 @@ static void edit_move_sol(lino_t *l) { if (l->dpos != dpos) { l->dpos = dpos; l->need_refresh = 1; + } else { + edit_move_home(l); } } } @@ -1357,12 +1359,13 @@ static void edit_move_eol(lino_t *l) { } else { size_t dpos = l->dpos; - dpos += strspn(l->data + dpos, "\r"); dpos += strcspn(l->data + dpos, "\r"); if (l->dpos != dpos) { l->dpos = dpos; l->need_refresh = 1; + } else { + edit_move_end(l); } } } |