mirror of
https://github.com/powerline/powerline.git
synced 2025-07-29 16:55:07 +02:00
Make zsh/zpython also call .shutdown correctly
This commit is contained in:
parent
3809b8b3b5
commit
3aab9ef96c
@ -1,9 +1,18 @@
|
|||||||
# vim:fileencoding=utf-8:noet
|
# vim:fileencoding=utf-8:noet
|
||||||
import zsh
|
import zsh
|
||||||
|
import atexit
|
||||||
from powerline.shell import ShellPowerline
|
from powerline.shell import ShellPowerline
|
||||||
from powerline.lib import parsedotval
|
from powerline.lib import parsedotval
|
||||||
|
|
||||||
|
|
||||||
|
used_powerlines = []
|
||||||
|
|
||||||
|
|
||||||
|
def shutdown():
|
||||||
|
for powerline in used_powerlines:
|
||||||
|
powerline.renderer.shutdown()
|
||||||
|
|
||||||
|
|
||||||
def get_var_config(var):
|
def get_var_config(var):
|
||||||
try:
|
try:
|
||||||
return [parsedotval(i) for i in zsh.getvalue(var).items()]
|
return [parsedotval(i) for i in zsh.getvalue(var).items()]
|
||||||
@ -69,17 +78,17 @@ class Environment(object):
|
|||||||
|
|
||||||
|
|
||||||
class Prompt(object):
|
class Prompt(object):
|
||||||
__slots__ = ('render', 'side', 'savedpsvar', 'savedps', 'args')
|
__slots__ = ('powerline', 'side', 'savedpsvar', 'savedps', 'args')
|
||||||
|
|
||||||
def __init__(self, powerline, side, savedpsvar=None, savedps=None):
|
def __init__(self, powerline, side, savedpsvar=None, savedps=None):
|
||||||
self.render = powerline.renderer.render
|
self.powerline = powerline
|
||||||
self.side = side
|
self.side = side
|
||||||
self.savedpsvar = savedpsvar
|
self.savedpsvar = savedpsvar
|
||||||
self.savedps = savedps
|
self.savedps = savedps
|
||||||
self.args = powerline.args
|
self.args = powerline.args
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
r = self.render(width=zsh.columns(), side=self.side, segment_info=self.args)
|
r = self.powerline.renderer.render(width=zsh.columns(), side=self.side, segment_info=self.args)
|
||||||
if type(r) is not str:
|
if type(r) is not str:
|
||||||
if type(r) is bytes:
|
if type(r) is bytes:
|
||||||
return r.decode('utf-8')
|
return r.decode('utf-8')
|
||||||
@ -90,6 +99,9 @@ class Prompt(object):
|
|||||||
def __del__(self):
|
def __del__(self):
|
||||||
if self.savedps:
|
if self.savedps:
|
||||||
zsh.setvalue(self.savedpsvar, self.savedps)
|
zsh.setvalue(self.savedpsvar, self.savedps)
|
||||||
|
used_powerlines.remove(self.powerline)
|
||||||
|
if self.powerline not in used_powerlines:
|
||||||
|
self.powerline.renderer.shutdown()
|
||||||
|
|
||||||
|
|
||||||
def set_prompt(powerline, psvar, side):
|
def set_prompt(powerline, psvar, side):
|
||||||
@ -103,5 +115,8 @@ def set_prompt(powerline, psvar, side):
|
|||||||
def setup():
|
def setup():
|
||||||
environ = Environment()
|
environ = Environment()
|
||||||
powerline = ShellPowerline(Args(), environ=environ, getcwd=lambda: environ['PWD'])
|
powerline = ShellPowerline(Args(), environ=environ, getcwd=lambda: environ['PWD'])
|
||||||
|
used_powerlines.append(powerline)
|
||||||
|
used_powerlines.append(powerline)
|
||||||
set_prompt(powerline, 'PS1', 'left')
|
set_prompt(powerline, 'PS1', 'left')
|
||||||
set_prompt(powerline, 'RPS1', 'right')
|
set_prompt(powerline, 'RPS1', 'right')
|
||||||
|
atexit.register(shutdown)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user