# HG changeset patch # User Richard M. Stallman # Date 896135618 0 # Node ID 94da16d936b653150f6ec497d870f88ddddc0ead # Parent 41c88b9489c392c7ebac357c9000741d798aa02f (compute_motion): Check for past vpos/hpos target before skipping invisible chars. diff -r 41c88b9489c3 -r 94da16d936b6 src/indent.c --- 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