From ee829065cb7c52e3dfb74b35939ef08b9578a0b5 Mon Sep 17 00:00:00 2001
From: Glenn L McGrath <bug1@ihug.co.nz>
Date: Wed, 21 Jan 2004 10:59:45 +0000
Subject: Patch by Richard Kojedzinszky, when using END at end of lines it was 
 skipping to next line, cw command was leaving one char in buffer

---
 editors/vi.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/editors/vi.c b/editors/vi.c
index 35ce172d6..ac3a175af 100644
--- a/editors/vi.c
+++ b/editors/vi.c
@@ -19,7 +19,7 @@
  */
 
 static const char vi_Version[] =
-	"$Id: vi.c,v 1.30 2003/12/23 20:45:14 andersen Exp $";
+	"$Id: vi.c,v 1.31 2004/01/21 10:59:45 bug1 Exp $";
 
 /*
  * To compile for standalone use:
@@ -1669,7 +1669,9 @@ static Byte find_range(Byte ** start, Byte ** stop, Byte c)
 		q = dot;
 	} else if (strchr("wW", c)) {
 		do_cmd(c);		// execute movement cmd
-		if (dot > text)
+		// if we are at the next word's first char
+		// step back one char
+		if (dot > text && isspace(dot[-1]))
 			dot--;		// move back off of next word
 		if (dot > text && *dot == '\n')
 			dot--;		// stay off NL
@@ -3195,7 +3197,7 @@ key_cmd_mode:
 		if (cmdcnt-- > 1) {
 			do_cmd(c);
 		}				// repeat cnt
-		dot = end_line(dot + 1);
+		dot = end_line(dot);
 		break;
 	case '%':			// %- find matching char of pair () [] {}
 		for (q = dot; q < end && *q != '\n'; q++) {
-- 
cgit v1.2.3