diff --git a/powerline/ext/terminal/renderer.py b/powerline/ext/terminal/renderer.py index f946d400..3c975de3 100644 --- a/powerline/ext/terminal/renderer.py +++ b/powerline/ext/terminal/renderer.py @@ -1,10 +1,23 @@ # -*- coding: utf-8 -*- +import os + from powerline.renderer import Renderer class TerminalRenderer(Renderer): '''Powerline terminal segment renderer.''' + _color_templates = { + 'default': '[{code}m', + 'bash': '\[[{code}m\]', + 'zsh': '%{{[{code}m%}}', + } + + def __init__(self, *args, **kwargs): + super(TerminalRenderer, self).__init__(*args, **kwargs) + shell = os.path.basename(os.environ.get('SHELL', 'default')) + self.color_template = self._color_templates[shell] + def hl(self, fg=None, bg=None, attr=None): '''Highlight a segment. @@ -29,4 +42,4 @@ class TerminalRenderer(Renderer): else: if attr & Renderer.ATTR_BOLD: ansi += [1] - return '[{0}m'.format(';'.join(str(attr) for attr in ansi)) + return self.color_template.format(code=';'.join(str(attr) for attr in ansi))