parent
01ef26354f
commit
aff028e4e9
|
@ -104,10 +104,12 @@ class Prompt(object):
|
|||
self.args = powerline.args
|
||||
|
||||
def __str__(self):
|
||||
segment_info = {'args': self.args, 'environ': environ},
|
||||
r = self.powerline.render(
|
||||
width=zsh.columns(),
|
||||
side=self.side,
|
||||
segment_info={'args': self.args, 'environ': environ}
|
||||
segment_info=segment_info,
|
||||
matcher_info=segment_info,
|
||||
)
|
||||
if type(r) is not str:
|
||||
if type(r) is bytes:
|
||||
|
|
|
@ -113,9 +113,13 @@ _powerline_setup_prompt() {
|
|||
zpython 'del _powerline_setup'
|
||||
else
|
||||
local add_args='--last_exit_code=$? --last_pipe_status="$pipestatus"'
|
||||
add_args+=' --renderer_arg="client_id=$$"'
|
||||
add_args+=' --jobnum=$_POWERLINE_JOBNUM'
|
||||
PS1='$($POWERLINE_COMMAND shell left -r zsh_prompt '$add_args')'
|
||||
RPS1='$($POWERLINE_COMMAND shell right -r zsh_prompt '$add_args')'
|
||||
PS2='$($POWERLINE_COMMAND shell left -r zsh_prompt -R local_theme=continuation '$add_args')'
|
||||
RPS2='$($POWERLINE_COMMAND shell right -r zsh_prompt -R local_theme=continuation '$add_args')'
|
||||
PS3='$($POWERLINE_COMMAND shell left -r zsh_prompt -R local_theme=select '$add_args')'
|
||||
fi
|
||||
}
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
"branch": { "fg": "gray9", "bg": "gray2" },
|
||||
"branch_dirty": { "fg": "brightyellow", "bg": "gray2" },
|
||||
"branch_clean": { "fg": "gray9", "bg": "gray2" },
|
||||
"prompt": { "fg": "gray9", "bg": "gray4" },
|
||||
"cwd": { "fg": "gray9", "bg": "gray4" },
|
||||
"cwd:current_folder": { "fg": "gray10", "bg": "gray4", "attr": ["bold"] },
|
||||
"cwd:divider": { "fg": "gray7", "bg": "gray4" },
|
||||
|
|
|
@ -25,7 +25,11 @@
|
|||
},
|
||||
"shell": {
|
||||
"colorscheme": "default",
|
||||
"theme": "default"
|
||||
"theme": "default",
|
||||
"local_themes": {
|
||||
"continuation": "continuation",
|
||||
"select": "select"
|
||||
}
|
||||
},
|
||||
"tmux": {
|
||||
"colorscheme": "default",
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"segments": {
|
||||
"left": [
|
||||
{
|
||||
"type": "string",
|
||||
"contents": "",
|
||||
"width": "auto",
|
||||
"align": "r",
|
||||
"highlight_group": ["prompt"]
|
||||
}
|
||||
],
|
||||
"right": [
|
||||
]
|
||||
}
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"segments": {
|
||||
"left": [
|
||||
{
|
||||
"type": "string",
|
||||
"contents": "Select",
|
||||
"width": "auto",
|
||||
"align": "r",
|
||||
"highlight_group": ["prompt"]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
|
@ -22,7 +22,11 @@ class IpythonRenderer(ShellRenderer):
|
|||
try:
|
||||
return match['theme']
|
||||
except KeyError:
|
||||
match['theme'] = Theme(theme_config=match['config'], top_theme_config=self.theme_config, **self.theme_kwargs)
|
||||
match['theme'] = Theme(
|
||||
theme_config=match['config'],
|
||||
top_theme_config=self.theme_config,
|
||||
**self.theme_kwargs
|
||||
)
|
||||
return match['theme']
|
||||
|
||||
def shutdown(self):
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
from __future__ import absolute_import, unicode_literals
|
||||
|
||||
from powerline.renderers.shell import ShellRenderer
|
||||
from powerline.theme import Theme
|
||||
|
||||
|
||||
class ZshPromptRenderer(ShellRenderer):
|
||||
|
@ -13,5 +14,47 @@ 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
|
||||
match = self.local_themes[matcher_info]
|
||||
try:
|
||||
return match['theme']
|
||||
except KeyError:
|
||||
match['theme'] = Theme(
|
||||
theme_config=match['config'],
|
||||
top_theme_config=self.theme_config,
|
||||
**self.theme_kwargs
|
||||
)
|
||||
return match['theme']
|
||||
|
||||
|
||||
renderer = ZshPromptRenderer
|
||||
|
|
|
@ -38,6 +38,13 @@ class ShellPowerline(Powerline):
|
|||
else:
|
||||
return super(ShellPowerline, self).get_config_paths()
|
||||
|
||||
def get_local_themes(self, local_themes):
|
||||
if not local_themes:
|
||||
return {}
|
||||
|
||||
return dict(((key, {'config': self.load_theme_config(val)})
|
||||
for key, val in local_themes.items()))
|
||||
|
||||
|
||||
def get_argparser(parser=None, *args, **kwargs):
|
||||
if not parser:
|
||||
|
|
Loading…
Reference in New Issue