Introduction
Introduction Statistics Contact Development Disclaimer Help
tvi: ignore failed motions - neatvi - [fork] simple vi-type editor with UTF-8 s…
git clone git://src.adamsgaard.dk/neatvi
Log
Files
Refs
README
---
commit 935b8d71369e450e05f330e50caf3594243a0439
parent a64cb496ec7b0bed834969f1cf845e7d3c0b6d31
Author: Ali Gholami Rudi <[email protected]>
Date: Thu, 14 May 2015 18:17:12 +0430
vi: ignore failed motions
Diffstat:
M vi.c | 37 ++++++++++++++++++++++-------…
1 file changed, 26 insertions(+), 11 deletions(-)
---
diff --git a/vi.c b/vi.c
t@@ -128,7 +128,7 @@ static void lbuf_postindents(struct lbuf *lb, int *r, int …
break;
}
-static void lbuf_findchar(struct lbuf *lb, int *row, int *col, char *cs, int c…
+static int lbuf_findchar(struct lbuf *lb, int *row, int *col, char *cs, int cm…
{
int dir = (cmd == 'f' || cmd == 't') ? +1 : -1;
int c = *col;
t@@ -145,6 +145,7 @@ static void lbuf_findchar(struct lbuf *lb, int *row, int *…
*col = c;
if (!n && (cmd == 't' || cmd == 'T'))
lbuf_lnnext(lb, row, col, -dir);
+ return n != 0;
}
static int lbuf_search(struct lbuf *lb, char *kw, int dir, int *r, int *c, int…
t@@ -360,19 +361,23 @@ static int vi_motion(int *row, int *col, int pre1, int p…
break;
case 'f':
if ((cs = vi_char()))
- lbuf_findchar(xb, row, col, cs, mv, pre);
+ if (lbuf_findchar(xb, row, col, cs, mv, pre))
+ return -1;
break;
case 'F':
if ((cs = vi_char()))
- lbuf_findchar(xb, row, col, cs, mv, pre);
+ if (lbuf_findchar(xb, row, col, cs, mv, pre))
+ return -1;
break;
case ';':
if (vi_charlast[0])
- lbuf_findchar(xb, row, col, vi_charlast, vi_charcmd, p…
+ if (lbuf_findchar(xb, row, col, vi_charlast, vi_charcm…
+ return -1;
break;
case ',':
if (vi_charlast[0])
- lbuf_findchar(xb, row, col, vi_charlast, vi_charcmd, -…
+ if (lbuf_findchar(xb, row, col, vi_charlast, vi_charcm…
+ return -1;
break;
case 'h':
for (i = 0; i < pre; i++)
t@@ -386,11 +391,13 @@ static int vi_motion(int *row, int *col, int pre1, int p…
break;
case 't':
if ((cs = vi_char()))
- lbuf_findchar(xb, row, col, cs, mv, pre);
+ if (lbuf_findchar(xb, row, col, cs, mv, pre))
+ return -1;
break;
case 'T':
if ((cs = vi_char()))
- lbuf_findchar(xb, row, col, cs, mv, pre);
+ if (lbuf_findchar(xb, row, col, cs, mv, pre))
+ return -1;
break;
case 'B':
for (i = 0; i < pre; i++)
t@@ -436,16 +443,20 @@ static int vi_motion(int *row, int *col, int pre1, int p…
*col = pre - 1;
break;
case '/':
- vi_search(mv, pre, row, col);
+ if (vi_search(mv, pre, row, col))
+ return -1;
break;
case '?':
- vi_search(mv, pre, row, col);
+ if (vi_search(mv, pre, row, col))
+ return -1;
break;
case 'n':
- vi_search(mv, pre, row, col);
+ if (vi_search(mv, pre, row, col))
+ return -1;
break;
case 'N':
- vi_search(mv, pre, row, col);
+ if (vi_search(mv, pre, row, col))
+ return -1;
break;
case 127:
case TK_CTL('h'):
t@@ -644,6 +655,8 @@ static void vc_motion(int cmd, int pre1)
} else if (!(mv = vi_motion(&r2, &c2, pre1, pre2))) {
return;
}
+ if (mv < 0)
+ return;
if (!strchr("fFtTeE$", mv))
closed = 0;
lnmode = c2 < 0;
t@@ -849,6 +862,8 @@ static void vi(void)
if ((pre1 = vi_prefix()) < 0)
continue;
mv = vi_motion(&xrow, &xcol, pre1, 0);
+ if (mv < 0)
+ continue;
if (mv) {
if (strchr("\'GHML/?", mv))
lbuf_mark(xb, '\'', orow);
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.