]> git.eshelyaron.com Git - emacs.git/commitdiff
(Fforward_word): Handle fields even if would have hit
authorRichard M. Stallman <rms@gnu.org>
Tue, 9 Nov 1999 19:00:59 +0000 (19:00 +0000)
committerRichard M. Stallman <rms@gnu.org>
Tue, 9 Nov 1999 19:00:59 +0000 (19:00 +0000)
an edge of the buffer.  Return nil if affected by fields.

src/syntax.c

index 60501f9677f32ffba637cdd0e9c4923a8e0fcdb7..da28d6eed6d7b550a7f8747e3b6d3248cdedfba8 100644 (file)
@@ -1222,26 +1222,24 @@ scan_words (from, count)
 DEFUN ("forward-word", Fforward_word, Sforward_word, 1, 1, "p",
   "Move point forward ARG words (backward if ARG is negative).\n\
 Normally returns t.\n\
-If an edge of the buffer is reached, point is left there\n\
-and nil is returned.")
+If an edge of the buffer or a field boundary is reached, point is left there\n\
+and the function returns nil.")
   (count)
      Lisp_Object count;
 {
-  int val, prompt_end;
+  int orig_val, val;
   CHECK_NUMBER (count, 0);
 
-  if (!(val = scan_words (PT, XINT (count))))
-    {
-      SET_PT (XINT (count) > 0 ? ZV : BEGV);
-      return Qnil;
-    }
+  val = orig_val = scan_words (PT, XINT (count));
+  if (! orig_val)
+    val = XINT (count) > 0 ? ZV : BEGV;
 
   /* Avoid jumping out of an input field.  */
   val = XFASTINT (Fconstrain_to_field (make_number (val), make_number (PT),
                                       Qt, Qnil));
 
   SET_PT (val);
-  return Qt;
+  return (val == orig_val ? Qt : Qnil);
 }
 \f
 Lisp_Object skip_chars ();