(display_mode_element): Don't let mode_line_proptrans_alist
grow without limit. Move recently used elements to the front.
This commit is contained in:
parent
a2c060f6b4
commit
adb63af12a
1 changed files with 14 additions and 1 deletions
15
src/xdisp.c
15
src/xdisp.c
|
@ -13695,15 +13695,28 @@ display_mode_element (it, depth, field_width, precision, elt, props, risky)
|
|||
|
||||
aelt = Fassoc (elt, mode_line_proptrans_alist);
|
||||
if (! NILP (aelt) && !NILP (Fequal (props, XCDR (aelt))))
|
||||
elt = XCAR (aelt);
|
||||
{
|
||||
mode_line_proptrans_alist
|
||||
= Fcons (aelt, Fdelq (aelt, mode_line_proptrans_alist));
|
||||
elt = XCAR (aelt);
|
||||
}
|
||||
else
|
||||
{
|
||||
Lisp_Object tem;
|
||||
|
||||
elt = Fcopy_sequence (elt);
|
||||
Fset_text_properties (make_number (0), Flength (elt),
|
||||
props, elt);
|
||||
/* Add this item to mode_line_proptrans_alist. */
|
||||
mode_line_proptrans_alist
|
||||
= Fcons (Fcons (elt, props),
|
||||
mode_line_proptrans_alist);
|
||||
/* Truncate mode_line_proptrans_alist
|
||||
to at most 50 elements. */
|
||||
tem = Fnthcdr (make_number (50),
|
||||
mode_line_proptrans_alist);
|
||||
if (! NILP (tem))
|
||||
XSETCDR (tem, Qnil);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue