diff options
author | Wolfgang Jenkner <wjenkner@inode.at> | 2015-06-03 15:29:24 +0200 |
---|---|---|
committer | Wolfgang Jenkner <wjenkner@inode.at> | 2015-06-03 15:29:24 +0200 |
commit | 68529c89faf04a638ddea5e910d0684effa1d7c5 (patch) | |
tree | fedfa586a7d58ed2b716c24a019929019a394854 /src/indent.c | |
parent | a62306bbcbd1c0c9c047c62be6ead34cd7be75df (diff) | |
download | emacs-68529c89faf04a638ddea5e910d0684effa1d7c5.tar.gz |
* src/indent.c (Fvertical_motion): Amend motion by 0 lines.
Starting from a display string after a newline, point went to the
previous line. Also, fix an inadvertent use of a buffer position
with FETCH_BYTE. (Bug#20701)
Diffstat (limited to 'src/indent.c')
-rw-r--r-- | src/indent.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/indent.c b/src/indent.c index ce78308c95b..b4e6d745499 100644 --- a/src/indent.c +++ b/src/indent.c @@ -2134,17 +2134,20 @@ whether or not it is currently displayed in some window. */) overshoot_handled = 1; } else if (IT_CHARPOS (it) == PT - 1 - && FETCH_BYTE (PT - 1) == '\n' - && nlines < 0) + && FETCH_BYTE (PT_BYTE - 1) == '\n' + && nlines <= 0) { /* The position we started from was covered by a display property, so we moved to position before the string, and - backed up one line, because the character at PT - 1 is a - newline. So we need one less line to go up. */ + backed up one line, because the character at PT - 1 is + a newline. So we need one less line to go up (or exactly + one line to go down if nlines == 0). */ nlines++; /* But we still need to record that one line, in order to return the correct value to the caller. */ vpos_init = -1; + + overshoot_handled = 1; } if (lcols_given) to_x = window_column_x (w, window, extract_float (lcols), lcols); @@ -2159,7 +2162,7 @@ whether or not it is currently displayed in some window. */) } else if (overshoot_handled) { - it.vpos = 0; + it.vpos = vpos_init; move_it_by_lines (&it, min (PTRDIFF_MAX, nlines)); } else |