diff options
| author | Eli Zaretskii <eliz@gnu.org> | 2017-07-03 18:57:01 +0300 |
|---|---|---|
| committer | Eli Zaretskii <eliz@gnu.org> | 2017-07-03 18:57:01 +0300 |
| commit | 52bfb7d4d6595302b5261ff810951e0b3281352c (patch) | |
| tree | 0ce66e5db8fff172a6843af2666dbbf58bf3e267 /src/indent.c | |
| parent | 4c9353a5840b285631a86a5bad2b48ea6276abf3 (diff) | |
| download | emacs-52bfb7d4d6595302b5261ff810951e0b3281352c.tar.gz | |
Avoid errors in vertical-motion when buffer is narrowed
* src/indent.c (Fvertical_motion): If need to start from
window-start, and it is outside of the accessible portion,
temporarily widen the buffer. This avoids errors in evil-mode.
Reported by James Nguyen <james@jojojames.com>.
Diffstat (limited to 'src/indent.c')
| -rw-r--r-- | src/indent.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/indent.c b/src/indent.c index 2cacfbbe3c0..70351f90466 100644 --- a/src/indent.c +++ b/src/indent.c @@ -2077,11 +2077,24 @@ whether or not it is currently displayed in some window. */) && !EQ (Vdisplay_line_numbers, Qvisual)) { struct text_pos wstart; + bool saved_restriction = false; + ptrdiff_t count1 = SPECPDL_INDEX (); SET_TEXT_POS_FROM_MARKER (wstart, w->start); itdata = bidi_shelve_cache (); + /* We must start from window's start point, but it could be + outside the accessible region. */ + if (wstart.charpos < BEGV || wstart.charpos > ZV) + { + record_unwind_protect (save_restriction_restore, + save_restriction_save ()); + Fwiden (); + saved_restriction = true; + } start_display (&it, w, wstart); move_it_by_lines (&it, 1); lnum_width = it.lnum_width; + if (saved_restriction) + unbind_to (count1, Qnil); bidi_unshelve_cache (itdata, 0); } SET_TEXT_POS (pt, PT, PT_BYTE); |
