In window_update (dispnew.c), overlapping/overlapped rows are redrawn if `changed_p' is non-zero.
if (changed_p && rif->fix_overlapping_area) { redraw_overlapped_rows (w, yb); redraw_overlapping_rows (w, yb); } but this variable is set when either the mode line or the header line is updated. if (mode_line_row->mode_line_p && mode_line_row->enabled_p) { mode_line_row->y = yb; update_window_line (w, MATRIX_ROW_VPOS (mode_line_row, desired_matrix), &mouse_face_overwritten_p); changed_p = 1; } So when a user moves the cursor vertically and the line number displayed in the mode line is changed, the whole overlapping/overlapped rows get redrawn. It significantly degrades performance of cursor movement for such an environment that text drawing is not so fast. Is it OK to not set `changed_p' for the case of mode/header line updates? YAMAMOTO Mitsuharu [EMAIL PROTECTED] _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel