From a792fb0e1c215429ac0121de28382329d5634b31 Mon Sep 17 00:00:00 2001 From: ZyX Date: Sat, 16 Aug 2014 14:25:12 +0400 Subject: [PATCH] Add support for `draw_inner_divider` in listers --- docs/source/develop/listers.rst | 6 ++++++ powerline/config_files/themes/vim/tabline.json | 2 -- powerline/segment.py | 6 ++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/docs/source/develop/listers.rst b/docs/source/develop/listers.rst index dc027511..8c7b439e 100644 --- a/docs/source/develop/listers.rst +++ b/docs/source/develop/listers.rst @@ -23,6 +23,12 @@ following arguments: Refer to :ref:`segment_info detailed description ` 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 ` (no additional arguments by default). diff --git a/powerline/config_files/themes/vim/tabline.json b/powerline/config_files/themes/vim/tabline.json index c51d66fa..d4a9e69b 100644 --- a/powerline/config_files/themes/vim/tabline.json +++ b/powerline/config_files/themes/vim/tabline.json @@ -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 }, { diff --git a/powerline/segment.py b/powerline/segment.py index cde42398..a1958d0e 100644 --- a/powerline/segment.py +++ b/powerline/segment.py @@ -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