tvi: ^E and ^Y commands - neatvi - [fork] simple vi-type editor with UTF-8 supp… | |
git clone git://src.adamsgaard.dk/neatvi | |
Log | |
Files | |
Refs | |
README | |
--- | |
commit 1211e16126a16bac24629d9810462a22a722e75c | |
parent bc9dd7dfbc434e6260ca5002cbc6501ced9adcb6 | |
Author: Ali Gholami Rudi <[email protected]> | |
Date: Tue, 12 May 2015 18:11:27 +0430 | |
vi: ^E and ^Y commands | |
Diffstat: | |
M vi.c | 36 ++++++++++++++++++++++++++---… | |
1 file changed, 30 insertions(+), 6 deletions(-) | |
--- | |
diff --git a/vi.c b/vi.c | |
t@@ -611,6 +611,24 @@ static void vc_join(int arg) | |
sbuf_free(sb); | |
} | |
+static int vi_scrollforeward(int cnt) | |
+{ | |
+ if (xtop >= lbuf_len(xb) - 1) | |
+ return 1; | |
+ xtop = MIN(lbuf_len(xb) - 1, xtop + cnt); | |
+ xrow = MAX(xrow, xtop); | |
+ return 0; | |
+} | |
+ | |
+static int vi_scrollbackward(int cnt) | |
+{ | |
+ if (xtop == 0) | |
+ return 1; | |
+ xtop = MAX(0, xtop - cnt); | |
+ xrow = MIN(xrow, xtop + xrows - 1); | |
+ return 0; | |
+} | |
+ | |
static void vi(void) | |
{ | |
int mark; | |
t@@ -643,21 +661,27 @@ static void vi(void) | |
redraw = 1; | |
break; | |
case TERMCTRL('b'): | |
- if (xtop == 0) | |
+ if (vi_scrollbackward((pre1 ? pre1 : 1) * (xro… | |
break; | |
- xtop = MAX(0, xtop - xrows + 1); | |
- xrow = MIN(xrow, xtop + xrows - 1); | |
lbuf_postindents(xb, &xrow, &xcol); | |
redraw = 1; | |
break; | |
case TERMCTRL('f'): | |
- if (xtop >= lbuf_len(xb) - 1) | |
+ if (vi_scrollforeward((pre1 ? pre1 : 1) * (xro… | |
break; | |
- xtop = MIN(lbuf_len(xb) - 1, xtop + xrows - 1); | |
- xrow = MAX(xrow, xtop); | |
lbuf_postindents(xb, &xrow, &xcol); | |
redraw = 1; | |
break; | |
+ case TERMCTRL('e'): | |
+ if (vi_scrollforeward((pre1 ? pre1 : 1))) | |
+ break; | |
+ redraw = 1; | |
+ break; | |
+ case TERMCTRL('y'): | |
+ if (vi_scrollbackward((pre1 ? pre1 : 1))) | |
+ break; | |
+ redraw = 1; | |
+ break; | |
case TERMCTRL('r'): | |
lbuf_redo(xb); | |
redraw = 1; |