Mercurial > emacs
changeset 30743:51d0f4273e89
(Fwindow_end): Rewritten to not use Fvertical_motion,
because that function doesn't cope with variable-height lines.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Thu, 10 Aug 2000 19:14:59 +0000 |
parents | e25bfc3f618c |
children | 6181f12f7f51 |
files | src/window.c |
diffstat | 1 files changed, 13 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/src/window.c Thu Aug 10 19:13:28 2000 +0000 +++ b/src/window.c Thu Aug 10 19:14:59 2000 +0000 @@ -783,29 +783,29 @@ && ! (! NILP (w->window_end_valid) && XFASTINT (w->last_modified) >= MODIFF)) { - int opoint = PT, opoint_byte = PT_BYTE; + struct text_pos startp; + struct it it; /* In case W->start is out of the range, use something reasonable. This situation occured when loading a file with `-l' containing a call to `rmail' with subsequent other commands. At the end, W->start happened to be BEG, while - rmail had already narrowed the buffer. This leads to an - abort in temp_set_pt_both. */ + rmail had already narrowed the buffer. */ if (XMARKER (w->start)->charpos < BEGV) - TEMP_SET_PT_BOTH (BEGV, BEGV_BYTE); + SET_TEXT_POS (startp, BEGV, BEGV_BYTE); else if (XMARKER (w->start)->charpos > ZV) - TEMP_SET_PT_BOTH (ZV, ZV_BYTE); + SET_TEXT_POS (startp, ZV, ZV_BYTE); else - TEMP_SET_PT_BOTH (XMARKER (w->start)->charpos, - XMARKER (w->start)->bytepos); - - Fvertical_motion (make_number (window_internal_height (w)), Qnil); - XSETINT (value, PT); - TEMP_SET_PT_BOTH (opoint, opoint_byte); + SET_TEXT_POS_FROM_MARKER (startp, w->start); + + /* Cannot use Fvertical_motion because that function doesn't + cope with variable-height lines. */ + start_display (&it, w, startp); + move_it_vertically (&it, window_box_height (w)); + value = make_number (IT_CHARPOS (it)); } else - XSETINT (value, - BUF_Z (XBUFFER (buf)) - XFASTINT (w->window_end_pos)); + XSETINT (value, BUF_Z (XBUFFER (buf)) - XFASTINT (w->window_end_pos)); return value; }