mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-28 16:21:07 -08:00
(Fconstrain_to_field): Fix the conditions for deciding when to constrain
NEW_POS (they were pretty screwed up before).
This commit is contained in:
parent
032ebb2999
commit
10b0f752ea
2 changed files with 22 additions and 14 deletions
|
|
@ -1,3 +1,8 @@
|
|||
2000-08-01 Miles Bader <miles@gnu.org>
|
||||
|
||||
* editfns.c (Fconstrain_to_field): Fix the conditions for deciding
|
||||
when to constrain NEW_POS (they were pretty screwed up before).
|
||||
|
||||
2000-07-31 Eli Zaretskii <eliz@is.elta.co.il>
|
||||
|
||||
* msdos.c (run_msdos_command): Save and restore the master
|
||||
|
|
|
|||
|
|
@ -593,20 +593,23 @@ Field boundaries are not noticed if `inhibit-field-text-motion' is non-nil.")
|
|||
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;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue