Mercurial > emacs
changeset 21994:e244c4d9b0ca
(compute_motion): Undo both May 7 changes.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Fri, 08 May 1998 02:28:22 +0000 |
parents | 3a95abf581d7 |
children | 37088286bbd5 |
files | src/indent.c |
diffstat | 1 files changed, 19 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/indent.c Fri May 08 02:20:38 1998 +0000 +++ b/src/indent.c Fri May 08 02:28:22 1998 +0000 @@ -1223,9 +1223,7 @@ } /* Stop if past the target buffer position or screen position. */ - if (pos > to - || vpos > tovpos - || vpos == tovpos && tohpos >= 0 && hpos > tohpos) + if (pos > to) { /* Go back to the previous position. */ pos = prev_pos; @@ -1258,6 +1256,24 @@ break; } + 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 (pos == ZV) /* We cannot go beyond ZV. Stop here. */ break;