1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-29 07:58:28 +00:00

(reconsider_clip_changes): Don't test prevent_redisplay_optimizations_p.

(redisplay_internal): Test prevent_redisplay_optimizations_p
along with clip_changed in some cases.
(try_window_id): Likewise.
(redisplay_window): New local var buffer_unchanged_p.
This commit is contained in:
Richard M. Stallman 2002-07-16 13:47:07 +00:00
parent 160552c527
commit c62c1bb5cb

View File

@ -8420,9 +8420,7 @@ reconsider_clip_changes (w, b)
struct window *w;
struct buffer *b;
{
if (b->prevent_redisplay_optimizations_p)
b->clip_changed = 1;
else if (b->clip_changed
if (b->clip_changed
&& !NILP (w->window_end_valid)
&& w->current_matrix->buffer == b
&& w->current_matrix->zv == BUF_ZV (b)
@ -8689,6 +8687,7 @@ redisplay_internal (preserve_echo_area)
&& CHARPOS (tlbufpos) > 0
&& NILP (w->update_mode_line)
&& !current_buffer->clip_changed
&& !current_buffer->prevent_redisplay_optimizations_p
&& FRAME_VISIBLE_P (XFRAME (w->frame))
&& !FRAME_OBSCURED_P (XFRAME (w->frame))
/* Make sure recorded data applies to current buffer, etc. */
@ -10093,6 +10092,9 @@ redisplay_window (window, just_this_one_p)
struct it it;
/* Record it now because it's overwritten. */
int current_matrix_up_to_date_p = 0;
/* This is less strict than current_matrix_up_to_date_p.
It indictes that the buffer contents and narrowing are unchanged. */
int buffer_unchanged_p = 0;
int temp_scroll_step = 0;
int count = SPECPDL_INDEX ();
int rc;
@ -10114,7 +10116,8 @@ redisplay_window (window, just_this_one_p)
/* Has the mode line to be updated? */
update_mode_line = (!NILP (w->update_mode_line)
|| update_mode_lines
|| buffer->clip_changed);
|| buffer->clip_changed
|| buffer->prevent_redisplay_optimizations_p);
if (MINI_WINDOW_P (w))
{
@ -10157,9 +10160,16 @@ redisplay_window (window, just_this_one_p)
current_matrix_up_to_date_p
= (!NILP (w->window_end_valid)
&& !current_buffer->clip_changed
&& !current_buffer->prevent_redisplay_optimizations_p
&& XFASTINT (w->last_modified) >= MODIFF
&& XFASTINT (w->last_overlay_modified) >= OVERLAY_MODIFF);
buffer_unchanged_p
= (!NILP (w->window_end_valid)
&& !current_buffer->clip_changed
&& END_UNCHANGED + BEG_UNCHANGED >= Z - BEG
&& XFASTINT (w->last_overlay_modified) >= OVERLAY_MODIFF);
/* When windows_or_buffers_changed is non-zero, we can't rely on
the window end being valid, so set it to nil there. */
if (windows_or_buffers_changed)
@ -10277,8 +10287,7 @@ redisplay_window (window, just_this_one_p)
w->window_end_valid = Qnil;
/* Forget any recorded base line for line number display. */
if (!current_matrix_up_to_date_p
|| current_buffer->clip_changed)
if (!buffer_unchanged_p)
w->base_line_number = Qnil;
/* Redisplay the mode line. Select the buffer properly for that.
@ -10356,7 +10365,7 @@ redisplay_window (window, just_this_one_p)
/* Handle case where text has not changed, only point, and it has
not moved off the frame. */
if (current_matrix_up_to_date_p
if (buffer_unchanged_p
&& (rc = try_cursor_movement (window, startp, &temp_scroll_step),
rc != CURSOR_MOVEMENT_CANNOT_BE_USED))
{
@ -10510,8 +10519,7 @@ redisplay_window (window, just_this_one_p)
/* w->vscroll = 0; */
/* Forget any previously recorded base line for line number display. */
if (!current_matrix_up_to_date_p
|| current_buffer->clip_changed)
if (!buffer_unchanged_p)
w->base_line_number = Qnil;
/* Move backward half the height of the window. */
@ -11525,10 +11533,12 @@ try_window_id (w)
if (windows_or_buffers_changed || cursor_type_changed)
GIVE_UP (2);
/* Verify that narrowing has not changed. This flag is also set to prevent
redisplay optimizations. It would be nice to further
/* Verify that narrowing has not changed.
Also verify that we were not told to prevent redisplay optimizations.
It would be nice to further
reduce the number of cases where this prevents try_window_id. */
if (current_buffer->clip_changed)
if (current_buffer->clip_changed
|| current_buffer->prevent_redisplay_optimizations_p)
GIVE_UP (3);
/* Window must either use window-based redisplay or be full width. */