mirror of
https://github.com/powerline/powerline.git
synced 2025-07-24 06:15:41 +02:00
parent
48a076f658
commit
ecff281304
@ -4,12 +4,15 @@ from powerline.theme import Theme
|
|||||||
from unicodedata import east_asian_width, combining
|
from unicodedata import east_asian_width, combining
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
NBSP = unicode(' ', 'utf-8')
|
NBSP = unicode(' ', 'utf-8')
|
||||||
except NameError:
|
except NameError:
|
||||||
NBSP = ' '
|
NBSP = ' '
|
||||||
|
|
||||||
|
try:
|
||||||
|
from __builtin__ import unichr as chr
|
||||||
|
except ImportError:
|
||||||
|
pass
|
||||||
|
|
||||||
def construct_returned_value(rendered_highlighted, segments, output_raw):
|
def construct_returned_value(rendered_highlighted, segments, output_raw):
|
||||||
if output_raw:
|
if output_raw:
|
||||||
@ -65,6 +68,22 @@ class Renderer(object):
|
|||||||
python-2) regular string or ``None``.
|
python-2) regular string or ``None``.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
character_translations = {ord(' '): NBSP}
|
||||||
|
'''Character translations for use in escape() function.
|
||||||
|
|
||||||
|
See documentation of ``unicode.translate`` for details.
|
||||||
|
'''
|
||||||
|
|
||||||
|
np_character_translations = dict(((i, '^' + chr(i + 0x40)) for i in range(0x20)))
|
||||||
|
'''Non-printable character translations
|
||||||
|
|
||||||
|
These are used to transform characters in range 0x00—0x1F into ``^@``,
|
||||||
|
``^A`` and so on. Unilke with ``.escape()`` method (and
|
||||||
|
``character_translations``) result is passed to ``.strwidth()`` method.
|
||||||
|
|
||||||
|
Note: transforms tab into ``^I``.
|
||||||
|
'''
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
theme_config,
|
theme_config,
|
||||||
local_themes,
|
local_themes,
|
||||||
@ -262,8 +281,8 @@ class Renderer(object):
|
|||||||
contents_raw = (segment['_space_left'] * ' ') + contents_raw + (segment['_space_right'] * ' ') + outer_padding
|
contents_raw = (segment['_space_left'] * ' ') + contents_raw + (segment['_space_right'] * ' ') + outer_padding
|
||||||
|
|
||||||
# Replace spaces with no-break spaces
|
# Replace spaces with no-break spaces
|
||||||
contents_raw = contents_raw.replace(' ', NBSP)
|
|
||||||
divider_raw = divider_raw.replace(' ', NBSP)
|
divider_raw = divider_raw.replace(' ', NBSP)
|
||||||
|
contents_raw = contents_raw.translate(self.np_character_translations)
|
||||||
|
|
||||||
# Apply highlighting to padded dividers and contents
|
# Apply highlighting to padded dividers and contents
|
||||||
if render_highlighted:
|
if render_highlighted:
|
||||||
@ -295,11 +314,11 @@ class Renderer(object):
|
|||||||
segment['_len'] = self.strwidth(segment['_rendered_raw'])
|
segment['_len'] = self.strwidth(segment['_rendered_raw'])
|
||||||
yield segment
|
yield segment
|
||||||
|
|
||||||
@staticmethod
|
@classmethod
|
||||||
def escape(string):
|
def escape(cls, string):
|
||||||
'''Method that escapes segment contents.
|
'''Method that escapes segment contents.
|
||||||
'''
|
'''
|
||||||
return string
|
return string.translate(cls.character_translations)
|
||||||
|
|
||||||
def hlstyle(fg=None, bg=None, attr=None):
|
def hlstyle(fg=None, bg=None, attr=None):
|
||||||
'''Output highlight style string.
|
'''Output highlight style string.
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
# vim:fileencoding=utf-8:noet
|
# vim:fileencoding=utf-8:noet
|
||||||
|
|
||||||
|
from __future__ import absolute_import, unicode_literals
|
||||||
|
|
||||||
from powerline.renderers.shell import ShellRenderer
|
from powerline.renderers.shell import ShellRenderer
|
||||||
|
|
||||||
|
|
||||||
@ -8,9 +10,9 @@ class BashPromptRenderer(ShellRenderer):
|
|||||||
escape_hl_start = '\['
|
escape_hl_start = '\['
|
||||||
escape_hl_end = '\]'
|
escape_hl_end = '\]'
|
||||||
|
|
||||||
@staticmethod
|
character_translations = ShellRenderer.character_translations
|
||||||
def escape(string):
|
character_translations[ord('$')] = '\\$'
|
||||||
return string.replace('\\', '\\\\').replace('$', '\\$').replace('`', '\\`')
|
character_translations[ord('`')] = '\\`'
|
||||||
|
|
||||||
|
|
||||||
renderer = BashPromptRenderer
|
renderer = BashPromptRenderer
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
# vim:fileencoding=utf-8:noet
|
# vim:fileencoding=utf-8:noet
|
||||||
|
|
||||||
|
from __future__ import absolute_import, unicode_literals
|
||||||
|
|
||||||
from powerline.renderer import Renderer
|
from powerline.renderer import Renderer
|
||||||
from powerline.colorscheme import ATTR_BOLD, ATTR_ITALIC, ATTR_UNDERLINE
|
from powerline.colorscheme import ATTR_BOLD, ATTR_ITALIC, ATTR_UNDERLINE
|
||||||
|
|
||||||
@ -19,6 +21,9 @@ class ShellRenderer(Renderer):
|
|||||||
tmux_escape = False
|
tmux_escape = False
|
||||||
screen_escape = False
|
screen_escape = False
|
||||||
|
|
||||||
|
character_translations = Renderer.character_translations
|
||||||
|
character_translations[ord('\\')] = '\\\\'
|
||||||
|
|
||||||
def hlstyle(self, fg=None, bg=None, attr=None):
|
def hlstyle(self, fg=None, bg=None, attr=None):
|
||||||
'''Highlight a segment.
|
'''Highlight a segment.
|
||||||
|
|
||||||
@ -62,9 +67,5 @@ class ShellRenderer(Renderer):
|
|||||||
r = '\033P' + r.replace('\033', '\033\033') + '\033\\'
|
r = '\033P' + r.replace('\033', '\033\033') + '\033\\'
|
||||||
return self.escape_hl_start + r + self.escape_hl_end
|
return self.escape_hl_start + r + self.escape_hl_end
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def escape(string):
|
|
||||||
return string.replace('\\', '\\\\')
|
|
||||||
|
|
||||||
|
|
||||||
renderer = ShellRenderer
|
renderer = ShellRenderer
|
||||||
|
@ -1,11 +1,17 @@
|
|||||||
# vim:fileencoding=utf-8:noet
|
# vim:fileencoding=utf-8:noet
|
||||||
|
|
||||||
|
from __future__ import absolute_import, unicode_literals
|
||||||
|
|
||||||
from powerline.renderer import Renderer
|
from powerline.renderer import Renderer
|
||||||
from powerline.colorscheme import ATTR_BOLD, ATTR_ITALIC, ATTR_UNDERLINE
|
from powerline.colorscheme import ATTR_BOLD, ATTR_ITALIC, ATTR_UNDERLINE
|
||||||
|
|
||||||
|
|
||||||
class TmuxRenderer(Renderer):
|
class TmuxRenderer(Renderer):
|
||||||
'''Powerline tmux segment renderer.'''
|
'''Powerline tmux segment renderer.'''
|
||||||
|
|
||||||
|
character_translations = Renderer.character_translations
|
||||||
|
character_translations[ord('#')] = '##[]'
|
||||||
|
|
||||||
def hlstyle(self, fg=None, bg=None, attr=None):
|
def hlstyle(self, fg=None, bg=None, attr=None):
|
||||||
'''Highlight a segment.'''
|
'''Highlight a segment.'''
|
||||||
# We don't need to explicitly reset attributes, so skip those calls
|
# We don't need to explicitly reset attributes, so skip those calls
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# vim:fileencoding=utf-8:noet
|
# vim:fileencoding=utf-8:noet
|
||||||
|
|
||||||
from __future__ import absolute_import
|
from __future__ import absolute_import, unicode_literals
|
||||||
|
|
||||||
from powerline.bindings.vim import vim_get_func, environ
|
from powerline.bindings.vim import vim_get_func, environ
|
||||||
from powerline.renderer import Renderer
|
from powerline.renderer import Renderer
|
||||||
@ -11,6 +11,12 @@ import vim
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
from __builtin__ import unichr as chr
|
||||||
|
except ImportError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
vim_mode = vim_get_func('mode', rettype=str)
|
vim_mode = vim_get_func('mode', rettype=str)
|
||||||
mode_translations = {
|
mode_translations = {
|
||||||
chr(ord('V') - 0x40): '^V',
|
chr(ord('V') - 0x40): '^V',
|
||||||
@ -21,6 +27,9 @@ mode_translations = {
|
|||||||
class VimRenderer(Renderer):
|
class VimRenderer(Renderer):
|
||||||
'''Powerline vim segment renderer.'''
|
'''Powerline vim segment renderer.'''
|
||||||
|
|
||||||
|
character_translations = Renderer.character_translations
|
||||||
|
character_translations[ord('%')] = '%%'
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
if not hasattr(vim, 'strwidth'):
|
if not hasattr(vim, 'strwidth'):
|
||||||
# Hope nobody want to change this at runtime
|
# Hope nobody want to change this at runtime
|
||||||
@ -97,10 +106,6 @@ class VimRenderer(Renderer):
|
|||||||
def reset_highlight(self):
|
def reset_highlight(self):
|
||||||
self.hl_groups.clear()
|
self.hl_groups.clear()
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def escape(string):
|
|
||||||
return string.replace('%', '%%')
|
|
||||||
|
|
||||||
def hlstyle(self, fg=None, bg=None, attr=None):
|
def hlstyle(self, fg=None, bg=None, attr=None):
|
||||||
'''Highlight a segment.
|
'''Highlight a segment.
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
# vim:fileencoding=utf-8:noet
|
# vim:fileencoding=utf-8:noet
|
||||||
|
|
||||||
|
from __future__ import absolute_import, unicode_literals
|
||||||
|
|
||||||
from powerline.renderers.shell import ShellRenderer
|
from powerline.renderers.shell import ShellRenderer
|
||||||
|
|
||||||
|
|
||||||
@ -8,9 +10,8 @@ class ZshPromptRenderer(ShellRenderer):
|
|||||||
escape_hl_start = '%{'
|
escape_hl_start = '%{'
|
||||||
escape_hl_end = '%}'
|
escape_hl_end = '%}'
|
||||||
|
|
||||||
@staticmethod
|
character_translations = ShellRenderer.character_translations
|
||||||
def escape(string):
|
character_translations[ord('%')] = '%%'
|
||||||
return string.replace('%', '%%').replace('\\', '\\\\')
|
|
||||||
|
|
||||||
|
|
||||||
renderer = ZshPromptRenderer
|
renderer = ZshPromptRenderer
|
||||||
|
Loading…
x
Reference in New Issue
Block a user