From 50e4c1d1e87ed64b8b87db88ec15ccb21367eca7 Mon Sep 17 00:00:00 2001 From: ZyX Date: Sun, 10 Aug 2014 18:15:14 +0400 Subject: [PATCH] Move ZshPromptRenderer.render method to ShellRenderer --- powerline/renderers/shell.py | 30 ++++++++++++++++++++++++++++++ powerline/renderers/zsh_prompt.py | 28 ---------------------------- 2 files changed, 30 insertions(+), 28 deletions(-) diff --git a/powerline/renderers/shell.py b/powerline/renderers/shell.py index 5358871c..dd9906a8 100644 --- a/powerline/renderers/shell.py +++ b/powerline/renderers/shell.py @@ -23,6 +23,36 @@ class ShellRenderer(Renderer): 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): '''Highlight a segment. diff --git a/powerline/renderers/zsh_prompt.py b/powerline/renderers/zsh_prompt.py index 683d2364..b0bcede6 100644 --- a/powerline/renderers/zsh_prompt.py +++ b/powerline/renderers/zsh_prompt.py @@ -14,34 +14,6 @@ class ZshPromptRenderer(ShellRenderer): character_translations = ShellRenderer.character_translations.copy() 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): if not matcher_info: return self.theme