Add support for `draw_inner_divider` in listers

This commit is contained in:
ZyX 2014-08-16 14:25:12 +04:00
parent 6106e914e3
commit a792fb0e1c
3 changed files with 12 additions and 2 deletions

View File

@ -23,6 +23,12 @@ following arguments:
Refer to :ref:`segment_info detailed description <dev-segments-info>` for
further details.
``draw_inner_divider``
If False (default) soft dividers between segments in the listed group will
not be drawn regardless of actual segment settings. If True they will be
drawn, again regardless of actual segment settings. Set it to ``None`` in
order to respect segment settings.
And also any other argument(s) specified by user in :ref:`args key
<config-themes-seg-args>` (no additional arguments by default).

View File

@ -10,13 +10,11 @@
{
"name": "tabnr",
"after": " ",
"draw_soft_divider": false,
"exclude_modes": ["tab", "buf", "buf_nc"],
"priority": 5
},
{
"name": "file_directory",
"draw_soft_divider": false,
"priority": 40
},
{

View File

@ -95,6 +95,8 @@ def get_attr_func(contents_func, key, args):
def process_segment_lister(pl, segment_info, parsed_segments, side, lister, subsegments, patcher_args):
for subsegment_info, subsegment_update in lister(pl=pl, segment_info=segment_info, **patcher_args):
draw_inner_divider = subsegment_update.pop('draw_inner_divider', False)
old_pslen = len(parsed_segments)
for subsegment in subsegments:
if subsegment_update:
subsegment = subsegment.copy()
@ -102,6 +104,10 @@ def process_segment_lister(pl, segment_info, parsed_segments, side, lister, subs
if subsegment_update['priority_multiplier'] and subsegment['priority']:
subsegment['priority'] *= subsegment_update['priority_multiplier']
process_segment(pl, side, subsegment_info, parsed_segments, subsegment)
new_pslen = len(parsed_segments)
if new_pslen > old_pslen + 1 and draw_inner_divider is not None:
for i in range(old_pslen, new_pslen - 1) if side == 'left' else range(old_pslen + 1, new_pslen):
parsed_segments[i]['draw_soft_divider'] = draw_inner_divider
return None