Create empty segment for single-side statuslines

This commit is contained in:
Kim Silkebækken 2012-12-13 14:57:04 +01:00
parent 9104d92555
commit 203a32e778
3 changed files with 12 additions and 7 deletions

View File

@ -2,14 +2,14 @@
class Colorscheme(object): class Colorscheme(object):
default_mode_key = '__default__' DEFAULT_MODE_KEY = '__default__'
def __init__(self, colorscheme): def __init__(self, colorscheme):
'''Initialize a colorscheme. '''Initialize a colorscheme.
''' '''
self.colors = {} self.colors = {}
self.modes_groups = { self.modes_groups = {
self.default_mode_key: {} self.DEFAULT_MODE_KEY: {}
} }
# Create a dict of color tuples with both a cterm and hex value # Create a dict of color tuples with both a cterm and hex value
@ -23,7 +23,7 @@ class Colorscheme(object):
for group_name, group_props in colorscheme['groups'].items(): for group_name, group_props in colorscheme['groups'].items():
group_attr_flag = self._get_attr_flag(group_props.get('attr', [])) group_attr_flag = self._get_attr_flag(group_props.get('attr', []))
self.modes_groups[self.default_mode_key][group_name] = { self.modes_groups[self.DEFAULT_MODE_KEY][group_name] = {
'fg': self.colors[group_props['fg']], 'fg': self.colors[group_props['fg']],
'bg': self.colors[group_props['bg']], 'bg': self.colors[group_props['bg']],
'attr': group_attr_flag, 'attr': group_attr_flag,
@ -73,7 +73,7 @@ class Colorscheme(object):
the default mode is returned. the default mode is returned.
''' '''
if not mode or mode not in self.modes_groups: if not mode or mode not in self.modes_groups:
mode = self.default_mode_key mode = self.DEFAULT_MODE_KEY
try: try:
return self.modes_groups[mode][group] return self.modes_groups[mode][group]

View File

@ -63,11 +63,11 @@ class Renderer(object):
''' '''
rendered_highlighted = u'' rendered_highlighted = u''
segments_len = len(self.segments) segments_len = len(self.segments)
mode = mode if mode in self.segments[0]['highlight'] else Colorscheme.default_mode_key mode = mode if mode in self.segments[0]['highlight'] else Colorscheme.DEFAULT_MODE_KEY
for index, segment in enumerate(self.segments): for index, segment in enumerate(self.segments):
prev_segment = self.segments[index - 1] if index > 0 else None prev_segment = self.segments[index - 1] if index > 0 else self.theme.EMPTY_SEGMENT
next_segment = self.segments[index + 1] if index < segments_len - 1 else None next_segment = self.segments[index + 1] if index < segments_len - 1 else self.theme.EMPTY_SEGMENT
compare_segment = next_segment if segment['side'] == 'left' else prev_segment compare_segment = next_segment if segment['side'] == 'left' else prev_segment
segment['rendered_raw'] = u'' segment['rendered_raw'] = u''

View File

@ -9,6 +9,11 @@ class Theme(object):
self.dividers = theme_config.get('dividers', common_config['dividers']) self.dividers = theme_config.get('dividers', common_config['dividers'])
self.segments = [] self.segments = []
self.EMPTY_SEGMENT = {
'contents': None,
'highlight': {self.colorscheme.DEFAULT_MODE_KEY: {'fg': (False, False), 'bg': (False, False), 'attr': 0}}
}
for side in ['left', 'right']: for side in ['left', 'right']:
for segment in theme_config['segments'].get(side, []): for segment in theme_config['segments'].get(side, []):
contents = None contents = None