From: Richard M. Stallman Date: Mon, 25 May 1998 22:33:38 +0000 (+0000) Subject: (compute_motion): Check for past vpos/hpos target X-Git-Tag: emacs-20.3~832 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=f9ba10b0112e8e2b6c285bd96a92dcda96d3ebca;p=emacs.git (compute_motion): Check for past vpos/hpos target before skipping invisible chars. --- diff --git a/src/indent.c b/src/indent.c index 047f9e82262..0d49c9515cc 100644 --- a/src/indent.c +++ b/src/indent.c @@ -1095,6 +1095,26 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width, 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