Mercurial > emacs
changeset 22245:94da16d936b6
(compute_motion): Check for past vpos/hpos target
before skipping invisible chars.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Mon, 25 May 1998 22:33:38 +0000 |
parents | 41c88b9489c3 |
children | afacb0a7e251 |
files | src/indent.c |
diffstat | 1 files changed, 20 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/indent.c Mon May 25 22:32:58 1998 +0000 +++ b/src/indent.c Mon May 25 22:33:38 1998 +0000 @@ -1095,6 +1095,26 @@ int pos_here = pos; int newpos; + /* Don't skip invisible if we are already at the margin. */ + if (vpos > tovpos || vpos == tovpos && hpos >= tohpos) + { + if (contin_hpos && prev_hpos == 0 + && hpos > tohpos + && (contin_hpos == width || wide_column_end_hpos > width)) + { /* Line breaks because we can't put the character at the + previous line any more. It is not the multi-column + character continued in middle. Go back to previous + buffer position, screen position, and set tab offset + to previous value. It's the beginning of the + line. */ + pos = prev_pos; + pos_byte = prev_pos_byte; + hpos = prev_hpos; + tab_offset = prev_tab_offset; + } + break; + } + /* If the caller says that the screen position came from an earlier call to compute_motion, then we've already accounted for the overlay strings at point. This is only true the first time