(current_column): Fix column computation in the

presence of display table entries.
(current_column_1, Fmove_to_column, compute_motion): Likewise.
This commit is contained in:
Gerd Moellmann 2001-07-23 14:47:42 +00:00
parent dd42b31ac4
commit f1004faf26
2 changed files with 17 additions and 0 deletions

View file

@ -1,5 +1,9 @@
2001-07-23 Gerd Moellmann <gerd@gnu.org>
* indent.c (current_column): Fix column computation in the
presence of display table entries.
(current_column_1, Fmove_to_column, compute_motion): Likewise.
* dispnew.c (adjust_glyph_matrix): In the optimization for
windows whose height has changed, use the new window height
to compute which rows to invalidate.

View file

@ -465,6 +465,13 @@ current_column ()
col = 0;
tab_seen = 1;
}
else if (VECTORP (charvec))
/* With a display table entry, C is displayed as is, and
not displayed as \NNN or as ^N. If C is a single-byte
character, it takes one column. If C is multi-byte in
an unibyte buffer, it's translated to unibyte, so it
also takes one column. */
++col;
else
col += (ctl_arrow && c < 0200) ? 2 : 4;
}
@ -607,6 +614,8 @@ current_column_1 ()
scan_byte += bytes;
col += width;
}
else if (VECTORP (charvec))
++col;
else if (ctl_arrow && (c < 040 || c == 0177))
col += 2;
else if (c < 040 || c >= 0177)
@ -1016,6 +1025,8 @@ The return value is the current column.")
col += tab_width;
col = col / tab_width * tab_width;
}
else if (VECTORP (charvec))
++col;
else if (ctl_arrow && (c < 040 || c == 0177))
col += 2;
else if (c < 040 || c == 0177)
@ -1654,6 +1665,8 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
wide_column_end_hpos = hpos + wide_column;
hpos += width;
}
else if (VECTORP (charvec))
++hpos;
else
hpos += (ctl_arrow && c < 0200) ? 2 : 4;
}