/* Return true if any overlay_arrows have moved or overlay-arrow-string
- has changed. */
+ has changed.
+ If SET_REDISPLAY is true, additionally, set the `redisplay' bit in those
+ buffers that are affected. */
static bool
overlay_arrows_changed_p (bool set_redisplay)
{
Lisp_Object vlist;
+ bool changed = false;
for (vlist = Voverlay_arrow_variable_list;
CONSP (vlist);
{
if (buf)
bset_redisplay (buf);
+ changed = true;
}
else
return true;
}
}
- return false;
+ return changed;
}
/* Mark overlay arrows to be updated on next redisplay. */
if (up_to_date > 0)
{
Lisp_Object val = find_symbol_value (var);
+ if (!MARKERP (val))
+ continue;
Fput (var, Qlast_arrow_position,
COERCE_MARKER (val));
Fput (var, Qlast_arrow_string,