From 2c6ea900ee425a3cfc23b625b4841b89af407e78 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Tue, 9 Nov 1999 19:00:59 +0000 Subject: [PATCH] (Fforward_word): Handle fields even if would have hit an edge of the buffer. Return nil if affected by fields. --- src/syntax.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/syntax.c b/src/syntax.c index 60501f9677f..da28d6eed6d 100644 --- a/src/syntax.c +++ b/src/syntax.c @@ -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); } Lisp_Object skip_chars (); -- 2.39.5