aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Zaretskii2014-06-16 22:38:28 +0300
committerEli Zaretskii2014-06-16 22:38:28 +0300
commit4f9dc9b61df1ee2128f4e0cb9dda66860c625159 (patch)
treeeec09cf88b423dc9b71edfdf991f80d9c8c999e1
parent6a7faa16644364dc86e5b47c86be803664be94f7 (diff)
downloademacs-4f9dc9b61df1ee2128f4e0cb9dda66860c625159.tar.gz
emacs-4f9dc9b61df1ee2128f4e0cb9dda66860c625159.zip
A better fix for bug #17777 with visual-order cursor movement.
src/xdisp.c (Fmove_point_visually): Instead of testing for keyboard macro execution, make sure point didn't move since last complete redisplay, as the condition for using the glyph matrix information.
-rw-r--r--src/ChangeLog7
-rw-r--r--src/xdisp.c5
2 files changed, 11 insertions, 1 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 6e312e79d7d..2c27be577a7 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,10 @@
12014-06-16 Eli Zaretskii <eliz@gnu.org>
2
3 * xdisp.c (Fmove_point_visually): Instead of testing for keyboard
4 macro execution, make sure point didn't move since last complete
5 redisplay, as the condition for using the glyph matrix
6 information. (Bug#17777)
7
12014-06-14 Eli Zaretskii <eliz@gnu.org> 82014-06-14 Eli Zaretskii <eliz@gnu.org>
2 9
3 * xdisp.c (Fmove_point_visually): Don't use the glyph matrix 10 * xdisp.c (Fmove_point_visually): Don't use the glyph matrix
diff --git a/src/xdisp.c b/src/xdisp.c
index b1c7ee92b54..1106e6fe25f 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -20757,12 +20757,15 @@ Value is the new character position of point. */)
20757 recorded in the glyphs, at least as long as the goal is on the 20757 recorded in the glyphs, at least as long as the goal is on the
20758 screen. */ 20758 screen. */
20759 if (w->window_end_valid 20759 if (w->window_end_valid
20760 && NILP (Vexecuting_kbd_macro)
20761 && !windows_or_buffers_changed 20760 && !windows_or_buffers_changed
20762 && b 20761 && b
20763 && !b->clip_changed 20762 && !b->clip_changed
20764 && !b->prevent_redisplay_optimizations_p 20763 && !b->prevent_redisplay_optimizations_p
20765 && !window_outdated (w) 20764 && !window_outdated (w)
20765 /* We rely below on the cursor coordinates to be up to date, but
20766 we cannot trust them if some command moved point since the
20767 last complete redisplay. */
20768 && w->last_point == BUF_PT (b)
20766 && w->cursor.vpos >= 0 20769 && w->cursor.vpos >= 0
20767 && w->cursor.vpos < w->current_matrix->nrows 20770 && w->cursor.vpos < w->current_matrix->nrows
20768 && (row = MATRIX_ROW (w->current_matrix, w->cursor.vpos))->enabled_p) 20771 && (row = MATRIX_ROW (w->current_matrix, w->cursor.vpos))->enabled_p)