summaryrefslogtreecommitdiffstats
path: root/powerline/ipython.py
diff options
context:
space:
mode:
Diffstat (limited to 'powerline/ipython.py')
-rw-r--r--powerline/ipython.py68
1 files changed, 68 insertions, 0 deletions
diff --git a/powerline/ipython.py b/powerline/ipython.py
new file mode 100644
index 0000000..cb84fc7
--- /dev/null
+++ b/powerline/ipython.py
@@ -0,0 +1,68 @@
+# vim:fileencoding=utf-8:noet
+from __future__ import (unicode_literals, division, absolute_import, print_function)
+
+from powerline import Powerline
+from powerline.lib.dict import mergedicts
+from powerline.lib.unicode import string
+
+
+class IPythonInfo(object):
+ def __init__(self, shell):
+ self._shell = shell
+
+ @property
+ def prompt_count(self):
+ return self._shell.execution_count
+
+
+# HACK: ipython tries to only leave us with plain ASCII
+class RewriteResult(object):
+ def __init__(self, prompt):
+ self.prompt = string(prompt)
+
+ def __str__(self):
+ return self.prompt
+
+ def __add__(self, s):
+ if type(s) is not str:
+ try:
+ s = s.encode('utf-8')
+ except AttributeError:
+ raise NotImplementedError
+ return RewriteResult(self.prompt + s)
+
+
+class IPythonPowerline(Powerline):
+ def init(self, **kwargs):
+ super(IPythonPowerline, self).init(
+ 'ipython',
+ use_daemon_threads=True,
+ **kwargs
+ )
+
+ def get_config_paths(self):
+ if self.config_paths:
+ return self.config_paths
+ else:
+ return super(IPythonPowerline, self).get_config_paths()
+
+ def get_local_themes(self, local_themes):
+ return dict(((type, {'config': self.load_theme_config(name)}) for type, name in local_themes.items()))
+
+ def load_main_config(self):
+ r = super(IPythonPowerline, self).load_main_config()
+ if self.config_overrides:
+ mergedicts(r, self.config_overrides)
+ return r
+
+ def load_theme_config(self, name):
+ r = super(IPythonPowerline, self).load_theme_config(name)
+ if name in self.theme_overrides:
+ mergedicts(r, self.theme_overrides[name])
+ return r
+
+ def do_setup(self, wrefs):
+ for wref in wrefs:
+ obj = wref()
+ if obj is not None:
+ setattr(obj, 'powerline', self)