mirror of
https://github.com/powerline/powerline.git
synced 2025-07-23 05:46:01 +02:00
Don’t mess with hl()+contents
What does hl() mean? It looks like “highlight an empty string”, but is actually “reset highlight style”. In addition if you are writing “hl()” function for new renderer you need to care about “contents” variable (in two places!: None for super() call and (contents or u'') after super() call) though function is actually doing nothing with it. It is just inconvenient.
This commit is contained in:
parent
2caa136f26
commit
a6b3bc93ab
@ -52,7 +52,7 @@ class Renderer(object):
|
||||
|
||||
if not width:
|
||||
# No width specified, so we don't need to crop or pad anything
|
||||
return self._returned_value(u''.join([segment['_rendered_hl'] for segment in segments]) + self.hl(), segments, output_raw)
|
||||
return self._returned_value(u''.join([segment['_rendered_hl'] for segment in segments]) + self.hlstyle(), segments, output_raw)
|
||||
|
||||
# Create an ordered list of segments that can be dropped
|
||||
segments_priority = [segment for segment in sorted(segments, key=lambda segment: segment['priority'], reverse=True) if segment['priority'] > 0]
|
||||
@ -75,7 +75,7 @@ class Renderer(object):
|
||||
segment['_space_right'] += space_side
|
||||
segments_spacers[0]['_space_right'] += distribute_len_remainder
|
||||
|
||||
rendered_highlighted = u''.join([segment['_rendered_hl'] for segment in self._render_segments(mode, theme, segments)]) + self.hl()
|
||||
rendered_highlighted = u''.join([segment['_rendered_hl'] for segment in self._render_segments(mode, theme, segments)]) + self.hlstyle()
|
||||
|
||||
return self._returned_value(rendered_highlighted, segments, output_raw)
|
||||
|
||||
@ -177,5 +177,8 @@ class Renderer(object):
|
||||
b = int & 0xff
|
||||
return r, g, b
|
||||
|
||||
def hl(self, contents=None, fg=None, bg=None, attr=None):
|
||||
def hlstyle(fg=None, bg=None, attr=None):
|
||||
raise NotImplementedError
|
||||
|
||||
def hl(self, contents, fg=None, bg=None, attr=None):
|
||||
return self.hlstyle(fg, bg, attr) + (contents or u'')
|
||||
|
@ -5,13 +5,13 @@ from powerline.renderers.shell import ShellRenderer
|
||||
|
||||
class BashPromptRenderer(ShellRenderer):
|
||||
'''Powerline bash prompt segment renderer.'''
|
||||
def hl(self, contents=None, fg=None, bg=None, attr=None):
|
||||
def hlstyle(self, fg=None, bg=None, attr=None):
|
||||
'''Highlight a segment.
|
||||
|
||||
Returns the default ShellRenderer escape sequence with \[...\] wrapped
|
||||
around it (required in bash prompts).
|
||||
'''
|
||||
return '\[' + super(BashPromptRenderer, self).hl(None, fg, bg, attr) + '\]' + (contents or u'')
|
||||
return '\[' + super(BashPromptRenderer, self).hlstyle(fg, bg, attr) + '\]'
|
||||
|
||||
@staticmethod
|
||||
def escape(string):
|
||||
|
@ -5,5 +5,5 @@ from powerline.renderers.shell import ShellRenderer
|
||||
|
||||
class IpythonRenderer(ShellRenderer):
|
||||
'''Powerline ipython segment renderer.'''
|
||||
def hl(self, *args, **kwargs):
|
||||
return '\x01' + super(IpythonRenderer, self).hl(*args, **kwargs) + '\x02'
|
||||
def hlstyle(self, *args, **kwargs):
|
||||
return '\x01' + super(IpythonRenderer, self).hlstyle(*args, **kwargs) + '\x02'
|
||||
|
@ -6,11 +6,13 @@ from powerline.renderer import Renderer
|
||||
class PangoMarkupRenderer(Renderer):
|
||||
'''Powerline Pango markup segment renderer.'''
|
||||
|
||||
def hl(self, contents=None, fg=None, bg=None, attr=None):
|
||||
'''Highlight a segment.'''
|
||||
@staticmethod
|
||||
def hlstyle(*args, **kwargs):
|
||||
# We don't need to explicitly reset attributes, so skip those calls
|
||||
if not contents or (not attr and not bg and not fg):
|
||||
return ''
|
||||
return ''
|
||||
|
||||
def hl(self, contents, fg=None, bg=None, attr=None):
|
||||
'''Highlight a segment.'''
|
||||
awesome_attr = []
|
||||
if fg is not None:
|
||||
if fg is not False and fg[1] is not False:
|
||||
|
@ -5,7 +5,7 @@ from powerline.renderer import Renderer
|
||||
|
||||
class ShellRenderer(Renderer):
|
||||
'''Powerline shell segment renderer.'''
|
||||
def hl(self, contents=None, fg=None, bg=None, attr=None):
|
||||
def hlstyle(self, fg=None, bg=None, attr=None):
|
||||
'''Highlight a segment.
|
||||
|
||||
If an argument is None, the argument is ignored. If an argument is
|
||||
@ -35,7 +35,7 @@ class ShellRenderer(Renderer):
|
||||
else:
|
||||
if attr & Renderer.ATTR_BOLD:
|
||||
ansi += [1]
|
||||
return '[{0}m'.format(';'.join(str(attr) for attr in ansi)) + (contents or u'')
|
||||
return '[{0}m'.format(';'.join(str(attr) for attr in ansi))
|
||||
|
||||
@staticmethod
|
||||
def escape(string):
|
||||
|
@ -5,7 +5,7 @@ from powerline.renderer import Renderer
|
||||
|
||||
class TmuxRenderer(Renderer):
|
||||
'''Powerline tmux segment renderer.'''
|
||||
def hl(self, contents=None, fg=None, bg=None, attr=None):
|
||||
def hlstyle(self, fg=None, bg=None, attr=None):
|
||||
'''Highlight a segment.'''
|
||||
# We don't need to explicitly reset attributes, so skip those calls
|
||||
if not attr and not bg and not fg:
|
||||
@ -37,4 +37,4 @@ class TmuxRenderer(Renderer):
|
||||
tmux_attr += ['underscore']
|
||||
else:
|
||||
tmux_attr += ['nounderscore']
|
||||
return '#[' + ','.join(tmux_attr) + ']' + (contents or u'')
|
||||
return '#[' + ','.join(tmux_attr) + ']'
|
||||
|
@ -48,7 +48,7 @@ class VimRenderer(Renderer):
|
||||
def escape(string):
|
||||
return string.replace('%', '%%')
|
||||
|
||||
def hl(self, contents=None, fg=None, bg=None, attr=None):
|
||||
def hlstyle(self, fg=None, bg=None, attr=None):
|
||||
'''Highlight a segment.
|
||||
|
||||
If an argument is None, the argument is ignored. If an argument is
|
||||
@ -97,4 +97,4 @@ class VimRenderer(Renderer):
|
||||
guibg='#{0:06x}'.format(hl_group['guibg']) if hl_group['guibg'] != 'NONE' else 'NONE',
|
||||
attr=','.join(hl_group['attr']),
|
||||
))
|
||||
return '%#' + self.hl_groups[(fg, bg, attr)]['name'] + '#' + (contents or u'')
|
||||
return '%#' + self.hl_groups[(fg, bg, attr)]['name'] + '#'
|
||||
|
@ -5,13 +5,13 @@ from powerline.renderers.shell import ShellRenderer
|
||||
|
||||
class ZshPromptRenderer(ShellRenderer):
|
||||
'''Powerline zsh prompt segment renderer.'''
|
||||
def hl(self, contents=None, fg=None, bg=None, attr=None):
|
||||
def hlstyle(self, fg=None, bg=None, attr=None):
|
||||
'''Highlight a segment.
|
||||
|
||||
Returns the default ShellRenderer escape sequence with %{...%} wrapped
|
||||
around it (required in zsh prompts).
|
||||
'''
|
||||
return '%{' + super(ZshPromptRenderer, self).hl(None, fg, bg, attr) + '%}' + (contents or u'')
|
||||
return '%{' + super(ZshPromptRenderer, self).hlstyle(None, fg, bg, attr) + '%}'
|
||||
|
||||
@staticmethod
|
||||
def escape(string):
|
||||
|
Loading…
x
Reference in New Issue
Block a user