Add output_raw argument to Renderer.render() method
Update all ipython modules to use it to get unhighlighted prompt Conflicts: powerline/renderers/ipython.py
This commit is contained in:
parent
0b251425da
commit
a42f9b6e2f
|
@ -10,10 +10,13 @@ class PowerlinePromptManager(PromptManager):
|
|||
self.powerline = powerline
|
||||
super(PowerlinePromptManager, self).__init__(**kwargs)
|
||||
|
||||
def _render(self, name, color=True, *args, **kwargs):
|
||||
def render(self, name, color=True, *args, **kwargs):
|
||||
if name != 'in':
|
||||
return super(PowerlinePromptManager, self)._render(name, color, *args, **kwargs)
|
||||
return self.powerline.renderer.render(color=color)
|
||||
return super(PowerlinePromptManager, self).render(name, color, *args, **kwargs)
|
||||
res, res_nocolor = self.powerline.renderer.render(output_raw=True)
|
||||
self.txtwidth = len(res_nocolor)
|
||||
self.width = self.txtwidth
|
||||
return res if color else res_nocolor
|
||||
|
||||
|
||||
def load_ipython_extension(ip):
|
||||
|
|
|
@ -9,8 +9,7 @@ class PowerlinePrompt(BasePrompt):
|
|||
super(PowerlinePrompt, self).__init__(*args, **kwargs)
|
||||
|
||||
def set_p_str(self):
|
||||
self.p_str = self.powerline.renderer.render()
|
||||
self.p_str_nocolor = self.powerline.renderer.render(color=False)
|
||||
self.p_str, self.p_str_nocolor = self.powerline.renderer.render(output_raw=True)
|
||||
|
||||
|
||||
def setup(prompt='1'):
|
||||
|
|
|
@ -32,7 +32,14 @@ class Renderer(object):
|
|||
else:
|
||||
return self.theme
|
||||
|
||||
def render(self, mode=None, width=None, theme=None, segments=None, side=None):
|
||||
@staticmethod
|
||||
def _returned_value(rendered_highlighted, segments, output_raw):
|
||||
if output_raw:
|
||||
return rendered_highlighted, ''.join((segment['rendered_raw'] for segment in segments))
|
||||
else:
|
||||
return rendered_highlighted
|
||||
|
||||
def render(self, mode=None, width=None, theme=None, segments=None, side=None, output_raw=False):
|
||||
'''Render all segments.
|
||||
|
||||
When a width is provided, low-priority segments are dropped one at
|
||||
|
@ -50,7 +57,7 @@ class Renderer(object):
|
|||
rendered_highlighted = self._render_segments(mode, theme, segments)
|
||||
if not width:
|
||||
# No width specified, so we don't need to crop or pad anything
|
||||
return rendered_highlighted
|
||||
return self._returned_value(rendered_highlighted, 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]
|
||||
|
@ -70,7 +77,8 @@ class Renderer(object):
|
|||
segment['contents'] = segments_fillers_contents
|
||||
# Add remainder whitespace to the first filler segment
|
||||
segments_fillers[0]['contents'] += ' ' * segments_fillers_remainder
|
||||
return self._render_segments(mode, theme, segments)
|
||||
|
||||
return self._returned_value(self._render_segments(mode, theme, segments), segments, output_raw)
|
||||
|
||||
def _render_segments(self, mode, theme, segments, render_highlighted=True):
|
||||
'''Internal segment rendering method.
|
||||
|
@ -133,7 +141,8 @@ class Renderer(object):
|
|||
rendered_highlighted += self.hl()
|
||||
return rendered_highlighted
|
||||
|
||||
def _total_len(self, segments):
|
||||
@staticmethod
|
||||
def _total_len(segments):
|
||||
'''Return total/rendered length of all segments.
|
||||
|
||||
This method uses the rendered_raw property of the segments and requires
|
||||
|
|
|
@ -5,12 +5,5 @@ from powerline.renderers.shell import ShellRenderer
|
|||
|
||||
class IpythonRenderer(ShellRenderer):
|
||||
'''Powerline ipython segment renderer.'''
|
||||
def render(self, color=True, *args, **kwargs):
|
||||
self.color = color
|
||||
return super(IpythonRenderer, self).render(*args, **kwargs)
|
||||
|
||||
def hl(self, *args, **kwargs):
|
||||
if not self.color:
|
||||
return ''
|
||||
else:
|
||||
return '\x01' + super(IpythonRenderer, self).hl(*args, **kwargs) + '\x02'
|
||||
return '\x01' + super(IpythonRenderer, self).hl(*args, **kwargs) + '\x02'
|
||||
|
|
Loading…
Reference in New Issue