Richard Kojedzinszky writes:
authorEric Andersen <andersen@codepoet.org>
Wed, 4 Feb 2004 11:19:44 +0000 (11:19 -0000)
committerEric Andersen <andersen@codepoet.org>
Wed, 4 Feb 2004 11:19:44 +0000 (11:19 -0000)
Hi,

I've noticed the bug also, and here is another patch for it. I hope it'll
not introduce more bugs. Not too nice, but works for me.

Here it is for busybox-1.00-pre6

editors/vi.c

index ac3a175afff4d0305ec5e922d4969dbb206a3b06..57b011444bc4d3b512fafd6c4b81b91731537336 100644 (file)
@@ -19,7 +19,7 @@
  */
 
 static const char vi_Version[] =
-       "$Id: vi.c,v 1.31 2004/01/21 10:59:45 bug1 Exp $";
+       "$Id: vi.c,v 1.32 2004/02/04 11:19:44 andersen Exp $";
 
 /*
  * To compile for standalone use:
@@ -1669,10 +1669,13 @@ static Byte find_range(Byte ** start, Byte ** stop, Byte c)
                q = dot;
        } else if (strchr("wW", c)) {
                do_cmd(c);              // execute movement cmd
-               // 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 we are at the next word's first char
+               // step back one char
+               // but check the possibilities when it is true
+               if (dot > text && ((isspace(dot[0]) && !isspace(dot[0]))
+                               || (ispunct(dot[-1]) && !ispunct(dot[0]))
+                               || (isalnum(dot[-1]) && !isalnum(dot[0]))))
+                       dot--;          // move back off of next word
                if (dot > text && *dot == '\n')
                        dot--;          // stay off NL
                q = dot;