Commit 44ad1cf7 authored by Stefan Monnier's avatar Stefan Monnier
Browse files

* src/xdisp.c (redisplay_internal): Don't call set_window_update_flags.

Set invisible frames's `redisplay' when a full redisplay is requested.
(redisplay_window): Set must_be_updated_p instead.
(redisplay_mode_lines): Don't set must_be_updated_p any more.
(display_mode_lines): Set it here instead.
* src/dispextern.h (set_window_update_flags): Remove.
* src/dispnew.c (set_window_update_flags): Remove `b' argument; make static.

Fixes: debbugs:15999
parent f9b697dd
2013-11-30 Stefan Monnier <monnier@iro.umontreal.ca>
* xdisp.c (redisplay_internal): Don't call set_window_update_flags.
Set invisible frames's `redisplay' when a full redisplay is requested.
(redisplay_window): Set must_be_updated_p instead (bug#15999).
(redisplay_mode_lines): Don't set must_be_updated_p any more.
(display_mode_lines): Set it here instead.
* dispnew.c (set_window_update_flags): Remove `b' argument; make static.
* dispextern.h (set_window_update_flags): Remove.
2013-11-29 Stefan Monnier <monnier@iro.umontreal.ca> 2013-11-29 Stefan Monnier <monnier@iro.umontreal.ca>
* fns.c (internal_equal): Add a hash_table argument to handle cycles. * fns.c (internal_equal): Add a hash_table argument to handle cycles.
......
...@@ -3462,7 +3462,6 @@ void blank_row (struct window *, struct glyph_row *, int); ...@@ -3462,7 +3462,6 @@ void blank_row (struct window *, struct glyph_row *, int);
void clear_glyph_matrix_rows (struct glyph_matrix *, int, int); void clear_glyph_matrix_rows (struct glyph_matrix *, int, int);
void clear_glyph_row (struct glyph_row *); void clear_glyph_row (struct glyph_row *);
void prepare_desired_row (struct glyph_row *); void prepare_desired_row (struct glyph_row *);
void set_window_update_flags (struct window *, struct buffer *, bool);
void update_single_window (struct window *, bool); void update_single_window (struct window *, bool);
void do_pending_window_change (bool); void do_pending_window_change (bool);
void change_frame_size (struct frame *, int, int, bool, bool, bool); void change_frame_size (struct frame *, int, int, bool, bool, bool);
......
...@@ -97,6 +97,7 @@ static bool scrolling (struct frame *); ...@@ -97,6 +97,7 @@ static bool scrolling (struct frame *);
static void set_window_cursor_after_update (struct window *); static void set_window_cursor_after_update (struct window *);
static void adjust_frame_glyphs_for_window_redisplay (struct frame *); static void adjust_frame_glyphs_for_window_redisplay (struct frame *);
static void adjust_frame_glyphs_for_frame_redisplay (struct frame *); static void adjust_frame_glyphs_for_frame_redisplay (struct frame *);
static void set_window_update_flags (struct window *w, bool on_p);
/* True means last display completed. False means it was preempted. */ /* True means last display completed. False means it was preempted. */
...@@ -2944,8 +2945,8 @@ redraw_frame (struct frame *f) ...@@ -2944,8 +2945,8 @@ redraw_frame (struct frame *f)
/* Mark all windows as inaccurate, so that every window will have /* Mark all windows as inaccurate, so that every window will have
its redisplay done. */ its redisplay done. */
mark_window_display_accurate (FRAME_ROOT_WINDOW (f), 0); mark_window_display_accurate (FRAME_ROOT_WINDOW (f), 0);
set_window_update_flags (XWINDOW (FRAME_ROOT_WINDOW (f)), NULL, 1); set_window_update_flags (XWINDOW (FRAME_ROOT_WINDOW (f)), true);
f->garbaged = 0; f->garbaged = false;
} }
DEFUN ("redraw-frame", Fredraw_frame, Sredraw_frame, 0, 1, 0, DEFUN ("redraw-frame", Fredraw_frame, Sredraw_frame, 0, 1, 0,
...@@ -3029,7 +3030,7 @@ update_frame (struct frame *f, bool force_p, bool inhibit_hairy_id_p) ...@@ -3029,7 +3030,7 @@ update_frame (struct frame *f, bool force_p, bool inhibit_hairy_id_p)
Lisp_Object tem; Lisp_Object tem;
update_window (w, 1); update_window (w, 1);
w->must_be_updated_p = 0; w->must_be_updated_p = false;
/* Swap tool-bar strings. We swap because we want to /* Swap tool-bar strings. We swap because we want to
reuse strings. */ reuse strings. */
...@@ -3075,7 +3076,7 @@ update_frame (struct frame *f, bool force_p, bool inhibit_hairy_id_p) ...@@ -3075,7 +3076,7 @@ update_frame (struct frame *f, bool force_p, bool inhibit_hairy_id_p)
do_pause: do_pause:
/* Reset flags indicating that a window should be updated. */ /* Reset flags indicating that a window should be updated. */
set_window_update_flags (root_window, NULL, 0); set_window_update_flags (root_window, false);
display_completed = !paused_p; display_completed = !paused_p;
return paused_p; return paused_p;
...@@ -3098,7 +3099,7 @@ update_frame_with_menu (struct frame *f) ...@@ -3098,7 +3099,7 @@ update_frame_with_menu (struct frame *f)
frame matrix we operate. */ frame matrix we operate. */
set_frame_matrix_frame (f); set_frame_matrix_frame (f);
/* Update the display */ /* Update the display. */
update_begin (f); update_begin (f);
/* Force update_frame_1 not to stop due to pending input, and not /* Force update_frame_1 not to stop due to pending input, and not
try scrolling. */ try scrolling. */
...@@ -3122,7 +3123,7 @@ update_frame_with_menu (struct frame *f) ...@@ -3122,7 +3123,7 @@ update_frame_with_menu (struct frame *f)
#endif #endif
/* Reset flags indicating that a window should be updated. */ /* Reset flags indicating that a window should be updated. */
set_window_update_flags (root_window, NULL, 0); set_window_update_flags (root_window, false);
} }
...@@ -3174,7 +3175,7 @@ update_single_window (struct window *w, bool force_p) ...@@ -3174,7 +3175,7 @@ update_single_window (struct window *w, bool force_p)
update_end (f); update_end (f);
/* Reset flag in W. */ /* Reset flag in W. */
w->must_be_updated_p = 0; w->must_be_updated_p = false;
} }
} }
...@@ -3897,18 +3898,17 @@ set_window_cursor_after_update (struct window *w) ...@@ -3897,18 +3898,17 @@ set_window_cursor_after_update (struct window *w)
} }
/* If B is NULL, set WINDOW->must_be_updated_p to ON_P for all windows in /* Set WINDOW->must_be_updated_p to ON_P for all windows in
the window tree rooted at W. Otherwise set WINDOW->must_be_updated_p the window tree rooted at W. */
to ON_P only for windows that displays B. */
void static void
set_window_update_flags (struct window *w, struct buffer *b, bool on_p) set_window_update_flags (struct window *w, bool on_p)
{ {
while (w) while (w)
{ {
if (WINDOWP (w->contents)) if (WINDOWP (w->contents))
set_window_update_flags (XWINDOW (w->contents), b, on_p); set_window_update_flags (XWINDOW (w->contents), on_p);
else if (!(b && b != XBUFFER (w->contents))) else
w->must_be_updated_p = on_p; w->must_be_updated_p = on_p;
w = NILP (w->next) ? 0 : XWINDOW (w->next); w = NILP (w->next) ? 0 : XWINDOW (w->next);
......
...@@ -3523,7 +3523,7 @@ extern void pop_message_unwind (void); ...@@ -3523,7 +3523,7 @@ extern void pop_message_unwind (void);
extern Lisp_Object restore_message_unwind (Lisp_Object); extern Lisp_Object restore_message_unwind (Lisp_Object);
extern void restore_message (void); extern void restore_message (void);
extern Lisp_Object current_message (void); extern Lisp_Object current_message (void);
extern void clear_message (int, int); extern void clear_message (bool, bool);
extern void message (const char *, ...) ATTRIBUTE_FORMAT_PRINTF (1, 2); extern void message (const char *, ...) ATTRIBUTE_FORMAT_PRINTF (1, 2);
extern void message1 (const char *); extern void message1 (const char *);
extern void message1_nolog (const char *); extern void message1_nolog (const char *);
......
...@@ -835,7 +835,7 @@ static int single_display_spec_string_p (Lisp_Object, Lisp_Object); ...@@ -835,7 +835,7 @@ static int single_display_spec_string_p (Lisp_Object, Lisp_Object);
static int display_prop_string_p (Lisp_Object, Lisp_Object); static int display_prop_string_p (Lisp_Object, Lisp_Object);
static int row_for_charpos_p (struct glyph_row *, ptrdiff_t); static int row_for_charpos_p (struct glyph_row *, ptrdiff_t);
static int cursor_row_p (struct glyph_row *); static int cursor_row_p (struct glyph_row *);
static int redisplay_mode_lines (Lisp_Object, int); static int redisplay_mode_lines (Lisp_Object, bool);
static char *decode_mode_spec_coding (Lisp_Object, char *, int); static char *decode_mode_spec_coding (Lisp_Object, char *, int);
   
static Lisp_Object get_it_property (struct it *it, Lisp_Object prop); static Lisp_Object get_it_property (struct it *it, Lisp_Object prop);
...@@ -889,7 +889,7 @@ static void sync_frame_with_window_matrix_rows (struct window *); ...@@ -889,7 +889,7 @@ static void sync_frame_with_window_matrix_rows (struct window *);
static void redisplay_internal (void); static void redisplay_internal (void);
static int echo_area_display (int); static int echo_area_display (int);
static void redisplay_windows (Lisp_Object); static void redisplay_windows (Lisp_Object);
static void redisplay_window (Lisp_Object, int); static void redisplay_window (Lisp_Object, bool);
static Lisp_Object redisplay_window_error (Lisp_Object); static Lisp_Object redisplay_window_error (Lisp_Object);
static Lisp_Object redisplay_window_0 (Lisp_Object); static Lisp_Object redisplay_window_0 (Lisp_Object);
static Lisp_Object redisplay_window_1 (Lisp_Object); static Lisp_Object redisplay_window_1 (Lisp_Object);
...@@ -1429,7 +1429,7 @@ pos_visible_p (struct window *w, ptrdiff_t charpos, int *x, int *y, ...@@ -1429,7 +1429,7 @@ pos_visible_p (struct window *w, ptrdiff_t charpos, int *x, int *y,
if (top_y < window_top_y) if (top_y < window_top_y)
visible_p = bottom_y > window_top_y; visible_p = bottom_y > window_top_y;
else if (top_y < it.last_visible_y) else if (top_y < it.last_visible_y)
visible_p = 1; visible_p = true;
if (bottom_y >= it.last_visible_y if (bottom_y >= it.last_visible_y
&& it.bidi_p && it.bidi_it.scan_dir == -1 && it.bidi_p && it.bidi_it.scan_dir == -1
&& IT_CHARPOS (it) < charpos) && IT_CHARPOS (it) < charpos)
...@@ -1667,7 +1667,7 @@ pos_visible_p (struct window *w, ptrdiff_t charpos, int *x, int *y, ...@@ -1667,7 +1667,7 @@ pos_visible_p (struct window *w, ptrdiff_t charpos, int *x, int *y,
if (charpos < IT_CHARPOS (it) if (charpos < IT_CHARPOS (it)
|| (it.what == IT_EOB && charpos == IT_CHARPOS (it))) || (it.what == IT_EOB && charpos == IT_CHARPOS (it)))
{ {
visible_p = 1; visible_p = true;
RESTORE_IT (&it2, &it2, it2data); RESTORE_IT (&it2, &it2, it2data);
move_it_to (&it2, charpos, -1, -1, -1, MOVE_TO_POS); move_it_to (&it2, charpos, -1, -1, -1, MOVE_TO_POS);
*x = it2.current_x; *x = it2.current_x;
...@@ -2913,7 +2913,7 @@ init_iterator (struct it *it, struct window *w, ...@@ -2913,7 +2913,7 @@ init_iterator (struct it *it, struct window *w,
with a left box line. */ with a left box line. */
face = FACE_FROM_ID (it->f, remapped_base_face_id); face = FACE_FROM_ID (it->f, remapped_base_face_id);
if (face->box != FACE_NO_BOX) if (face->box != FACE_NO_BOX)
it->start_of_box_run_p = 1; it->start_of_box_run_p = true;
} }
   
/* If a buffer position was specified, set the iterator there, /* If a buffer position was specified, set the iterator there,
...@@ -3341,7 +3341,7 @@ handle_stop (struct it *it) ...@@ -3341,7 +3341,7 @@ handle_stop (struct it *it)
pop_it (it); pop_it (it);
else else
{ {
it->ignore_overlay_strings_at_pos_p = 1; it->ignore_overlay_strings_at_pos_p = true;
it->string_from_display_prop_p = 0; it->string_from_display_prop_p = 0;
it->from_disp_prop_p = 0; it->from_disp_prop_p = 0;
handle_overlay_change_p = 0; handle_overlay_change_p = 0;
...@@ -4206,13 +4206,13 @@ handle_invisible_prop (struct it *it) ...@@ -4206,13 +4206,13 @@ handle_invisible_prop (struct it *it)
prop = Fget_text_property (end_charpos, Qinvisible, it->string); prop = Fget_text_property (end_charpos, Qinvisible, it->string);
invis_p = TEXT_PROP_MEANS_INVISIBLE (prop); invis_p = TEXT_PROP_MEANS_INVISIBLE (prop);
if (invis_p == 2) if (invis_p == 2)
display_ellipsis_p = 1; display_ellipsis_p = true;
} }
} }
while (invis_p && endpos < len); while (invis_p && endpos < len);
   
if (display_ellipsis_p) if (display_ellipsis_p)
it->ellipsis_p = 1; it->ellipsis_p = true;
   
if (endpos < len) if (endpos < len)
{ {
...@@ -4324,9 +4324,9 @@ handle_invisible_prop (struct it *it) ...@@ -4324,9 +4324,9 @@ handle_invisible_prop (struct it *it)
tem = next_stop; tem = next_stop;
   
/* If there are adjacent invisible texts, don't lose the /* If there are adjacent invisible texts, don't lose the
second one's ellipsis. */ second one's ellipsis. */
if (invis_p == 2) if (invis_p == 2)
display_ellipsis_p = 1; display_ellipsis_p = true;
} }
while (invis_p); while (invis_p);
   
...@@ -4334,10 +4334,10 @@ handle_invisible_prop (struct it *it) ...@@ -4334,10 +4334,10 @@ handle_invisible_prop (struct it *it)
if (it->bidi_p) if (it->bidi_p)
{ {
ptrdiff_t bpos = CHAR_TO_BYTE (newpos); ptrdiff_t bpos = CHAR_TO_BYTE (newpos);
int on_newline = int on_newline
bpos == ZV_BYTE || FETCH_BYTE (bpos) == '\n'; = bpos == ZV_BYTE || FETCH_BYTE (bpos) == '\n';
int after_newline = int after_newline
newpos <= BEGV || FETCH_BYTE (bpos - 1) == '\n'; = newpos <= BEGV || FETCH_BYTE (bpos - 1) == '\n';
   
/* If the invisible text ends on a newline or on a /* If the invisible text ends on a newline or on a
character after a newline, we can avoid the costly, character after a newline, we can avoid the costly,
...@@ -4444,7 +4444,7 @@ handle_invisible_prop (struct it *it) ...@@ -4444,7 +4444,7 @@ handle_invisible_prop (struct it *it)
it->position.charpos = newpos - 1; it->position.charpos = newpos - 1;
it->position.bytepos = CHAR_TO_BYTE (it->position.charpos); it->position.bytepos = CHAR_TO_BYTE (it->position.charpos);
} }
it->ellipsis_p = 1; it->ellipsis_p = true;
/* Let the ellipsis display before /* Let the ellipsis display before
considering any properties of the following char. considering any properties of the following char.
Fixes jasonr@gnu.org 01 Oct 07 bug. */ Fixes jasonr@gnu.org 01 Oct 07 bug. */
...@@ -4489,7 +4489,7 @@ setup_for_ellipsis (struct it *it, int len) ...@@ -4489,7 +4489,7 @@ setup_for_ellipsis (struct it *it, int len)
it->saved_face_id = it->face_id = DEFAULT_FACE_ID; it->saved_face_id = it->face_id = DEFAULT_FACE_ID;
   
it->method = GET_FROM_DISPLAY_VECTOR; it->method = GET_FROM_DISPLAY_VECTOR;
it->ellipsis_p = 1; it->ellipsis_p = true;
} }
   
   
...@@ -4958,7 +4958,7 @@ handle_single_display_spec (struct it *it, Lisp_Object spec, Lisp_Object object, ...@@ -4958,7 +4958,7 @@ handle_single_display_spec (struct it *it, Lisp_Object spec, Lisp_Object object,
it->method = GET_FROM_IMAGE; it->method = GET_FROM_IMAGE;
it->from_overlay = Qnil; it->from_overlay = Qnil;
it->face_id = face_id; it->face_id = face_id;
it->from_disp_prop_p = 1; it->from_disp_prop_p = true;
   
/* Say that we haven't consumed the characters with /* Say that we haven't consumed the characters with
`display' property yet. The call to pop_it in `display' property yet. The call to pop_it in
...@@ -5040,7 +5040,7 @@ handle_single_display_spec (struct it *it, Lisp_Object spec, Lisp_Object object, ...@@ -5040,7 +5040,7 @@ handle_single_display_spec (struct it *it, Lisp_Object spec, Lisp_Object object,
when we are finished with the glyph property value. */ when we are finished with the glyph property value. */
push_it (it, position); push_it (it, position);
it->from_overlay = overlay; it->from_overlay = overlay;
it->from_disp_prop_p = 1; it->from_disp_prop_p = true;
   
if (NILP (location)) if (NILP (location))
it->area = TEXT_AREA; it->area = TEXT_AREA;
...@@ -5060,7 +5060,7 @@ handle_single_display_spec (struct it *it, Lisp_Object spec, Lisp_Object object, ...@@ -5060,7 +5060,7 @@ handle_single_display_spec (struct it *it, Lisp_Object spec, Lisp_Object object,
it->stop_charpos = 0; it->stop_charpos = 0;
it->prev_stop = 0; it->prev_stop = 0;
it->base_level_stop = 0; it->base_level_stop = 0;
it->string_from_display_prop_p = 1; it->string_from_display_prop_p = true;
/* Say that we haven't consumed the characters with /* Say that we haven't consumed the characters with
`display' property yet. The call to pop_it in `display' property yet. The call to pop_it in
set_iterator_to_next will clean this up. */ set_iterator_to_next will clean this up. */
...@@ -5426,7 +5426,7 @@ next_overlay_string (struct it *it) ...@@ -5426,7 +5426,7 @@ next_overlay_string (struct it *it)
processed the overlay strings there already, so that processed the overlay strings there already, so that
next_element_from_buffer doesn't try it again. */ next_element_from_buffer doesn't try it again. */
if (NILP (it->string) && IT_CHARPOS (*it) >= it->end_charpos) if (NILP (it->string) && IT_CHARPOS (*it) >= it->end_charpos)
it->overlay_strings_at_end_processed_p = 1; it->overlay_strings_at_end_processed_p = true;
} }
else else
{ {
...@@ -6109,7 +6109,7 @@ forward_to_next_line_start (struct it *it, int *skipped_p, ...@@ -6109,7 +6109,7 @@ forward_to_next_line_start (struct it *it, int *skipped_p,
if (bidi_it_prev) if (bidi_it_prev)
*bidi_it_prev = bprev; *bidi_it_prev = bprev;
} }
*skipped_p = newline_found_p = 1; *skipped_p = newline_found_p = true;
} }
else else
{ {
...@@ -6799,9 +6799,9 @@ get_next_display_element (struct it *it) ...@@ -6799,9 +6799,9 @@ get_next_display_element (struct it *it)
if (! ASCII_CHAR_P (c) && ! NILP (Vnobreak_char_display)) if (! ASCII_CHAR_P (c) && ! NILP (Vnobreak_char_display))
{ {
if (c == 0xA0) if (c == 0xA0)
nonascii_space_p = 1; nonascii_space_p = true;
else if (c == 0xAD || c == 0x2010 || c == 0x2011) else if (c == 0xAD || c == 0x2010 || c == 0x2011)
nonascii_hyphen_p = 1; nonascii_hyphen_p = true;
} }
   
/* Translate control characters into `\003' or `^C' form. /* Translate control characters into `\003' or `^C' form.
...@@ -7260,12 +7260,12 @@ set_iterator_to_next (struct it *it, int reseat_p) ...@@ -7260,12 +7260,12 @@ set_iterator_to_next (struct it *it, int reseat_p)
if (it->method == GET_FROM_STRING if (it->method == GET_FROM_STRING
&& it->current.overlay_string_index >= 0 && it->current.overlay_string_index >= 0
&& it->n_overlay_strings > 0) && it->n_overlay_strings > 0)
it->ignore_overlay_strings_at_pos_p = 1; it->ignore_overlay_strings_at_pos_p = true;
it->len = it->dpvec_char_len; it->len = it->dpvec_char_len;
set_iterator_to_next (it, reseat_p); set_iterator_to_next (it, reseat_p);
} }
   
/* Maybe recheck faces after display vector */ /* Maybe recheck faces after display vector. */
if (recheck_faces) if (recheck_faces)
it->stop_charpos = IT_CHARPOS (*it); it->stop_charpos = IT_CHARPOS (*it);
} }
...@@ -7290,7 +7290,7 @@ set_iterator_to_next (struct it *it, int reseat_p) ...@@ -7290,7 +7290,7 @@ set_iterator_to_next (struct it *it, int reseat_p)
else else
{ {
/* Not an overlay string. There could be padding, so test /* Not an overlay string. There could be padding, so test
against it->end_charpos . */ against it->end_charpos. */
if (IT_STRING_CHARPOS (*it) >= it->end_charpos) if (IT_STRING_CHARPOS (*it) >= it->end_charpos)
goto consider_string_end; goto consider_string_end;
} }
...@@ -7802,7 +7802,7 @@ next_element_from_string (struct it *it) ...@@ -7802,7 +7802,7 @@ next_element_from_string (struct it *it)
static int static int
next_element_from_c_string (struct it *it) next_element_from_c_string (struct it *it)
{ {
int success_p = 1; bool success_p = true;
   
eassert (it->s); eassert (it->s);
eassert (!it->bidi_p || it->s == it->bidi_it.string.s); eassert (!it->bidi_p || it->s == it->bidi_it.string.s);
...@@ -7861,7 +7861,7 @@ next_element_from_ellipsis (struct it *it) ...@@ -7861,7 +7861,7 @@ next_element_from_ellipsis (struct it *it)
it->method = GET_FROM_BUFFER; it->method = GET_FROM_BUFFER;
it->object = it->w->contents; it->object = it->w->contents;
reseat_at_next_visible_line_start (it, 1); reseat_at_next_visible_line_start (it, 1);
it->face_before_selective_p = 1; it->face_before_selective_p = true;
} }
   
return GET_NEXT_DISPLAY_ELEMENT (it); return GET_NEXT_DISPLAY_ELEMENT (it);
...@@ -7930,7 +7930,7 @@ compute_stop_pos_backwards (struct it *it) ...@@ -7930,7 +7930,7 @@ compute_stop_pos_backwards (struct it *it)
it->prev_stop = it->stop_charpos; it->prev_stop = it->stop_charpos;
else else
it->prev_stop = BEGV; it->prev_stop = BEGV;
it->bidi_p = 1; it->bidi_p = true;
it->current = save_current; it->current = save_current;
it->position = save_position; it->position = save_position;
it->stop_charpos = save_stop_pos; it->stop_charpos = save_stop_pos;
...@@ -7976,7 +7976,7 @@ handle_stop_backwards (struct it *it, ptrdiff_t charpos) ...@@ -7976,7 +7976,7 @@ handle_stop_backwards (struct it *it, ptrdiff_t charpos)
} }
while (charpos <= where_we_are); while (charpos <= where_we_are);
   
it->bidi_p = 1; it->bidi_p = true;
it->current = save_current; it->current = save_current;
it->position = save_position; it->position = save_position;
next_stop = it->stop_charpos; next_stop = it->stop_charpos;
...@@ -7993,7 +7993,7 @@ handle_stop_backwards (struct it *it, ptrdiff_t charpos) ...@@ -7993,7 +7993,7 @@ handle_stop_backwards (struct it *it, ptrdiff_t charpos)
static int static int
next_element_from_buffer (struct it *it) next_element_from_buffer (struct it *it)
{ {
int success_p = 1; bool success_p = true;
   
eassert (IT_CHARPOS (*it) >= BEGV); eassert (IT_CHARPOS (*it) >= BEGV);
eassert (NILP (it->string) && !it->s); eassert (NILP (it->string) && !it->s);
...@@ -8023,7 +8023,7 @@ next_element_from_buffer (struct it *it) ...@@ -8023,7 +8023,7 @@ next_element_from_buffer (struct it *it)
overlay_strings_follow_p = 0; overlay_strings_follow_p = 0;
else else
{ {
it->overlay_strings_at_end_processed_p = 1; it->overlay_strings_at_end_processed_p = true;
overlay_strings_follow_p = get_overlay_strings (it, 0); overlay_strings_follow_p = get_overlay_strings (it, 0);
} }
   
...@@ -9746,7 +9746,7 @@ message3 (Lisp_Object m) ...@@ -9746,7 +9746,7 @@ message3 (Lisp_Object m)
struct gcpro gcpro1; struct gcpro gcpro1;
   
GCPRO1 (m); GCPRO1 (m);
clear_message (1,1); clear_message (true, true);
cancel_echoing (); cancel_echoing ();
   
/* First flush out any partial line written with print. */ /* First flush out any partial line written with print. */
...@@ -9816,7 +9816,7 @@ message3_nolog (Lisp_Object m) ...@@ -9816,7 +9816,7 @@ message3_nolog (Lisp_Object m)
echo_message_buffer = Qnil; echo_message_buffer = Qnil;
} }
else else
clear_message (1, 1); clear_message (true, true);
   
do_pending_window_change (0); do_pending_window_change (0);
echo_area_display (1); echo_area_display (1);
...@@ -10089,7 +10089,7 @@ with_echo_area_buffer (struct window *w, int which, ...@@ -10089,7 +10089,7 @@ with_echo_area_buffer (struct window *w, int which,
else else
{ {
this_one = 0, the_other = 1; this_one = 0, the_other = 1;
clear_buffer_p = 1; clear_buffer_p = true;
   
/* We need a fresh one in case the current echo buffer equals /* We need a fresh one in case the current echo buffer equals
the one containing the last displayed echo area message. */ the one containing the last displayed echo area message. */
...@@ -10106,7 +10106,7 @@ with_echo_area_buffer (struct window *w, int which, ...@@ -10106,7 +10106,7 @@ with_echo_area_buffer (struct window *w, int which,
= (EQ (echo_area_buffer[the_other], echo_buffer[this_one]) = (EQ (echo_area_buffer[the_other], echo_buffer[this_one])
? echo_buffer[the_other] ? echo_buffer[the_other]
: echo_buffer[this_one]); : echo_buffer[this_one]);
clear_buffer_p = 1; clear_buffer_p = true;
} }
   
buffer = echo_area_buffer[this_one]; buffer = echo_area_buffer[this_one];
...@@ -10732,12 +10732,12 @@ set_message_1 (ptrdiff_t a1, Lisp_Object string) ...@@ -10732,12 +10732,12 @@ set_message_1 (ptrdiff_t a1, Lisp_Object string)
last displayed. */ last displayed. */
   
void void
clear_message (int current_p, int last_displayed_p) clear_message (bool current_p, bool last_displayed_p)
{ {
if (current_p) if (current_p)
{ {
echo_area_buffer[0] = Qnil; echo_area_buffer[0] = Qnil;
message_cleared_p = 1; message_cleared_p = true;
} }
   
if (last_displayed_p) if (last_displayed_p)
...@@ -10819,7 +10819,7 @@ echo_area_display (int update_frame_p) ...@@ -10819,7 +10819,7 @@ echo_area_display (int update_frame_p)
{ {
echo_area_window = mini_window; echo_area_window = mini_window;
window_height_changed_p = display_echo_area (w); window_height_changed_p = display_echo_area (w);
w->must_be_updated_p = 1; w->must_be_updated_p = true;
   
/* Update the display, unless called from redisplay_internal. /* Update the display, unless called from redisplay_internal.
Also don't update the screen during redisplay itself. The Also don't update the screen during redisplay itself. The
...@@ -10835,7 +10835,7 @@ echo_area_display (int update_frame_p) ...@@ -10835,7 +10835,7 @@ echo_area_display (int update_frame_p)
been called, so that mode lines above the echo area are been called, so that mode lines above the echo area are
garbaged. This looks odd, so we prevent it here. */ garbaged. This looks odd, so we prevent it here. */
if (!display_completed) if (!display_completed)
n = redisplay_mode_lines (FRAME_ROOT_WINDOW (f), 0); n = redisplay_mode_lines (FRAME_ROOT_WINDOW (f), false);
   
if (window_height_changed_p if (window_height_changed_p
/* Don't do this if Emacs is shutting down. Redisplay /* Don't do this if Emacs is shutting down. Redisplay
...@@ -12453,7 +12453,7 @@ hscroll_window_tree (Lisp_Object window) ...@@ -12453,7 +12453,7 @@ hscroll_window_tree (Lisp_Object window)
/* For left-to-right rows, hscroll when cursor is either /* For left-to-right rows, hscroll when cursor is either
(i) inside the right hscroll margin, or (ii) if it is (i) inside the right hscroll margin, or (ii) if it is
inside the left margin and the window is already inside the left margin and the window is already
hscrolled. */ hscrolled. */
&& ((!row_r2l_p && ((!row_r2l_p
&& ((w->hscroll && ((w->hscroll
&& w->cursor.x <= h_margin) && w->cursor.x <= h_margin)
...@@ -12470,7 +12470,7 @@ hscroll_window_tree (Lisp_Object window) ...@@ -12470,7 +12470,7 @@ hscroll_window_tree (Lisp_Object window)
&& ((cursor_row->enabled_p && ((cursor_row->enabled_p
/* FIXME: It is confusing to set the /* FIXME: It is confusing to set the
truncated_on_right_p flag when R2L rows truncated_on_right_p flag when R2L rows
are actually truncated on the left. */ are actually truncated on the left. */
&& cursor_row->truncated_on_right_p && cursor_row->truncated_on_right_p
&& w->cursor.x <= h_margin) && w->cursor.x <= h_margin)
|| (w->hscroll || (w->hscroll
...@@ -13425,6 +13425,10 @@ redisplay_internal (void) ...