summaryrefslogtreecommitdiffstats
path: root/powerline/renderers/pango_markup.py
diff options
context:
space:
mode:
Diffstat (limited to 'powerline/renderers/pango_markup.py')
-rw-r--r--powerline/renderers/pango_markup.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/powerline/renderers/pango_markup.py b/powerline/renderers/pango_markup.py
new file mode 100644
index 0000000..3c1a675
--- /dev/null
+++ b/powerline/renderers/pango_markup.py
@@ -0,0 +1,39 @@
+# vim:fileencoding=utf-8:noet
+from __future__ import (unicode_literals, division, absolute_import, print_function)
+
+from xml.sax.saxutils import escape as _escape
+
+from powerline.renderer import Renderer
+from powerline.colorscheme import ATTR_BOLD, ATTR_ITALIC, ATTR_UNDERLINE
+
+
+class PangoMarkupRenderer(Renderer):
+ '''Powerline Pango markup segment renderer.'''
+
+ @staticmethod
+ def hlstyle(*args, **kwargs):
+ # We don’t need to explicitly reset attributes, so skip those calls
+ return ''
+
+ def hl(self, contents, fg=None, bg=None, attrs=None, **kwargs):
+ '''Highlight a segment.'''
+ awesome_attr = []
+ if fg is not None:
+ if fg is not False and fg[1] is not False:
+ awesome_attr += ['foreground="#{0:06x}"'.format(fg[1])]
+ if bg is not None:
+ if bg is not False and bg[1] is not False:
+ awesome_attr += ['background="#{0:06x}"'.format(bg[1])]
+ if attrs is not None and attrs is not False:
+ if attrs & ATTR_BOLD:
+ awesome_attr += ['font_weight="bold"']
+ if attrs & ATTR_ITALIC:
+ awesome_attr += ['font_style="italic"']
+ if attrs & ATTR_UNDERLINE:
+ awesome_attr += ['underline="single"']
+ return '<span ' + ' '.join(awesome_attr) + '>' + contents + '</span>'
+
+ escape = staticmethod(_escape)
+
+
+renderer = PangoMarkupRenderer