Minor additional fix in the wake of bugs #13623 and 13626.
authorEli Zaretskii <eliz@gnu.org>
Tue, 12 Feb 2013 16:36:55 +0000 (18:36 +0200)
committerEli Zaretskii <eliz@gnu.org>
Tue, 12 Feb 2013 16:36:55 +0000 (18:36 +0200)
 src/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->.
 src/window.h (struct window): region_showing can no longer be negative.

src/ChangeLog
src/window.h
src/xdisp.c

index 30470f5..fb4cc72 100644 (file)
@@ -1,3 +1,15 @@
+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.
index 0f4f242..dcef37a 100644 (file)
@@ -338,8 +338,7 @@ struct window
     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.
index 463f4f9..ca3f968 100644 (file)
@@ -13244,8 +13244,6 @@ redisplay_internal (void)
   ++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.  */
@@ -19138,7 +19136,7 @@ display_line (struct it *it)
     }
 
   /* 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);