parent
b99e9cb074
commit
6f69322024
|
@ -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')
|
|
@ -1,7 +1,3 @@
|
||||||
_powerline_precmd() {
|
|
||||||
_powerline_tmux_set_pwd
|
|
||||||
}
|
|
||||||
|
|
||||||
_powerline_tmux_setenv() {
|
_powerline_tmux_setenv() {
|
||||||
if [[ -n "$TMUX" ]]; then
|
if [[ -n "$TMUX" ]]; then
|
||||||
tmux setenv TMUX_"$1"_$(tmux display -p "#D" | tr -d %) "$2"
|
tmux setenv TMUX_"$1"_$(tmux display -p "#D" | tr -d %) "$2"
|
||||||
|
@ -22,11 +18,17 @@ _powerline_install_precmd() {
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
precmd_functions+=(_powerline_precmd)
|
precmd_functions+=(_powerline_tmux_set_pwd)
|
||||||
setopt promptpercent
|
setopt promptpercent
|
||||||
setopt promptsubst
|
setopt promptsubst
|
||||||
PS1='$(powerline shell left -r zsh_prompt --last_exit_code=$? --last_pipe_status="$pipestatus")'
|
if zmodload zsh/zpython &>/dev/null ; then
|
||||||
RPS1='$(powerline shell right -r zsh_prompt --last_exit_code=$? --last_pipe_status="$pipestatus")'
|
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
|
trap "_powerline_tmux_set_columns" SIGWINCH
|
||||||
|
|
Loading…
Reference in New Issue