mirror of
https://github.com/powerline/powerline.git
synced 2025-07-27 07:44:36 +02:00
Move ZshPromptRenderer.render method to ShellRenderer
This commit is contained in:
parent
3c243e1aa8
commit
50e4c1d1e8
@ -23,6 +23,36 @@ class ShellRenderer(Renderer):
|
|||||||
|
|
||||||
character_translations = Renderer.character_translations.copy()
|
character_translations = Renderer.character_translations.copy()
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super(ShellRenderer, self).__init__(*args, **kwargs)
|
||||||
|
self.old_widths = {}
|
||||||
|
|
||||||
|
def render(self, segment_info, *args, **kwargs):
|
||||||
|
client_id = segment_info.get('client_id')
|
||||||
|
key = (client_id, kwargs.get('side'))
|
||||||
|
kwargs = kwargs.copy()
|
||||||
|
width = kwargs.pop('width', None)
|
||||||
|
local_theme = segment_info.get('local_theme')
|
||||||
|
if client_id and local_theme:
|
||||||
|
output_raw = False
|
||||||
|
try:
|
||||||
|
width = self.old_widths[key]
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
output_raw = True
|
||||||
|
ret = super(ShellRenderer, self).render(
|
||||||
|
output_raw=output_raw,
|
||||||
|
width=width,
|
||||||
|
matcher_info=local_theme,
|
||||||
|
segment_info=segment_info,
|
||||||
|
*args, **kwargs
|
||||||
|
)
|
||||||
|
if output_raw:
|
||||||
|
self.old_widths[key] = len(ret[1])
|
||||||
|
ret = ret[0]
|
||||||
|
return ret
|
||||||
|
|
||||||
def hlstyle(self, fg=None, bg=None, attr=None):
|
def hlstyle(self, fg=None, bg=None, attr=None):
|
||||||
'''Highlight a segment.
|
'''Highlight a segment.
|
||||||
|
|
||||||
|
@ -14,34 +14,6 @@ class ZshPromptRenderer(ShellRenderer):
|
|||||||
character_translations = ShellRenderer.character_translations.copy()
|
character_translations = ShellRenderer.character_translations.copy()
|
||||||
character_translations[ord('%')] = '%%'
|
character_translations[ord('%')] = '%%'
|
||||||
|
|
||||||
old_widths = {}
|
|
||||||
|
|
||||||
def render(self, segment_info, *args, **kwargs):
|
|
||||||
client_id = segment_info.get('client_id')
|
|
||||||
key = (client_id, kwargs.get('side'))
|
|
||||||
kwargs = kwargs.copy()
|
|
||||||
width = kwargs.pop('width', None)
|
|
||||||
local_theme = segment_info.get('local_theme')
|
|
||||||
if client_id and local_theme:
|
|
||||||
output_raw = False
|
|
||||||
try:
|
|
||||||
width = self.old_widths[key]
|
|
||||||
except KeyError:
|
|
||||||
pass
|
|
||||||
else:
|
|
||||||
output_raw = True
|
|
||||||
ret = super(ShellRenderer, self).render(
|
|
||||||
output_raw=output_raw,
|
|
||||||
width=width,
|
|
||||||
matcher_info=local_theme,
|
|
||||||
segment_info=segment_info,
|
|
||||||
*args, **kwargs
|
|
||||||
)
|
|
||||||
if output_raw:
|
|
||||||
self.old_widths[key] = len(ret[1])
|
|
||||||
ret = ret[0]
|
|
||||||
return ret
|
|
||||||
|
|
||||||
def get_theme(self, matcher_info):
|
def get_theme(self, matcher_info):
|
||||||
if not matcher_info:
|
if not matcher_info:
|
||||||
return self.theme
|
return self.theme
|
||||||
|
Loading…
x
Reference in New Issue
Block a user