mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-07 20:30:32 -08:00
(compute_motion): Fix bug of handling wide-column
character around right margin.
This commit is contained in:
parent
e9227982cb
commit
dbc08868a2
1 changed files with 3 additions and 19 deletions
22
src/indent.c
22
src/indent.c
|
|
@ -1223,7 +1223,9 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
|
|||
}
|
||||
|
||||
/* Stop if past the target buffer position or screen position. */
|
||||
if (pos > to)
|
||||
if (pos > to
|
||||
|| vpos > tovpos
|
||||
|| vpos == tovpos && hpos > tohpos)
|
||||
{
|
||||
/* Go back to the previous position. */
|
||||
pos = prev_pos;
|
||||
|
|
@ -1256,24 +1258,6 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
|
|||
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;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue