summaryrefslogtreecommitdiffstats
path: root/linenoise/linenoise.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2015-10-01 07:04:53 -0700
committerKaz Kylheku <kaz@kylheku.com>2015-10-01 07:04:53 -0700
commit2d234f9d416cab25fb7d3d334bcfe1ef7ffa461f (patch)
treedbbaadb050fb8851bfc12304046dcb61fe6143a1 /linenoise/linenoise.c
parentca0ca229837e344df05bfa79333b1ed4993f9719 (diff)
downloadtxr-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.c5
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);
}
}
}