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.
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;
}
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)
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)
wide_column_end_hpos = hpos + wide_column;
hpos += width;
}
+ else if (VECTORP (charvec))
+ ++hpos;
else
hpos += (ctl_arrow && c < 0200) ? 2 : 4;
}