about summary refs log tree commit diff
path: root/Src/Zle/zle_move.c
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Zle/zle_move.c')
-rw-r--r--Src/Zle/zle_move.c35
1 files changed, 27 insertions, 8 deletions
diff --git a/Src/Zle/zle_move.c b/Src/Zle/zle_move.c
index 9189218f1..e2096f6cf 100644
--- a/Src/Zle/zle_move.c
+++ b/Src/Zle/zle_move.c
@@ -228,6 +228,7 @@ vimatchbracket(char **args)
 
   otog:
     if (cs == ll || line[cs] == '\n') {
+	feep();
 	cs = ocs;
 	return 1;
     }
@@ -272,6 +273,7 @@ vimatchbracket(char **args)
 	    ct++;
     }
     if (cs < 0 || cs >= ll) {
+	feep();
 	cs = ocs;
 	return 1;
     } else if(dir > 0 && virangeflag)
@@ -293,8 +295,10 @@ viforwardchar(char **args)
 	zmult = n;
 	return ret;
     }
-    if (cs >= lim)
+    if (cs >= lim) {
+	feep();
 	return 1;
+    }
     while (n-- && cs < lim)
 	cs++;
     return 0;
@@ -313,8 +317,10 @@ vibackwardchar(char **args)
 	zmult = n;
 	return ret;
     }
-    if (cs == findbol())
+    if (cs == findbol()) {
+	feep();
 	return 1;
+    }
     while (n--) {
 	cs--;
 	if (cs < 0 || line[cs] == '\n') {
@@ -331,11 +337,14 @@ viendofline(char **args)
 {
     int oldcs = cs, n = zmult;
 
-    if (n < 1)
+    if (n < 1) {
+	feep();
 	return 1;
+    }
     while(n--) {
 	if (cs > ll) {
 	    cs = oldcs;
+	    feep();
 	    return 1;
 	}
 	cs = findeol() + 1;
@@ -376,7 +385,7 @@ vifindprevchar(char **args)
 	tailadd = 0;
 	return virepeatfind(args);
     }
-    return 1;
+    return 0;
 }
 
 /**/
@@ -409,8 +418,10 @@ virepeatfind(char **args)
 {
     int ocs = cs, n = zmult;
 
-    if (!vfinddir)
+    if (!vfinddir) {
+	feep();
 	return 1;
+    }
     if (n < 0) {
 	int ret;
 	zmult = -n;
@@ -423,6 +434,7 @@ virepeatfind(char **args)
 	    cs += vfinddir;
 	while (cs >= 0 && cs < ll && line[cs] != vfindchar && line[cs] != '\n');
 	if (cs < 0 || cs >= ll || line[cs] == '\n') {
+	    feep();
 	    cs = ocs;
 	    return 1;
 	}
@@ -468,8 +480,10 @@ visetmark(char **args)
     int ch;
 
     ch = getkey(0);
-    if (ch < 'a' || ch > 'z')
+    if (ch < 'a' || ch > 'z') {
+	feep();
 	return 1;
+    }
     ch -= 'a';
     vimarkcs[ch] = cs;
     vimarkline[ch] = histline;
@@ -486,14 +500,19 @@ vigotomark(char **args)
     if (ch == c)
 	ch = 26;
     else {
-	if (ch < 'a' || ch > 'z')
+	if (ch < 'a' || ch > 'z') {
+	    feep();
 	    return 1;
+	}
 	ch -= 'a';
     }
-    if (!vimarkline[ch])
+    if (!vimarkline[ch]) {
+	feep();
 	return 1;
+    }
     if (curhist != vimarkline[ch] && !zle_goto_hist(vimarkline[ch], 0, 0)) {
 	vimarkline[ch] = 0;
+	feep();
 	return 1;
     }
     cs = vimarkcs[ch];