Mercurial > emacs
changeset 30550:73040724e653
(Fconstrain_to_field): Fix the conditions for deciding when to constrain
NEW_POS (they were pretty screwed up before).
author | Miles Bader <miles@gnu.org> |
---|---|
date | Tue, 01 Aug 2000 12:51:44 +0000 |
parents | e8eb478c6634 |
children | 56f69311c3a0 |
files | src/editfns.c |
diffstat | 1 files changed, 17 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/src/editfns.c Tue Aug 01 10:12:00 2000 +0000 +++ b/src/editfns.c Tue Aug 01 12:51:44 2000 +0000 @@ -593,20 +593,23 @@ else field_bound = Ffield_beginning (old_pos, escape_from_edge); - if (/* If ONLY_IN_LINE is non-nil, we only constrain NEW_POS if doing - so would remain within the same line. */ - NILP (only_in_line) - /* In that case, see if ESCAPE_FROM_EDGE caused FIELD_BOUND - to jump to the other side of NEW_POS, which would mean - that NEW_POS is already acceptable, and that we don't - have to do the line-check. */ - || ((XFASTINT (field_bound) < XFASTINT (new_pos)) ? !fwd : fwd) - /* If not, see if there's no newline intervening between - NEW_POS and FIELD_BOUND. */ - || (scan_buffer ('\n', - XFASTINT (new_pos), XFASTINT (field_bound), - fwd ? -1 : 1, &shortage, 1), - shortage != 0)) + if (/* See if ESCAPE_FROM_EDGE caused FIELD_BOUND to jump to the + other side of NEW_POS, which would mean that NEW_POS is + already acceptable, and it's not necessary to constrain it + to FIELD_BOUND. */ + ((XFASTINT (field_bound) < XFASTINT (new_pos)) ? fwd : !fwd) + /* NEW_POS should be constrained, but only if either + ONLY_IN_LINE is nil (in which case any constraint is OK), + or NEW_POS and FIELD_BOUND are on the same line (in which + case the constraint is OK even if ONLY_IN_LINE is non-nil). */ + && (NILP (only_in_line) + /* This is the ONLY_IN_LINE case, check that NEW_POS and + FIELD_BOUND are on the same line by seeing whether + there's an intervening newline or not. */ + || (scan_buffer ('\n', + XFASTINT (new_pos), XFASTINT (field_bound), + fwd ? -1 : 1, &shortage, 1), + shortage != 0))) /* Constrain NEW_POS to FIELD_BOUND. */ new_pos = field_bound;