Add support for zsh/zpython

Closes #163.
This commit is contained in:
ZyX 2013-01-28 22:53:06 +04:00 committed by Kim Silkebækken
parent b99e9cb074
commit 6f69322024
2 changed files with 52 additions and 7 deletions

View File

@ -0,0 +1,43 @@
import zsh
from powerline.core import Powerline
class Args(object):
@property
def last_exit_code(self):
return zsh.last_exit_code()
@property
def last_pipe_status(self):
return zsh.pipestatus()
class Prompt(object):
__slots__ = ('render', 'side', 'savedpsvar', 'savedps')
def __init__(self, powerline, side, savedpsvar=None, savedps=None):
self.render = powerline.renderer.render
self.side = side
self.savedpsvar = savedpsvar
self.savedps = savedps
def __str__(self):
return self.render(width=zsh.columns(), side=self.side).encode('utf-8')
def __del__(self):
if self.savedps:
zsh.setvalue(self.savedpsvar, self.savedps)
def set_prompt(powerline, psvar, side):
savedps = zsh.getvalue(psvar)
zpyvar = 'ZPYTHON_POWERLINE_' + psvar
prompt = Prompt(powerline, side, psvar, savedps)
zsh.set_special_string(zpyvar, prompt)
zsh.setvalue(psvar, '${' + zpyvar + '}')
def setup():
powerline = Powerline(ext='shell', renderer_module='zsh_prompt', segment_info=Args())
set_prompt(powerline, 'PS1', 'left')
set_prompt(powerline, 'RPS1', 'right')

View File

@ -1,7 +1,3 @@
_powerline_precmd() {
_powerline_tmux_set_pwd
}
_powerline_tmux_setenv() {
if [[ -n "$TMUX" ]]; then
tmux setenv TMUX_"$1"_$(tmux display -p "#D" | tr -d %) "$2"
@ -22,11 +18,17 @@ _powerline_install_precmd() {
return
fi
done
precmd_functions+=(_powerline_precmd)
precmd_functions+=(_powerline_tmux_set_pwd)
setopt promptpercent
setopt promptsubst
PS1='$(powerline shell left -r zsh_prompt --last_exit_code=$? --last_pipe_status="$pipestatus")'
RPS1='$(powerline shell right -r zsh_prompt --last_exit_code=$? --last_pipe_status="$pipestatus")'
if zmodload zsh/zpython &>/dev/null ; then
zpython 'from powerline.bindings.zsh import setup as powerline_setup'
zpython 'powerline_setup()'
zpython 'del powerline_setup'
else
PS1='$(powerline shell left -r zsh_prompt --last_exit_code=$? --last_pipe_status="$pipestatus")'
RPS1='$(powerline shell right -r zsh_prompt --last_exit_code=$? --last_pipe_status="$pipestatus")'
fi
}
trap "_powerline_tmux_set_columns" SIGWINCH