+2013-02-12 Eli Zaretskii <eliz@gnu.org>
+
+ * xdisp.c (redisplay_internal): Don't set w->region_showing to the
+ marker's position.
+ (display_line): Set w->region_showing to the value of
+ it->region_beg_charpos, not to -1. This fixes redisplay
+ optimization when cursor is moved up after M->. (Bug#13623)
+ (Bug#13626)
+
+ * window.h (struct window): region_showing can no longer be
+ negative.
+
2013-02-11 Paul Eggert <eggert@cs.ucla.edu>
Tune by using memchr and memrchr.
int vscroll;
/* If we have highlighted the region (or any part of it), the mark
- position or -1 (the latter is used by the iterator for internal
- purposes); otherwise zero. */
+ (region start) position; otherwise zero. */
ptrdiff_t region_showing;
/* Z_BYTE - buffer position of the last glyph in the current matrix of W.
++clear_image_cache_count;
#endif
- w->region_showing = XINT (Fmarker_position (BVAR (XBUFFER (w->buffer), mark)));
-
/* Build desired matrices, and update the display. If
consider_all_windows_p is non-zero, do it for all windows on all
frames. Otherwise do it for selected_window, only. */
}
/* Is IT->w showing the region? */
- it->w->region_showing = it->region_beg_charpos > 0 ? -1 : 0;
+ it->w->region_showing = it->region_beg_charpos > 0 ? it->region_beg_charpos : 0;
/* Clear the result glyph row and enable it. */
prepare_desired_row (row);