aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGerd Moellmann1999-08-23 00:11:55 +0000
committerGerd Moellmann1999-08-23 00:11:55 +0000
commit9142dd5badb4e883761084eb3ad23ea578df5816 (patch)
treebc10a1658c203002592091d164088afd97dd3eb5 /src
parent5e8355b2e33b99038a1766c5916556ebcf120000 (diff)
downloademacs-9142dd5badb4e883761084eb3ad23ea578df5816.tar.gz
emacs-9142dd5badb4e883761084eb3ad23ea578df5816.zip
(redisplay_internal): Clear garbaged frames after
resizing mini-window. (unwind_with_echo_area_buffer): Use set_buffer_internal_1 instead of set_buffer_internal. (with_echo_area_buffer): Ditto. (Vresize_mini_config): New. (resize_mini_window): Use it to save restore original window configuration (syms_of_xdisp): Initialize it. (reconsider_clip_changes): New. (redisplay_internal, redisplay_window): Call it. (mark_window_display_accurate, redisplay_internal): Set current matrix' buffer, begv, zv.
Diffstat (limited to 'src')
-rw-r--r--src/xdisp.c157
1 files changed, 93 insertions, 64 deletions
diff --git a/src/xdisp.c b/src/xdisp.c
index a2e8a4b1b67..45cbe13f977 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -427,28 +427,6 @@ int message_enable_multibyte;
427 427
428int update_mode_lines; 428int update_mode_lines;
429 429
430/* Smallest number of characters before the gap at any time since last
431 redisplay that finished. Valid for current buffer when
432 try_window_id can be called. */
433
434int beg_unchanged;
435
436/* Smallest number of characters after the gap at any time since last
437 redisplay that finished. Valid for current buffer when
438 try_window_id can be called. */
439
440int end_unchanged;
441
442/* MODIFF as of last redisplay that finished; if it matches MODIFF,
443 and overlay_unchanged_modified matches OVERLAY_MODIFF, that means
444 beg_unchanged and end_unchanged contain no useful information. */
445
446int unchanged_modified;
447
448/* OVERLAY_MODIFF as of last redisplay that finished. */
449
450int overlay_unchanged_modified;
451
452/* Nonzero if window sizes or contents have changed since last 430/* Nonzero if window sizes or contents have changed since last
453 redisplay that finished */ 431 redisplay that finished */
454 432
@@ -495,10 +473,16 @@ static int display_last_displayed_message_p;
495 473
496int message_buf_print; 474int message_buf_print;
497 475
498/* Maximum height for resizing mini-windows. */ 476/* Maximum height for resizing mini-windows. Either a float
477 specifying a fraction of the available height, or an integer
478 specifying a number of lines. */
499 479
500static Lisp_Object Vmax_mini_window_height; 480static Lisp_Object Vmax_mini_window_height;
501 481
482/* Window configuration saved in resize_mini_window. */
483
484static Lisp_Object Vresize_mini_config;
485
502/* A scratch glyph row with contents used for generating truncation 486/* A scratch glyph row with contents used for generating truncation
503 glyphs. Also used in direct_output_for_insert. */ 487 glyphs. Also used in direct_output_for_insert. */
504 488
@@ -5221,7 +5205,7 @@ with_echo_area_buffer (w, which, fn, a1, a2, a3, a4, a5)
5221 Fset_window_buffer. We must also change w->pointm, though, 5205 Fset_window_buffer. We must also change w->pointm, though,
5222 because otherwise an assertions in unshow_buffer fails, and Emacs 5206 because otherwise an assertions in unshow_buffer fails, and Emacs
5223 aborts. */ 5207 aborts. */
5224 set_buffer_internal (XBUFFER (buffer)); 5208 set_buffer_internal_1 (XBUFFER (buffer));
5225 if (w) 5209 if (w)
5226 { 5210 {
5227 w->buffer = buffer; 5211 w->buffer = buffer;
@@ -5263,13 +5247,11 @@ with_echo_area_buffer_unwind_data (w)
5263 Vwith_echo_area_save_vector = Qnil; 5247 Vwith_echo_area_save_vector = Qnil;
5264 5248
5265 if (NILP (vector)) 5249 if (NILP (vector))
5266 vector = Fmake_vector (make_number (9), Qnil); 5250 vector = Fmake_vector (make_number (7), Qnil);
5267 5251
5268 XSETBUFFER (XVECTOR (vector)->contents[i], current_buffer); ++i; 5252 XSETBUFFER (XVECTOR (vector)->contents[i], current_buffer); ++i;
5269 XVECTOR (vector)->contents[i++] = Vdeactivate_mark; 5253 XVECTOR (vector)->contents[i++] = Vdeactivate_mark;
5270 XVECTOR (vector)->contents[i++] = make_number (windows_or_buffers_changed); 5254 XVECTOR (vector)->contents[i++] = make_number (windows_or_buffers_changed);
5271 XVECTOR (vector)->contents[i++] = make_number (beg_unchanged);
5272 XVECTOR (vector)->contents[i++] = make_number (end_unchanged);
5273 5255
5274 if (w) 5256 if (w)
5275 { 5257 {
@@ -5301,11 +5283,9 @@ unwind_with_echo_area_buffer (vector)
5301{ 5283{
5302 int i = 0; 5284 int i = 0;
5303 5285
5304 set_buffer_internal (XBUFFER (XVECTOR (vector)->contents[i])); ++i; 5286 set_buffer_internal_1 (XBUFFER (XVECTOR (vector)->contents[i])); ++i;
5305 Vdeactivate_mark = XVECTOR (vector)->contents[i]; ++i; 5287 Vdeactivate_mark = XVECTOR (vector)->contents[i]; ++i;
5306 windows_or_buffers_changed = XFASTINT (XVECTOR (vector)->contents[i]); ++i; 5288 windows_or_buffers_changed = XFASTINT (XVECTOR (vector)->contents[i]); ++i;
5307 beg_unchanged = XFASTINT (XVECTOR (vector)->contents[i]); ++i;
5308 end_unchanged = XFASTINT (XVECTOR (vector)->contents[i]); ++i;
5309 5289
5310 if (WINDOWP (XVECTOR (vector)->contents[i])) 5290 if (WINDOWP (XVECTOR (vector)->contents[i]))
5311 { 5291 {
@@ -5447,7 +5427,7 @@ resize_mini_window (w)
5447 int height, max_height; 5427 int height, max_height;
5448 int unit = CANON_Y_UNIT (f); 5428 int unit = CANON_Y_UNIT (f);
5449 struct text_pos start; 5429 struct text_pos start;
5450 5430
5451 init_iterator (&it, w, BEGV, BEGV_BYTE, NULL, DEFAULT_FACE_ID); 5431 init_iterator (&it, w, BEGV, BEGV_BYTE, NULL, DEFAULT_FACE_ID);
5452 5432
5453 /* Compute the max. number of lines specified by the user. */ 5433 /* Compute the max. number of lines specified by the user. */
@@ -5478,9 +5458,14 @@ resize_mini_window (w)
5478 SET_MARKER_FROM_TEXT_POS (w->start, start); 5458 SET_MARKER_FROM_TEXT_POS (w->start, start);
5479 5459
5480 /* Change window's height, if necessary. */ 5460 /* Change window's height, if necessary. */
5481 if (height != XFASTINT (w->height)) 5461 if (height > XFASTINT (w->height)
5462 || (height < XFASTINT (w->height)
5463 && NILP (Vresize_mini_config)))
5482 { 5464 {
5483 Lisp_Object old_selected_window; 5465 Lisp_Object old_selected_window;
5466
5467 if (NILP (Vresize_mini_config))
5468 Vresize_mini_config = Fcurrent_window_configuration (Qnil);
5484 5469
5485 old_selected_window = selected_window; 5470 old_selected_window = selected_window;
5486 XSETWINDOW (selected_window, w); 5471 XSETWINDOW (selected_window, w);
@@ -5488,6 +5473,13 @@ resize_mini_window (w)
5488 selected_window = old_selected_window; 5473 selected_window = old_selected_window;
5489 window_height_changed_p = 1; 5474 window_height_changed_p = 1;
5490 } 5475 }
5476 else if (height < XFASTINT (w->height)
5477 && !NILP (Vresize_mini_config))
5478 {
5479 Fset_window_configuration (Vresize_mini_config);
5480 Vresize_mini_config = Qnil;
5481 window_height_changed_p = 1;
5482 }
5491 } 5483 }
5492 5484
5493 return window_height_changed_p; 5485 return window_height_changed_p;
@@ -6729,11 +6721,6 @@ hscroll_windows (window)
6729 6721
6730#if GLYPH_DEBUG 6722#if GLYPH_DEBUG
6731 6723
6732/* Values of beg_unchanged and end_unchanged as of last call to
6733 try_window_id. */
6734
6735int debug_beg_unchanged, debug_end_unchanged;
6736
6737/* First and last unchanged row for try_window_id. */ 6724/* First and last unchanged row for try_window_id. */
6738 6725
6739int debug_first_unchanged_at_end_vpos; 6726int debug_first_unchanged_at_end_vpos;
@@ -6830,8 +6817,8 @@ text_outside_line_unchanged_p (w, start, end)
6830 6817
6831 /* Changes start in front of the line, or end after it? */ 6818 /* Changes start in front of the line, or end after it? */
6832 if (unchanged_p 6819 if (unchanged_p
6833 && (beg_unchanged < start - 1 6820 && (BEG_UNCHANGED < start - 1
6834 || end_unchanged < end)) 6821 || END_UNCHANGED < end))
6835 unchanged_p = 0; 6822 unchanged_p = 0;
6836 6823
6837 /* If selective display, can't optimize if changes start at the 6824 /* If selective display, can't optimize if changes start at the
@@ -6839,7 +6826,7 @@ text_outside_line_unchanged_p (w, start, end)
6839 if (unchanged_p 6826 if (unchanged_p
6840 && INTEGERP (current_buffer->selective_display) 6827 && INTEGERP (current_buffer->selective_display)
6841 && XINT (current_buffer->selective_display) > 0 6828 && XINT (current_buffer->selective_display) > 0
6842 && (beg_unchanged < start || GPT <= start)) 6829 && (BEG_UNCHANGED < start || GPT <= start))
6843 unchanged_p = 0; 6830 unchanged_p = 0;
6844 } 6831 }
6845 6832
@@ -6861,6 +6848,25 @@ redisplay ()
6861} 6848}
6862 6849
6863 6850
6851/* Reconsider the setting of B->clip_changed which is displayed
6852 in window W. */
6853
6854static INLINE void
6855reconsider_clip_changes (w, b)
6856 struct window *w;
6857 struct buffer *b;
6858{
6859 if (b->prevent_redisplay_optimizations_p)
6860 b->clip_changed = 1;
6861 else if (b->clip_changed
6862 && !NILP (w->window_end_valid)
6863 && w->current_matrix->buffer == b
6864 && w->current_matrix->zv == BUF_ZV (b)
6865 && w->current_matrix->begv == BUF_BEGV (b))
6866 b->clip_changed = 0;
6867}
6868
6869
6864/* If PRESERVE_ECHO_AREA is nonzero, it means this redisplay is not in 6870/* If PRESERVE_ECHO_AREA is nonzero, it means this redisplay is not in
6865 response to any user action; therefore, we should preserve the echo 6871 response to any user action; therefore, we should preserve the echo
6866 area. (Actually, our caller does that job.) Perhaps in the future 6872 area. (Actually, our caller does that job.) Perhaps in the future
@@ -6920,6 +6926,8 @@ redisplay_internal (preserve_echo_area)
6920 6926
6921 retry: 6927 retry:
6922 6928
6929 reconsider_clip_changes (w, current_buffer);
6930
6923 /* If new fonts have been loaded that make a glyph matrix adjustment 6931 /* If new fonts have been loaded that make a glyph matrix adjustment
6924 necessary, do it. */ 6932 necessary, do it. */
6925 if (fonts_changed_p) 6933 if (fonts_changed_p)
@@ -6971,8 +6979,6 @@ redisplay_internal (preserve_echo_area)
6971 /* Build menubar and toolbar items. */ 6979 /* Build menubar and toolbar items. */
6972 prepare_menu_bars (); 6980 prepare_menu_bars ();
6973 6981
6974 retry_1:
6975
6976 if (windows_or_buffers_changed) 6982 if (windows_or_buffers_changed)
6977 update_mode_lines++; 6983 update_mode_lines++;
6978 6984
@@ -7024,6 +7030,12 @@ redisplay_internal (preserve_echo_area)
7024 consider_all_windows_p = 1; 7030 consider_all_windows_p = 1;
7025 ++update_mode_lines; 7031 ++update_mode_lines;
7026 ++windows_or_buffers_changed; 7032 ++windows_or_buffers_changed;
7033
7034 /* If window configuration was changed, frames may have been
7035 marked garbaged. Clear them or we will experience
7036 surprises wrt scrolling. */
7037 if (frame_garbaged)
7038 clear_garbaged_frames ();
7027 } 7039 }
7028 } 7040 }
7029 else if (w == XWINDOW (minibuf_window) 7041 else if (w == XWINDOW (minibuf_window)
@@ -7038,6 +7050,12 @@ redisplay_internal (preserve_echo_area)
7038 consider_all_windows_p = 1; 7050 consider_all_windows_p = 1;
7039 ++windows_or_buffers_changed; 7051 ++windows_or_buffers_changed;
7040 ++update_mode_lines; 7052 ++update_mode_lines;
7053
7054 /* If window configuration was changed, frames may have been
7055 marked garbaged. Clear them or we will experience
7056 surprises wrt scrolling. */
7057 if (frame_garbaged)
7058 clear_garbaged_frames ();
7041 } 7059 }
7042 7060
7043 7061
@@ -7417,10 +7435,10 @@ update:
7417 { 7435 {
7418 register struct buffer *b = XBUFFER (w->buffer); 7436 register struct buffer *b = XBUFFER (w->buffer);
7419 7437
7420 unchanged_modified = BUF_MODIFF (b); 7438 BUF_UNCHANGED_MODIFIED (b) = BUF_MODIFF (b);
7421 overlay_unchanged_modified = BUF_OVERLAY_MODIFF (b); 7439 BUF_OVERLAY_UNCHANGED_MODIFIED (b) = BUF_OVERLAY_MODIFF (b);
7422 beg_unchanged = BUF_GPT (b) - BUF_BEG (b); 7440 BUF_BEG_UNCHANGED (b) = BUF_GPT (b) - BUF_BEG (b);
7423 end_unchanged = BUF_Z (b) - BUF_GPT (b); 7441 BUF_END_UNCHANGED (b) = BUF_Z (b) - BUF_GPT (b);
7424 7442
7425 if (consider_all_windows_p) 7443 if (consider_all_windows_p)
7426 mark_window_display_accurate (FRAME_ROOT_WINDOW (selected_frame), 1); 7444 mark_window_display_accurate (FRAME_ROOT_WINDOW (selected_frame), 1);
@@ -7431,6 +7449,7 @@ update:
7431 w->last_cursor_off_p = w->cursor_off_p; 7449 w->last_cursor_off_p = w->cursor_off_p;
7432 7450
7433 b->clip_changed = 0; 7451 b->clip_changed = 0;
7452 b->prevent_redisplay_optimizations_p = 0;
7434 w->update_mode_line = Qnil; 7453 w->update_mode_line = Qnil;
7435 XSETFASTINT (w->last_modified, BUF_MODIFF (b)); 7454 XSETFASTINT (w->last_modified, BUF_MODIFF (b));
7436 XSETFASTINT (w->last_overlay_modified, BUF_OVERLAY_MODIFF (b)); 7455 XSETFASTINT (w->last_overlay_modified, BUF_OVERLAY_MODIFF (b));
@@ -7452,6 +7471,10 @@ update:
7452 last_arrow_string = Voverlay_arrow_string; 7471 last_arrow_string = Voverlay_arrow_string;
7453 if (frame_up_to_date_hook != 0) 7472 if (frame_up_to_date_hook != 0)
7454 (*frame_up_to_date_hook) (selected_frame); 7473 (*frame_up_to_date_hook) (selected_frame);
7474
7475 w->current_matrix->buffer = b;
7476 w->current_matrix->begv = BUF_BEGV (b);
7477 w->current_matrix->zv = BUF_ZV (b);
7455 } 7478 }
7456 7479
7457 update_mode_lines = 0; 7480 update_mode_lines = 0;
@@ -7589,6 +7612,10 @@ mark_window_display_accurate (window, accurate_p)
7589 if (accurate_p) 7612 if (accurate_p)
7590 { 7613 {
7591 b->clip_changed = 0; 7614 b->clip_changed = 0;
7615 b->prevent_redisplay_optimizations_p = 0;
7616 w->current_matrix->buffer = b;
7617 w->current_matrix->begv = BUF_BEGV (b);
7618 w->current_matrix->zv = BUF_ZV (b);
7592 w->last_cursor = w->cursor; 7619 w->last_cursor = w->cursor;
7593 w->last_cursor_off_p = w->cursor_off_p; 7620 w->last_cursor_off_p = w->cursor_off_p;
7594 if (w == XWINDOW (selected_window)) 7621 if (w == XWINDOW (selected_window))
@@ -8039,7 +8066,7 @@ try_scrolling (window, just_this_one_p, scroll_conservatively,
8039 /* Maybe forget recorded base line for line number display. */ 8066 /* Maybe forget recorded base line for line number display. */
8040 if (!just_this_one_p 8067 if (!just_this_one_p
8041 || current_buffer->clip_changed 8068 || current_buffer->clip_changed
8042 || beg_unchanged < CHARPOS (startp)) 8069 || BEG_UNCHANGED < CHARPOS (startp))
8043 w->base_line_number = Qnil; 8070 w->base_line_number = Qnil;
8044 8071
8045 /* If cursor ends up on a partially visible line, shift display 8072 /* If cursor ends up on a partially visible line, shift display
@@ -8150,7 +8177,9 @@ redisplay_window (window, just_this_one_p)
8150#endif 8177#endif
8151 8178
8152 specbind (Qinhibit_point_motion_hooks, Qt); 8179 specbind (Qinhibit_point_motion_hooks, Qt);
8153 8180
8181 reconsider_clip_changes (w, buffer);
8182
8154 /* Has the mode line to be updated? */ 8183 /* Has the mode line to be updated? */
8155 update_mode_line = (!NILP (w->update_mode_line) 8184 update_mode_line = (!NILP (w->update_mode_line)
8156 || update_mode_lines 8185 || update_mode_lines
@@ -8573,7 +8602,8 @@ redisplay_window (window, just_this_one_p)
8573 } 8602 }
8574 8603
8575 /* Try scrolling with try_window_id. */ 8604 /* Try scrolling with try_window_id. */
8576 else if (!windows_or_buffers_changed 8605 else if (/* Windows and buffers haven't changed. */
8606 !windows_or_buffers_changed
8577 /* Window must be either use window-based redisplay or 8607 /* Window must be either use window-based redisplay or
8578 be full width. */ 8608 be full width. */
8579 && (FRAME_WINDOW_P (f) 8609 && (FRAME_WINDOW_P (f)
@@ -8647,7 +8677,7 @@ redisplay_window (window, just_this_one_p)
8647 { 8677 {
8648 if (!just_this_one_p 8678 if (!just_this_one_p
8649 || current_buffer->clip_changed 8679 || current_buffer->clip_changed
8650 || beg_unchanged < CHARPOS (startp)) 8680 || BEG_UNCHANGED < CHARPOS (startp))
8651 /* Forget any recorded base line for line number display. */ 8681 /* Forget any recorded base line for line number display. */
8652 w->base_line_number = Qnil; 8682 w->base_line_number = Qnil;
8653 8683
@@ -9428,7 +9458,7 @@ static struct glyph_row *
9428get_last_unchanged_at_beg_row (w) 9458get_last_unchanged_at_beg_row (w)
9429 struct window *w; 9459 struct window *w;
9430{ 9460{
9431 int first_changed_pos = BEG + beg_unchanged; 9461 int first_changed_pos = BEG + BEG_UNCHANGED;
9432 struct glyph_row *row; 9462 struct glyph_row *row;
9433 struct glyph_row *row_found = NULL; 9463 struct glyph_row *row_found = NULL;
9434 int yb = window_text_bottom_y (w); 9464 int yb = window_text_bottom_y (w);
@@ -9488,7 +9518,7 @@ get_first_unchanged_at_end_row (w, delta, delta_bytes)
9488 end is in the range of changed text. If so, there is no 9518 end is in the range of changed text. If so, there is no
9489 unchanged row at the end of W's current matrix. */ 9519 unchanged row at the end of W's current matrix. */
9490 xassert (!NILP (w->window_end_valid)); 9520 xassert (!NILP (w->window_end_valid));
9491 if (XFASTINT (w->window_end_pos) >= end_unchanged) 9521 if (XFASTINT (w->window_end_pos) >= END_UNCHANGED)
9492 return NULL; 9522 return NULL;
9493 9523
9494 /* Set row to the last row in W's current matrix displaying text. */ 9524 /* Set row to the last row in W's current matrix displaying text. */
@@ -9517,7 +9547,7 @@ get_first_unchanged_at_end_row (w, delta, delta_bytes)
9517 subtracting end_unchanged we get the index of the last 9547 subtracting end_unchanged we get the index of the last
9518 unchanged character, and we have to add BEG to get its buffer 9548 unchanged character, and we have to add BEG to get its buffer
9519 position. */ 9549 position. */
9520 last_unchanged_pos = Z - end_unchanged + BEG; 9550 last_unchanged_pos = Z - END_UNCHANGED + BEG;
9521 last_unchanged_pos_old = last_unchanged_pos - *delta; 9551 last_unchanged_pos_old = last_unchanged_pos - *delta;
9522 9552
9523 /* Search backward from ROW for a row displaying a line that 9553 /* Search backward from ROW for a row displaying a line that
@@ -9644,10 +9674,10 @@ try_window_id (w)
9644 set end_unchanged to 0 in that case. */ 9674 set end_unchanged to 0 in that case. */
9645 if (MODIFF > SAVE_MODIFF) 9675 if (MODIFF > SAVE_MODIFF)
9646 { 9676 {
9647 if (GPT - BEG < beg_unchanged) 9677 if (GPT - BEG < BEG_UNCHANGED)
9648 beg_unchanged = GPT - BEG; 9678 BEG_UNCHANGED = GPT - BEG;
9649 if (Z - GPT < end_unchanged) 9679 if (Z - GPT < END_UNCHANGED)
9650 end_unchanged = Z - GPT; 9680 END_UNCHANGED = Z - GPT;
9651 } 9681 }
9652 9682
9653 /* If window starts after a line end, and the last change is in 9683 /* If window starts after a line end, and the last change is in
@@ -9655,7 +9685,7 @@ try_window_id (w)
9655 This case happens with stealth-fontification. */ 9685 This case happens with stealth-fontification. */
9656 row = MATRIX_ROW (w->current_matrix, XFASTINT (w->window_end_vpos)); 9686 row = MATRIX_ROW (w->current_matrix, XFASTINT (w->window_end_vpos));
9657 if (CHARPOS (start) > BEGV 9687 if (CHARPOS (start) > BEGV
9658 && Z - end_unchanged < CHARPOS (start) - 1 9688 && Z - END_UNCHANGED < CHARPOS (start) - 1
9659 && FETCH_BYTE (BYTEPOS (start) - 1) == '\n' 9689 && FETCH_BYTE (BYTEPOS (start) - 1) == '\n'
9660 && PT < MATRIX_ROW_END_CHARPOS (row)) 9690 && PT < MATRIX_ROW_END_CHARPOS (row))
9661 { 9691 {
@@ -9670,7 +9700,7 @@ try_window_id (w)
9670 9700
9671 /* Return quickly if changes are all below what is displayed in the 9701 /* Return quickly if changes are all below what is displayed in the
9672 window, and if PT is in the window. */ 9702 window, and if PT is in the window. */
9673 if (beg_unchanged > MATRIX_ROW_END_CHARPOS (row) 9703 if (BEG_UNCHANGED > MATRIX_ROW_END_CHARPOS (row)
9674 && PT < MATRIX_ROW_END_CHARPOS (row)) 9704 && PT < MATRIX_ROW_END_CHARPOS (row))
9675 { 9705 {
9676 /* We have to update window end positions because the buffer's 9706 /* We have to update window end positions because the buffer's
@@ -9690,10 +9720,6 @@ try_window_id (w)
9690 if (!TEXT_POS_EQUAL_P (start, row->start.pos)) 9720 if (!TEXT_POS_EQUAL_P (start, row->start.pos))
9691 return 0; 9721 return 0;
9692 9722
9693 /* Remember beg_unchanged and end_unchanged for debugging purposes. */
9694 IF_DEBUG (debug_beg_unchanged = beg_unchanged;
9695 debug_end_unchanged = end_unchanged);
9696
9697 /* Compute the position at which we have to start displaying new 9723 /* Compute the position at which we have to start displaying new
9698 lines. Some of the lines at the top of the window might be 9724 lines. Some of the lines at the top of the window might be
9699 reusable because they are not displaying changed text. Find the 9725 reusable because they are not displaying changed text. Find the
@@ -9769,7 +9795,7 @@ try_window_id (w)
9769 + delta); 9795 + delta);
9770 first_unchanged_at_end_vpos 9796 first_unchanged_at_end_vpos
9771 = MATRIX_ROW_VPOS (first_unchanged_at_end_row, current_matrix); 9797 = MATRIX_ROW_VPOS (first_unchanged_at_end_row, current_matrix);
9772 xassert (stop_pos >= Z - end_unchanged); 9798 xassert (stop_pos >= Z - END_UNCHANGED);
9773 } 9799 }
9774 } 9800 }
9775 else if (last_unchanged_at_beg_row == NULL) 9801 else if (last_unchanged_at_beg_row == NULL)
@@ -12408,6 +12434,9 @@ invisible_ellipsis_p (propval, list)
12408void 12434void
12409syms_of_xdisp () 12435syms_of_xdisp ()
12410{ 12436{
12437 Vresize_mini_config = Qnil;
12438 staticpro (&Vresize_mini_config);
12439
12411 Vwith_echo_area_save_vector = Qnil; 12440 Vwith_echo_area_save_vector = Qnil;
12412 staticpro (&Vwith_echo_area_save_vector); 12441 staticpro (&Vwith_echo_area_save_vector);
12413 12442