diff options
| author | Eli Zaretskii | 2014-06-16 22:38:28 +0300 |
|---|---|---|
| committer | Eli Zaretskii | 2014-06-16 22:38:28 +0300 |
| commit | 4f9dc9b61df1ee2128f4e0cb9dda66860c625159 (patch) | |
| tree | eec09cf88b423dc9b71edfdf991f80d9c8c999e1 | |
| parent | 6a7faa16644364dc86e5b47c86be803664be94f7 (diff) | |
| download | emacs-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/ChangeLog | 7 | ||||
| -rw-r--r-- | src/xdisp.c | 5 |
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 @@ | |||
| 1 | 2014-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 | |||
| 1 | 2014-06-14 Eli Zaretskii <eliz@gnu.org> | 8 | 2014-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) |