aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Zaretskii <[email protected]>2013-02-12 18:36:55 +0200
committerEli Zaretskii <[email protected]>2013-02-12 18:36:55 +0200
commit33b49d71e45e3be1db4577277763f1cb3138d225 (patch)
tree2bd1eb9c50213b50801ef0da789796b8deb3b0b5
parentf1f0587100316d5d7f622fb01d73f97e0c060d55 (diff)
Minor additional fix in the wake of bugs #13623 and 13626.
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.
-rw-r--r--src/ChangeLog12
-rw-r--r--src/window.h3
-rw-r--r--src/xdisp.c4
3 files changed, 14 insertions, 5 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 30470f5730..fb4cc72364 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,15 @@
+2013-02-12 Eli Zaretskii <[email protected]>
+
+ * 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 <[email protected]>
Tune by using memchr and memrchr.
diff --git a/src/window.h b/src/window.h
index 0f4f242641..dcef37abb4 100644
--- a/src/window.h
+++ b/src/window.h
@@ -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.
diff --git a/src/xdisp.c b/src/xdisp.c
index 463f4f9ef0..ca3f968afa 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -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);